为了确保安全,一般情况下,我们在自己的机器上不会选择使用密码登录,必要时还会关闭 root 账户的 ssh 登录功能
先使用 ssh-keygen
创建一个密钥对
如果对安全性有更高的追求,推荐使用椭圆曲线算法来生成密钥对
ubuntu@ubuntu:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ubuntu/.ssh/id_rsa):
Created directory '/home/ubuntu/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/ubuntu/.ssh/id_rsa.
Your public key has been saved in /home/ubuntu/.ssh/id_rsa.pub.
预期应生成两个文件 id_rsa
和 id_rsa.pub
将公钥添加进 ~/.ssh/authorized_keys
文件中
ubuntu@ubuntu:~/.ssh$ cat ./id_rsa >> ./authorized_keys
重启 SSH 服务,尝试使用秘钥进行连接
sudo service sshd restart
修改 /etc/ssh/sshd_config
文件,让登录的过程更加安全
先备份
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
在文件中添加或修改
# 启用 RSA 认证
RSAAuthentication yes
# 启用公钥认证
PubkeyAuthentication yes
# 配置 ROOT 登录(二选一)
# PermitRootLogin no # 禁用 ROOT 登录
PermitRootLogin without-password # 禁用 ROOT 密码登录
# 禁用密码认证
PasswordAuthentication no
禁用 ROOT 密码登录适用于一些为高级账号使用统一秘钥,而低级账号使用其他验证方式的场景,这样可以更加便于管理服务器
最好待测试成功使用秘钥登录后再禁用密码登录
最后重启 SSH 服务
sudo service sshd restart