SSH 支持两种主要认证方式:密码认证和密钥认证。以下是配置方法:
1. 密码认证配置
启用密码登录
1. 编辑 SSH 服务器配置文件:
sudo nano /etc/ssh/sshd_config
2. 确保以下设置:
PasswordAuthentication yes
3. 重启 SSH 服务:
sudo systemctl restart ssh
禁用密码登录
将 PasswordAuthentication 改为 no 并重启服务
2. 密钥认证配置
生成 SSH 密钥对(在客户端)
ssh-keygen -t rsa -b 4096
# 或使用更安全的 ed25519 算法:
ssh-keygen -t ed25519
将公钥上传到服务器
方法一:使用 ssh-copy-id
ssh-copy-id -i ~/.ssh/id_rsa.pub username@hostname
方法二:手动复制
#1 查看公钥
cat ~/.ssh/id_rsa.pub
# 2 登录服务器,将公钥内容添加到:
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
3. 高级安全配置
禁用 root 登录
PermitRootLogin no
限制用户登录
AllowUsers username1 username2
更改默认端口
Port 2222
#更新防火墙规则
sudo ufw allow 2222/tcp
重启 SSH 服务应用更改
sudo systemctl restart ssh
4. 连接测试
测试密钥登录:
ssh -p 2222 username@hostname
测试密码登录:
ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no username@hostname
5. 注意事项
- 在禁用密码认证前,确保密钥认证已正常工作
- 备份
sshd_config文件后再修改 - 修改配置后,保持现有连接不退出,新开终端测试
- 对于生产环境,建议禁用密码认证,仅使用密钥认证
这些配置可以显著提高 SSH 连接的安全性。