SSH的密钥管理主要包括两个方面:生成公钥/私钥对以及公钥的分发,下面将对这两个密钥管理工作分别进行介绍。
(1)生成用户自己的密钥对
生成并分发用户自己的密钥有两个好处:
可以防止“中间人”这种攻击方式。
可以只用一个口令就登录到所有用户想登录的服务器上。
用下面的命令可以生成密钥:
#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”(公用密钥)。
现在用户拥有一对密钥:公用密钥要分发到所有用户想用ssh登录的远程主机上去;私人密钥要好好地保管防止别人知道私人密钥。用“ls-l ~/.ssh/identity”或“ls-l ~/.ssh/id_dsa”所显示的文件的访问权限必须是“-rw-------”。
(2)分发公用密钥
在每一个用户需要用SSH连接的远程服务器上,用户要在自己的主目录下创建一个“.ssh”的子目录,把用户的公用密钥“identity.pub”拷贝到这个目录下并把它重命名为“authorized_ keys”。然后执行:
chmod 644 .ssh/authorized_keys
这一步是必不可少的。如果除了用户之外别人对“authorized_keys”文件也有写的权限,SSH就不会工作。
如果用户想从不同的计算机登录到远程主机,“authorized_keys”文件也可以有多个公用密钥。在这种情况下,必须在新的计算机上重新生成一对密钥,然后把生成的“identify.pub”文件拷贝并粘贴到远程主机的“authorized_keys”文件里。当然在新的计算机上用户必须有一个账号,而且密钥是用口令保护的。有一点很重要,就是当用户取消了这个账号之后,别忘了把这一对密钥删掉。