生成密钥
# 生成RSA密钥对,默认存储于 ~/.ssh/ 目录下,-C 参数指定备注信息
$ ssh-keygen -t rsa [-C "zlikun-dev@hotmail.com"]
# ~/.ssh/id_rsa
# ~/.ssh/id_rsa.pub
# 查看 ssh-keygen 帮助信息
$ man ssh-keygen
# 分发密钥,默认发送 ~/.ssh/id_rsa.pub 文件,也可以通过 -i 显示指定
$ ssh-copy-id [-i id_rsa.pub] <username>@<host>[:<port>]
# 实际上是把密钥追加到目标服务器的 ~/.ssh/authorized_keys 文件中,所以使用其它方式追加都是可以的
# 如果是第一次手工创建文件,务必注意文件权限问题,设置为只有当前用户有读写权限(600或644)即可
$ ls -al ~/.ssh/authorized_keys
-rw------- 1 root root 808 Jan 31 18:52 /root/.ssh/authorized_keys
# chmod 600 /root/.ssh/authorized_keys
密钥登录
# 参考上面的步骤将公钥添加到目标服务器上
# 修改目标服务器的SSH配置
$ vim /etc/ssh/sshd_config
# 允许密钥认证
PubkeyAuthentication yes
# 指定密钥路径(默认值)
AuthorizedKeysFile .ssh/authorized_keys
# 可以禁用密码认证,提高安全性
PasswordAuthentication no
# 修改后重启sshd服务即可
$ sudo systemctl restart sshd
# 钥密登录SSH服务,可选参数 -i id_rsa 用于显示指定私钥文件(默认使用 ~/.ssh/id_rsa 文件)
$ ssh [-i id_rsa] <username>@<host>[:<port>]