ssh免密码登录是linux环境下常用的便捷操作方案,基于非对称加密的公钥认证机制实现,避免了频繁输入密码的麻烦,同时降低了密码被暴力破解的风险。下面我们将逐步讲解完整的配置过程。

一、配置原理说明
ssh免密码登录的核心逻辑是:在本地机器生成一对密钥(公钥和私钥),将公钥上传到远程服务器的指定目录,当本地发起ssh连接时,远程服务器会用公钥验证本地持有的对应私钥,验证通过即可直接登录,无需输入密码。
二、具体配置步骤
1. 本地生成密钥对
在本地linux终端执行以下命令生成ssh密钥对,默认会使用RSA加密算法:
# 生成密钥对,-t指定加密算法,-C添加备注信息 ssh-keygen -t rsa -C "local_user@local_host" # 执行后会提示输入密钥保存路径,默认是~/.ssh/id_rsa,直接回车即可 # 接着提示输入私钥密码,若不需要密码直接回车两次
生成完成后,在~/.ssh/目录下会出现两个文件:id_rsa是私钥,需要妥善保管;id_rsa.pub是公钥,后续需要上传到远程服务器。
2. 上传公钥到远程服务器
可以通过ssh自带的命令将公钥传输到远程服务器,执行以下命令:
# 将本地公钥复制到远程服务器的authorized_keys文件中 # remote_user是远程服务器的用户名,remote_ip是远程服务器的IP地址 ssh-copy-id remote_user@remote_ip # 首次执行会提示输入远程服务器的用户密码,输入后即可自动完成上传
如果是手动上传公钥,也可以先将本地公钥内容复制到剪贴板,再登录远程服务器,将内容追加到~/.ssh/authorized_keys文件中。
3. 设置远程服务器文件权限
ssh对文件权限有严格要求,权限设置不正确会导致免密码登录失效,需要在远程服务器执行以下权限配置:
# 设置.ssh目录权限为700 chmod 700 ~/.ssh # 设置authorized_keys文件权限为600 chmod 600 ~/.ssh/authorized_keys # 确认.ssh目录和文件的所属用户是当前远程用户 chown -R remote_user:remote_user ~/.ssh
4. 验证免密码登录
完成上述配置后,在本地终端执行ssh连接命令,若无需输入密码直接登录成功,说明配置生效:
ssh remote_user@remote_ip
三、常见问题排查
- 如果登录仍然需要密码,首先检查远程服务器
/etc/ssh/sshd_config配置文件中是否开启了公钥认证,确保以下配置项没有被注释且值正确:PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
修改配置后需要重启ssh服务:systemctl restart sshd - 检查本地私钥和远程公钥的权限是否符合要求,私钥权限建议设置为600,公钥和
authorized_keys权限不超过644。 - 若提示密钥格式错误,可能是公钥文件内容被意外修改,重新上传公钥即可解决。
四、注意事项
私钥是免密码登录的核心凭证,不要将私钥泄露给其他人,也不要随意将私钥存储在不安全的位置。如果需要多台机器之间互相免密码登录,只需要在每台机器上生成密钥对,并将各自的公钥添加到其他机器的authorized_keys文件中即可。