linux免密登录ssh验证配置方法及常见错误解决
目标:从服务器A免密登录服务器B
【配置方法】
1.在服务器A生成密钥文件,直接使用以下命令:
ssh-keygen
中间遇到输入内容一路回车即可,完成后会在 ~/.ssh 目录下生成两个文件:id_rsa(私钥文件)和 id_rsa.pub(公钥文件,在服务器B要用到的)
2.登录服务器B,编辑~/.ssh/authorized_keys文件,将服务器A里的~/.ssh/id_rsa.pub内容复制进去保存,并授予权限644。另外~/.ssh目录授权700
vim ~/.ssh/authorized_keys
chmod 644 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
如果~/.ssh目录不存在,请手动创建,命令为:mkdir ~/.ssh
完成以上两步就可以实现了,如果遇到问题无法连接,请继续往下看:
【常见问题】
1.服务器B没打开公钥登录权限
解决方法:编辑/etc/ssh/sshd_config文件,注意以下几项的值:
PermitRootLogin yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
编辑完保存,重启sshd服务(ubuntu是ssh ,centos是sshd)
(这些值其实也是默认的,默认也是开启的,如果连不上还是需要检查下)
2.服务器B目录和文件权限
解决方法:检查并设置以下权限
~/.ssh/ 700
~/.ssh/autorized_keys 644
3.服务器B开启了selinux
解决方法:使用以下命令关闭
setenforce 0
并且编辑配置文件(永久关闭)
vim /etc/selinux/config
改变里面的值
SELINUX=disabled
然后保存
以上方法可以解决99%的连不上问题。希望对你有帮助。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?