密钥方式登录原理:利用密钥生成器制作一对密钥 —— 一只公钥和一只私钥。将公钥添加到服务器的某个账户上,然后在客户端利用私钥即可完成认证并登录。若没有私钥,任何人都无法通过 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: 处选择你的私钥文件,然后即可登录了,过程中只需输入密钥锁码即可。