配置SSH免密登录可提升远程管理效率,核心是使用密钥对验证。1. 在本地运行ssh-keygen生成私钥和公钥;2. 用ssh-copy-id或手动方式将公钥添加到服务器~/.ssh/authorized_keys;3. 设置正确权限:chmod 700 ~/.ssh 和 chmod 600 ~/.ssh/authorized_keys;4. 测试ssh登录是否免密成功;5. 可选优化:使用ssh-agent管理密钥、配置~/.ssh/config简化连接、禁用密码登录增强安全。检查PubkeyAuthentication yes及目录权限可排除常见问题。
配置SSH免密登录可以极大提升远程管理效率,避免重复输入密码。核心原理是使用密钥对(公钥+私钥)进行身份验证。以下是完整的操作步骤。
生成SSH密钥对在本地机器上生成密钥对,通常使用ssh-keygen
命令:
打开终端,执行:
ssh-keygen -t rsa -b 2048系统会提示保存路径(默认~/.ssh/id_rsa),可直接回车设置密钥密码(可选,留空则无需密码即可使用私钥)
执行完成后,会在~/.ssh/
目录下生成两个文件:
id_rsa(私钥)和id_rsa.pub(公钥)。
将公钥上传到目标服务器需要把本地的公钥内容添加到服务器的~/.ssh/authorized_keys
文件中。有两种常用方法:
CentOS Linux 7.9.2009 CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离线兼容性测试。
下载自动方式:使用ssh-copy-id命令
执行:
ssh-copy-id username@server_ip输入密码后,公钥会自动复制到服务器对应用户的authorized_keys中。
手动方式:若没有ssh-copy-id命令,可手动操作先用cat ~/.ssh/id_rsa.pub查看公钥内容登录服务器,创建目录和文件:mkdir -p ~/.ssh echo "粘贴公钥内容" >> ~/.ssh/authorized_keys
设置正确权限:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys测试并验证免密登录配置完成后,尝试通过SSH连接服务器:
执行:
ssh username@server_ip如果未提示输入密码且成功登录,说明配置成功
若仍需密码,检查以下几点:
服务器端/etc/ssh/sshd_config
中是否启用公钥认证:
PubkeyAuthentication yes SELinux或防火墙是否阻止了连接用户家目录及.ssh目录权限是否过于开放(如其他用户可写)
提高安全性和便利性(可选)
进一步优化SSH体验:
使用ssh-agent管理私钥,避免每次使用都输入密钥密码配置~/.ssh/config
文件简化连接命令,例如:
Host myserverHostName server_ipUser usernameIdentityFile ~/.ssh/id_rsa禁用密码登录(谨慎操作)以增强安全性,在/etc/ssh/sshd_config
中设置:
PasswordAuthentication no
,然后重启SSH服务:
systemctl restart sshd基本上就这些。只要密钥放置正确、权限设置合理、SSH服务配置得当,免密登录就能稳定工作。
