ssh_config实现跳板机的链式免密登录
配置ssh_config实现跳板机的链式免密登录
配置
ssh_config
用户ssh配置
.ssh
目录下的文件权限必须是600
或400
ssh-client公钥信息
要提前写入到跳板机
和目标主机
的authorized_keys
(免密授权文件)中
1.ssh-agent管理密钥
# 通过ssh-agent来管理密钥
ssh-agent bash
# 查看ssh-agent加载的私钥
ssh-add -l
## 加载的私钥为空
# 将私钥交给ssh-agent管理,避免每次连接都需要输入密钥密码
ssh-add ~/.ssh/id_rsa
# 查看ssh-agent加载的私钥
ssh-add -l
## 已经成功加载私钥
2.配置ssh_config
https://ohmyweekly.github.io/notes/2020-10-01-ssh-configuration/
ProxyJump - 这个选项将通过连接的服务器进行隧道简化为一个标志
## -J,用一个别名来命名中间主机(本地客户端和最终目的地之间的主机)。
方案1:
生产环境下,一个用户只能有一个私钥,多个服务器上的同一用户都是同一个私钥.
vi ~/.ssh/config
# 跳板机的配置:
Host JumpMachine
user admin
Hostname 10.10.10.10
Port 2222
# 私钥文件
identityfile ~/.ssh/id_rsa_dns
# 转发Agent管理的密钥
ForwardAgent yes
# 跳板机后的目标机器2的配置
Host node2
user admin
Hostname 10.10.10.115
Port 2223
# 跳板机服务器名称
proxyjump JumpMachine
# 跳板机后的目标机器3的配置
Host node3
user admin1
Hostname 10.10.10.116
Port 2224
# 跳板机服务器名称
proxyjump JumpMachine
方案2:
前置条件
:
提前将ssh-client
的密钥对
文件拷贝到跳板机
上
# 跳板机的配置
Host JumpMachine
HostName XXX.XXX.XXX.XXX
Port XXX
User root
IdenytityFIle C:\Users\你的用户名\.ssh\id_rsa
# 目标机的配置
Host TargetMachine
HostName XXX.XXX.XXX.XXX
Port XXX
User root
# 用的还是自己电脑的私钥,不是跳板机的
IdenytityFIle C:\Users\你的用户名\.ssh\id_rsa
# ssh -W参数
ProxyCommand ssh -W %h:%p JumpMachine
3.登录跳板机
不管有多少条,开了ForwardAgent都会一路转发密钥实现免密登录
# 登录跳板机
ssh JumpMachine
# 即可登录成功
# 直接链式登录node2
# node2只允许跳板机JumpMachine登录,使用代理登录参数,实现本地直接登录
ssh node2
4.通配符
加上Host * ,所有的主机都会附加 * 的配置项
如果Host主机的参数和* 中的参数相冲突,Host主机会覆盖*中的配置
# 全局设置,排除gitee.com和localhost
Host * !gitee.com !localhost
# 忽略第一次密钥检查
StrictHostKeyChecking no
# 关闭GSSAPI认证能优化ssh连接速度
GSSAPIAuthentication no
# 配置10分钟(10秒*60次)内ssh客户端不超时
## 服务器存活最大数值超过次60次服务器无响应客户端会断掉
ServerAliveCountMax 60
## 服务器存活时间间隔,10秒发送一次KeepAlive
ServerAliveInterval 10
# 发送TCP保活报文
TCPKeepAlive yes
ssh -A代理转发
参考地址:
https://blog.51cto.com/tenderrain/1653273
https://www.douban.com/group/topic/35997376/?_i=2066138jSJDaAs
https://baijiahao.baidu.com/s?id=1690552079845527492
感觉和链式登录
跳板机的效果一样,但是有点复杂还没搞懂