SSH 密钥认证比密码登录更安全,建议所有服务器都使用密钥认证。
1. 生成密钥对
# 推荐使用 ed25519 算法(更安全、速度更快) ssh-keygen -t ed25519 -C "your_email@example.com" # 或使用 RSA 4096 位(兼容性更好) ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
执行后会提示输入保存路径和密码短语(passphrase),建议设置密码短语增加安全性。
2. 上传公钥到服务器
ssh-copy-id user@server_ip
或者手动操作:
cat ~/.ssh/id_ed25519.pub # 复制输出内容,登录服务器后: mkdir -p ~/.ssh chmod 700 ~/.ssh echo "公钥内容" >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
3. 配置服务器(sshd_config)
编辑 /etc/ssh/sshd_config:
PubkeyAuthentication yes PasswordAuthentication no PermitRootLogin no AllowUsers username
sudo systemctl restart sshd
4. 本地多服务器配置
编辑 ~/.ssh/config:
Host myserver
HostName 8.217.108.236
User root
Port 4321
IdentityFile ~/.ssh/mykey_ed25519
Host dev-server
HostName dev.example.com
User devuser
Port 22
配置后可直接使用:ssh myserver
5. SSH 代理(ssh-agent)
eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_ed25519