如何配置 SSH 免密登录?

2025.5.29 杂七杂八 1083

如何配置 SSH 免密登录? 杂七杂八-第1张

SSH免密登录通过公钥认证实现安全便捷的远程连接,无需每次输入密码。本文详细介绍生成密钥对、上传公钥到服务器以及配置权限的完整流程,帮助用户快速掌握这一高效运维技巧。

一、SSH免密登录原理

SSH免密登录基于非对称加密技术,通过本地生成密钥对(公钥+私钥),将公钥上传至目标服务器实现认证。相比密码登录,具有以下优势:

  • 更高的安全性(防暴力破解)
  • 操作便捷性(无需重复输入密码)
  • 适合自动化脚本执行

二、详细配置步骤

1. 生成SSH密钥对

在本地终端执行以下命令(Windows系统可使用Git Bash):

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

参数说明:

  • -t rsa:指定密钥类型为RSA
  • -b 4096:密钥长度4096位
  • -C:添加注释信息

2. 上传公钥到服务器

使用ssh-copy-id工具自动上传(需先安装openssh-client):

ssh-copy-id -i ~/.ssh/id_rsa.pub username@server_ip

或手动上传:

cat ~/.ssh/id_rsa.pub | ssh username@server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

3. 设置文件权限

服务器端必须设置正确的权限:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

4. 测试连接

ssh username@server_ip

三、高级配置技巧

1. 多密钥管理

~/.ssh/config中配置不同主机使用不同密钥:

Host myserver
  HostName server_ip
  User username
  IdentityFile ~/.ssh/custom_key

2. 禁用密码登录(增强安全)

编辑服务器/etc/ssh/sshd_config

PasswordAuthentication no
PubkeyAuthentication yes

重启SSH服务:

sudo systemctl restart sshd

四、常见问题解决

  • 权限问题:确保.ssh目录权限为700,authorized_keys为600
  • SELinux限制:执行restorecon -Rv ~/.ssh
  • 连接超时:检查防火墙设置和SSH端口开放情况

通过以上步骤,您已成功配置SSH免密登录。这种认证方式特别适合需要频繁访问服务器的开发者和运维人员,能显著提升工作效率同时保障系统安全。

评论