Linux SSH , SCP 建立信任关系(免密传输)
最近有个需求,Jenkins需要将war传输到各个项目节点中,所以需要远程执行各个节点的shell脚本.但是中间有个输入密码的过程,在自动化部署中是行不通的,故需要增加免密登录.具体如下:
如果想在 A 这太机器上可以不需要密码就 ssh 到 B 、 C 两台机器上,可以采用如下的方法:
1.
A机器上
1 | ssh -keygen -t rsa |
如果A机器上的目录(home/.ssh/,如果是root用户,则目录是在root/.ssh/)没有 authorized_keys 文件,那么:
1 | cp /home/xxx/ . ssh /id_rsa .pub /home/xxx/ . ssh /authorized_keys |
此时A机器的目录是这样的:
2.
B,C机器上:
1 | ssh -keygen -t rsa |
B,C机器的目录是这样的:忽略known_hosts文件,系统自动生成的.
3.
将B,C机器中的id_rsa.pub的内容cat到A机器的 authorized_keys 中去:
然后:
1 | cat [B,C机器的id_rsa.pub文件] >> [A机器的authorized_keys文件] |
回车,完成;
最后:
在B和C机器上: chmod 644 authorized_keys 这一步非常关键,必须保证 authorized_keys 只对其所有者有读写权限,其他人不允许有写的权限,否则 SSH 是不会工作的
可以直接 ssh username@ 机器名了,同一台机器的不同用户直接也可以以这种方式来访问
如果经过上面的步骤还是提示需要密码,注意一下权限问题,主要有三个权限
(1) /home/username这目录的权限应该是700
(2) /home/username/.ssh 这个目录的权限也应该是700
(3) /home/username/.ssh/ authorized_keys这个文件的权限是644
如果还是不正确,那么tail /var/log/secure一下这个日志文件,就能发现问题。
参考文章:https://blog.csdn.net/xqhrs232/article/details/71159718
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 聊一聊 操作系统蓝屏 c0000102 的故障分析
· SQL Server 内存占用高分析
· .NET Core GC计划阶段(plan_phase)底层原理浅谈
· .NET开发智能桌面机器人:用.NET IoT库编写驱动控制两个屏幕
· 用纯.NET开发并制作一个智能桌面机器人:从.NET IoT入门开始
· 20250116 支付宝出现重大事故 有感
· 一个基于 Roslyn 和 AvalonEdit 的跨平台 C# 编辑器
· 推荐一款非常好用的在线 SSH 管理工具
· 聊一聊 操作系统蓝屏 c0000102 的故障分析
· .NET周刊【1月第1期 2025-01-05】
2017-10-23 maven 无法导入ojdbc 的jar包 解决方法