轻松配置Linux免密码登录SSH:安全高效的详细指南
目录
一般服务器密码都会设置成非人类可记的,如果每次登陆都要查找该密码则会非常麻烦还浪费时间。在这篇指南中,我们将逐步介绍如何在Linux服务器上配置SSH,以实现免密码登录。这不仅能简化登录过程,还能提高安全性。
1. 生成SSH密钥对
首先,在您的本地机器上生成一对SSH密钥:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
参数说明:
-t rsa
: 指定密钥类型为RSA。-b 4096
: 指定密钥长度为4096位。-C "your_email@example.com"
: (可选参数)添加一个注释,这里通常是您的邮箱地址,用于分辨密钥。
按下回车后,会有一个提示,您可以选择密钥的保存位置(默认为~/.ssh/id_rsa
)以及是否为其设置密码短语。但也可以不作任何输入,再按多次回车。
2. 将公钥复制到远程服务器
使用ssh-copy-id
命令,将公钥复制到远程服务器:
ssh-copy-id user@remote_host
替换user
为您在远程服务器上的用户名,remote_host
为远程服务器的IP地址或域名。
如果ssh-copy-id
命令不可用,可以手动复制公钥:
cat ~/.ssh/id_rsa.pub | ssh user@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
注意:手动复制很容易出错,建议使用ssh-copy-id,简单方便。
3. 设置正确的权限
在远程服务器上,确保SSH相关文件和目录具有正确的权限:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
4. 配置SSH服务器
编辑远程服务器上的SSH配置文件:
sudo nano /etc/ssh/sshd_config
查看该文件,确保以下设置已启用,如果已经启动则无需理会:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
5. 禁用密码认证(可选但推荐)
为了提高安全性,可以禁用密码认证。在同一个配置(第4步)文件中,找到并修改:
PasswordAuthentication no
6. 重启SSH服务
保存更改后,重启SSH服务以使配置生效:
使用systemd的系统:
sudo systemctl restart sshd
使用SysV init的系统:
sudo service ssh restart
7. 测试免密码登录
现在,你在本地应该能够无需密码登录到远程服务器:
ssh user@remote_host
故障排除
如果遇到问题,请检查以下几点:
- 确保您的本地公钥(
~/.ssh/id_rsa.pub
)内容已正确添加到远程服务器的~/.ssh/authorized_keys
文件中。 - 检查远程服务器上
~/.ssh
和~/.ssh/authorized_keys
的权限是否正确。 - 查看远程服务器上的
/var/log/auth.log
文件,寻找可能的错误信息。
安全提示
- 定期更新您的SSH密钥。
- 使用强密码短语保护您的私钥。
- 考虑使用SSH密钥认证结合双因素认证,以获得更高的安全性。