SSH免密码登录通过公钥认证实现,以下是详细配置步骤:
ssh-keygen -t rsa -b 4096
# 或使用更安全的ed25519算法
ssh-keygen -t ed25519
生成过程中会提示:
- 密钥保存位置(默认~/.ssh/id_rsa
)
- 设置密码短语(可直接回车留空)
方法一:使用ssh-copy-id
命令(最简单)
ssh-copy-id -i ~/.ssh/id_rsa.pub username@server_ip
方法二:手动复制(当ssh-copy-id
不可用时)
# 1. 查看公钥内容
cat ~/.ssh/id_rsa.pub
# 2. 登录服务器,将公钥内容追加到~/.ssh/authorized_keys
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "粘贴公钥内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
编辑/etc/ssh/sshd_config
确保以下设置:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no # 禁用密码登录(更安全)
然后重启SSH服务:
sudo systemctl restart sshd
# 或
sudo service ssh restart
ssh username@server_ip
权限设置非常重要:
.ssh
目录权限应为700 (drwx------
)authorized_keys
文件权限应为600 (-rw-------
)多台客户端使用不同密钥时,可在~/.ssh/config
中配置:
Host server_alias
HostName server_ip
User username
IdentityFile ~/.ssh/custom_key
安全性建议:
ed25519
算法替代RSA如果连接失败,可查看详细日志:
ssh -v username@server_ip