SSH的密鑰管理
SSH的密鑰管理主要包括兩個方面:生成公鑰/私鑰對以及公鑰的分發(fā),下面將對這兩個密鑰管理工作分別進行介紹。
(1)生成用戶自己的密鑰對
生成并分發(fā)用戶自己的密鑰有兩個好處:
可以防止“中間人”這種攻擊方式。
可以只用一個口令就登錄到所有用戶想登錄的服務器上。
用下面的命令可以生成密鑰:
#ssh-keygen
如果遠程主機使用的是SSH 2.x就要用這個命令:
#ssh-keygen –d
在同一臺主機上同時有SSH1和SSH2的密鑰是沒有問題的,因為密鑰是保存為不同的文件的。ssh-keygen命令運行之后會顯示下面的信息:
Generating RSA keys:
Key generation complete.
Enter file in which to save the key (/home/[user]/.ssh/identity):
//此時按下回車鍵就行了
Created directory '/home/[user]/.ssh'.
Enter passphrase (empty for no passphrase): //輸入的口令不會顯示在屏幕上
//重新輸入一遍口令,如果忘記了口令就只能重新生成一次密鑰了
Enter same passphrase again:
//保存用戶的私人密鑰和公用密鑰
Your identification has been saved in /home/[user]/.ssh/identity.
Your public key has been saved in /home/[user]/.ssh/identity.pub.
The key fingerprint is: 2a:dc:71:2f:27:84:a2:e4:a1:1e:a9:63:e2:fa:a5:89 [user]@[local machine]
“ssh-keygen -d”做的是幾乎同樣的事,但是把一對密鑰存為(默認情況下)“/home/[user] /.ssh/id_dsa”(私人密鑰)和“/home/[user]/.ssh/id_dsa.pub”(公用密鑰)。
現(xiàn)在用戶擁有一對密鑰:公用密鑰要分發(fā)到所有用戶想用ssh登錄的遠程主機上去;私人密鑰要好好地保管防止別人知道私人密鑰。用“ls-l ~/.ssh/identity”或“ls-l ~/.ssh/id_dsa”所顯示的文件的訪問權限必須是“-rw-------”。
(2)分發(fā)公用密鑰
在每一個用戶需要用SSH連接的遠程服務器上,用戶要在自己的主目錄下創(chuàng)建一個“.ssh”的子目錄,把用戶的公用密鑰“identity.pub”拷貝到這個目錄下并把它重命名為“authorized_ keys”。然后執(zhí)行:
chmod 644 .ssh/authorized_keys
這一步是必不可少的。如果除了用戶之外別人對“authorized_keys”文件也有寫的權限,SSH就不會工作。
如果用戶想從不同的計算機登錄到遠程主機,“authorized_keys”文件也可以有多個公用密鑰。在這種情況下,必須在新的計算機上重新生成一對密鑰,然后把生成的“identify.pub”文件拷貝并粘貼到遠程主機的“authorized_keys”文件里。當然在新的計算機上用戶必須有一個賬號,而且密鑰是用口令保護的。有一點很重要,就是當用戶取消了這個賬號之后,別忘了把這一對密鑰刪掉。