无密码登录
- 需求
机器 A (客户端)使用 SSH 免密连接机器 B(服务端) - 客户端配置
进入用户目录的 .ssh 目录,生成公钥和私钥
ssh-keygen -t rsa - 在执行的过程中,一路回车,不要修改任何东西。全部默认
将生成的公钥分发到服务端
方法一:使用 ssh-copy-id 命令,将公钥添加到服务端的 authorized_keys 文件中
ssh-copy-id -i ~/.ssh/id_rsa.pub root@host
其中,root是要登录服务端的用户名,host 是服务端的 ip 或 domain
方法二:将公钥拷贝到服务端,使用 cat 命令追加到 authorized_keys 文件中
cat filename.pub >> authorized_keys
测试
在客户端尝试连接服务端
ssh user@host
若无需输入密码即可登录,则配置成功
设置无效的原因及解决方法
4.1 原因
客户端私钥文件路径未配置或配置错误
服务端配置错误
权限错误
/etc/ssh/sshd_config 文件配置错误
4.2 解决方法
检查客户端 ~/.ssh/config 文件,配置方法如前所述
在服务端修改权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
配置 /etc/ssh/sshd_config 文件,修改以下内容,启用秘钥验证
PubkeyAuthentication yes
1
修改后重启 sshd 服务
service sshd restart
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?