SSH without input password

在 ssh 的時候,屢次輸入帳號密碼實屬浪費生命之事,如果可以把這件事情簡化的話一定很棒吧!

在這篇文章會提到

  1. 生成公私鑰的方法
  2. 把公鑰放到另一台主機上
  3. 設定 ssh_config 節省登入時間

生成公私鑰

我們可以使用 -t 來指定使用的演算法,在這裡使用的是 RSA。而可以使用 -b 來指定生成的密鑰長度,建議使用 20484096

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ ssh-keygen -t rsa -b 2048
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): /root/.ssh/id_rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
80:77:9d:ea:e6:4c:72:07:f6:92:6f:43:75:33:87:83 [email protected]
The key's randomart image is:
+--[ RSA 2048]----+
| |
| . . . |
| . o . o . . |
| . o . E * .|
| S . . = |
| o +. |
| . B.o |
| B +o |
| o... |
+-----------------+

至於在 ~/.ssh/id_rsa 處可以改成任意名稱,在 ~/.ssh 之下會產生兩個檔案:id_rsa, id_rsa.pub

這邊的 id_rsa.pub 是公鑰,id_rsa 則是私鑰,公私鑰為很重要的 identity,小心保管不要讓其他人能夠取得。

把公鑰放到另一台主機上

1
2
$ scp ~/.ssh/id_rsa.pub [email protected]_ip:/tmp/.
$ cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys

設定本機的 ssh_config

如果沒有設定的話,也可以使用以下指令登入

1
ssh -i ~/.ssh/id_rsa [email protected]_ip

不過設定過後將會更簡單更方便:
開啟 ~/.ssh/config/etc/ssh/ssh_config(使用 ~/.ssh/config 在系統更新後才不會消失),設定說明如下

1
2
3
4
5
6
Host myhost                              # 幫他取個名字
Hostname remote_ip # 機器的 IP
PreferredAuthentications publickey # 偏好用 publickey 驗證
IdentityFile ~/.ssh/id_rsa # privatekey 的路徑
Port 22 # port number
User root # 使用者名稱

這樣子就可以用 ssh myhost 來登入了,不過如果先前有設定 passphrase 的話,在登入的時候會需要當初設定的 passphrase