密钥方式登录原理:利用密钥生成器制作一对密钥 —— 一只公钥和一只私钥。将公钥添加到服务器的某个账户上,然后在客户端利用私钥即可完成认证并登录。若没有私钥,任何人都无法通过 SSH 暴力破解密码来远程登录。此外,若将公钥复制到其他账户或主机,利用私钥也可以登录。
言归正传
1.制作密钥对
先用密码登录到你打算使用密钥登录的账户,然后执行以下命令:
eai@eai:~/.ssh$ ssh-keygen <====== 建立密钥对
Generating public/private rsa key pair.
Enter file in which to save the key (/home/eai/.ssh/id_rsa): <====== enter 确认
Enter passphrase (empty for no passphrase): <====== 输入密钥密码锁,或者直接enter默认无密码
Enter same passphrase again: <====== 再次输入密钥密码锁
Your identification has been saved in /home/eai/.ssh/id_rsa. <====== 私钥
Your public key has been saved in /home/eai/.ssh/id_rsa.pub. <====== 公钥
The key fingerprint is:
77:d0:af:76:97:fd:97:dd:e5:cc:47:01:1f:40:ae:b6 eai@eai
The key's randomart image is:
+--[ RSA 2048]----+
| .o. |
| ... . |
| . ..o .|
| ... o |
| S .o. . .|
| ..... =|
| Eo .*B|
| . . oX|
| +|
+-----------------+
现在,在 ~/.ssh 的目录中生成了两个密钥文件。id_rsa 为私钥,id_rsa.pub 为公钥。
2.在服务器上安装公钥
eai@eai:~/.ssh$ cat id_rsa.pub >> authorized_keys
然后设置一下文件的权限:
eai@eai:~/.ssh$ chmod 600 authorized_keys
eai@eai:~/.ssh$ chmod 700 ~/.ssh
3.设置SSH,打开密钥登录功能
确保 /etc/ssh/sshd_config 文件中相关设置(一般不用修改):
RSAAuthentication yes
PubkeyAuthentication yes
留意 root 用户能否通过 SSH 登录:
PermitRootLogin yes
当完成全部设置,以密钥方式登录成功后,可以禁用密码登录:
PasswordAuthentication no
最后,重启 SSH 服务:
eai@eai:~/.ssh$ service sshd restart
如果重启失败:sshd: unrecognized service , 就查看SSH是否活动: eai@eai:~/.ssh$ service ssh status ,如果是类似 ssh start/running, process 1579,
就直接这样重启: eai@eai:~/.ssh$ sudo /etc/init.d/ssh restart
4.下载私钥,转为 PuTTY 能使用的格式
将私钥文件 id_rsa 下载到本机,打开 PuTTYGen,单击 Actions 中的 Load 按钮,载入刚才下载到的私钥文件。
若才设置了密钥锁码,会提示输入。
载入成功后,PuTTYGen 会显示密钥相关的信息。在 Key comment 中键入对密钥的说明信息,然后单击 Save private key 按钮即可将私钥文件存放为 PuTTY 能使用的格式。
至此,密钥制作完成。
以后使用 PuTTY 登录时,可以在左侧的 Connection -> SSH -> Auth 中的 Private key file for authentication: 处选择你的私钥文件,然后即可登录了,过程中只需输入密钥锁码即可。