Debian SSH密钥认证如何设置
小樊
42
2025-11-29 01:26:39
Debian SSH 密钥认证设置指南
一 准备与生成密钥对
- 在本地客户端安装 OpenSSH 客户端(如未安装):sudo apt update && sudo apt install -y openssh-client。
- 生成密钥对(推荐 RSA 4096,也可使用 ed25519):
- RSA:ssh-keygen -t rsa -b 4096 -C “you@example.com”
- Ed25519:ssh-keygen -t ed25519 -C “you@example.com”
- 按提示选择保存路径(默认 ~/.ssh/id_rsa 或 ~/.ssh/id_ed25519),建议为私钥设置密码短语(passphrase)提升安全性。
- 生成的私钥(如 id_rsa 或 id_ed25519)必须严格保密,权限建议 600。
二 将公钥部署到服务器
- 方法一(推荐):使用 ssh-copy-id 自动追加公钥到服务器 ~/.ssh/authorized_keys
- 默认端口:ssh-copy-id -i ~/.ssh/id_rsa.pub user@server_ip
- 自定义端口(如 2222):ssh-copy-id -i ~/.ssh/id_rsa.pub -p 2222 user@server_ip
- 方法二:手动复制
- 本地查看公钥:cat ~/.ssh/id_rsa.pub(或 id_ed25519.pub),复制整行内容。
- 服务器端执行:
mkdir -p ~/.ssh
echo “粘贴的公钥内容” >> ~/.ssh/authorized_keys
- 设置目录与文件权限(服务器端):
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chown -R user:user ~/.ssh
- 说明:Debian 上 SSH 服务单元通常为 ssh.service(而非 sshd.service),后续重启也使用 ssh。
三 连接与客户端配置
- 使用私钥连接:
- 默认端口:ssh -i ~/.ssh/id_rsa user@server_ip
- 自定义端口:ssh -i ~/.ssh/id_rsa -p 2222 user@server_ip
- 简化连接(可选):编辑本地 ~/.ssh/config
Host myserver
HostName server_ip
User user
Port 2222
IdentityFile ~/.ssh/id_rsa
之后可直接执行:ssh myserver
- 使用密钥代理避免重复输入私钥密码短语:
eval “$(ssh-agent -s)”
ssh-add ~/.ssh/id_rsa
四 服务器端安全与可选优化
- 编辑 /etc/ssh/sshd_config,确保启用密钥认证并禁用密码登录(在确认密钥登录可用后再禁用):
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
- 可选加固:
- 修改默认端口:Port 2222(或其他未被占用端口)
- 禁止 root 直登:PermitRootLogin no
- 使配置生效:sudo systemctl restart ssh
- 重要提示:在关闭当前会话前,务必新开一个终端测试密钥登录是否成功,避免被锁。
五 常见问题排查
- 权限问题:确保 ~/.ssh 为 700、authorized_keys 为 600,属主为相应用户;否则公钥认证可能被拒绝。
- 端口与防火墙:若更改了端口(如 2222),需放行对应端口(UFW:sudo ufw allow 2222/tcp;云安全组同理)。
- 服务状态:确认 SSH 服务运行正常:sudo systemctl status ssh。
- 首次连接指纹确认:首次连接会提示主机指纹,核对无误再输入 yes。
- 多密钥管理:可在 ~/.ssh/config 中为不同主机指定不同 IdentityFile,或在 ssh-copy-id/ssh 时用 -i 明确指定私钥。