前言
公司的很多服务器没有外网地址只能通过内网访问。
这个时候就需要我们先登录跳板机,然后在跳板机上登录内网机器(本机 ssh -> 跳板机 -> 内网机器)。
因为跳板机是公用的,所以为了安全不能将跳板机的公钥放到内网机器上实现免密登录,更不能将本机的公钥和私钥放到跳板机上实现免密登录。因为懒所以就搜寻到一个解决方案。
Ps:懒人改变世界: )
正文
ProxyJump
需要 OpenSSH 7.3
以上版本才可以使用 ProxyJump
, 使用下列命令查看OpenSSH
版本:
1 | $ ssh -V |
ProxyJump
命令行使用方法:
1 | ssh -J [email protected]:port1,[email protected]:port2 |
可以直接使用上述命令通过跳板机直接登录内网机器,比如:
1 | ssh [email protected]目标机器IP -p 22 -J [email protected]跳板机IP:22 |
如果需要通过多个跳板机则以 ,
分割:
1 | ssh [email protected]目标机器IP -p 22 -J [email protected]跳板机IP1:22,[email protected]跳板机IP2:22 |
如果你觉得每次都需要加上 -J
的配置很多麻烦,可以写到配置文件里。修改配置文件 ~\.ssh\config
,默认没有需要自己创建。增加以下内容:
1 | Host target # 代表目标机器的名字 |
也可以为跳板机器一个“别名”方便使用:
1 | Host tiaoban1 # 代表跳板机 1 |
使用方法:
1 | ssh target |
ProxyCommand
如果 OpenSSH
版本低于 7.3 可以使用 ProxyCommand
达到同样的效果。
ProxyCommand
命令行使用方法:
1 | ssh [email protected]目标机器IP -p 22 -o ProxyCommand='ssh -p 22 [email protected]跳板机IP -W %h:%p' |
同样可以在 ~/.ssh/config
文件中增加配置文件:
1 | Host tiaoban # 任意名字,随便使用 |
使用方法同上:
1 | ssh target |