免密登录原理

利用密钥生成器制作一对密钥 —— 公钥和私钥。将公钥添加到服务器的某个账户上,然后在客户端利用私钥即可完成认证并登录。

生成 SSH 密钥对

输入命令 ssh-keygen 然后按 4 次 En­ter 键就行了。

root@p3ter:~# ssh-keygen  # 输入命令,按 Enter 键
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):   #  保存位置,默认就行,按 Enter 键
Enter passphrase (empty for no passphrase):   # 输入密钥密码,按 Enter 键。填写后每次都会要求输入密码,留空则实现无密码登录。
Enter same passphrase again:   # 再次输入密钥密码,按 Enter 键
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:
SHA256:GYT9YqBV4gDIgzTYEWFs3oGZjp8FWXArBObfhPlPzIk root@p3ter
The key's randomart image is:
+---[RSA 2048]----+
|*OO%+ .+o        |
|*=@.+++o.        |
| *o=.=....       |
|. +.B + +o.      |
| . + E *S.       |
|  o   o          |
|       .         |
|                 |
|                 |
+----[SHA256]-----+

现在,在当前用户的根目录中生成了一个 .ssh 的隐藏目录,内含两个密钥文件。id_rsa 为私钥,id_rsa.pub 为公钥。

安装公钥

cd .ssh/
cat id_rsa.pub >> authorized_keys # 将公钥写入到 authorized_keys 文件

修改权限

chmod 600 authorized_keys
chmod 700 ~/.ssh

修改 sshd 配置文件

开启密钥登录

编辑 /etc/ssh/sshd_config 文件添加或修改以下参数进行更改:

RSAAuthentication yes
PubkeyAuthentication yes

重启 sshd 服务

service sshd restart

禁用密码登录

确认密钥能成功登录后,更改以下参数:

PasswordAuthentication no

重启 sshd 服务

service sshd restart