Featured image of post SSH-ProxyJump跳转登录

SSH-ProxyJump跳转登录

使用ProxyJump或ProxyCommand跳转登录

介绍

ssh 有三种方式可以跳转登录,分别是:ProxyJump、ProxyCommand、SSH Tunnel。

在某些场景下,SSH无法直接访问服务器,需要通过其他服务器进行代理访问,比如外网服务器访问仅允许使用VPN或4A访问的内网服务器。在这种场景下,常用的方式是端口转发,使用端口转发建立连接,然后再做访问。如果面临更多服务器,就需要建立多个端口转发连接,比较麻烦。

ProxyJump

可以使用SSH提供的ProxyJump参数,进行代理服务跳转,简化登录流程,ProxyJump简写参数是 -J 。

在 openssh7.3 以上的版本,开始支持 ProxyJump 。

ProxyJump可以在命令行执行,也可以写在配置文件(~/.ssh/config)中。

命令行执行语法

1
$ ssh -J user@proxyserver1,user@proxyserver2 user@targetserver

使用命令行时需要逐个输入代理服务器的密码。

可以使用config配置文件和ssh密钥文件,简化登录流程,

配置文件(~/.ssh/config)语法

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
Host ProxyServer
  Hostname <jump_server ip>
  Port <jump_server port>
  User <jump_server user>
  IdentityFile <jump_server id_rsa>

Host target
  HostName <target_server ip>
  Port <target_server port>
  User <target_server user>
  IdentityFile <target_server id_rsa>
  ProxyJump ProxyServer

配置之后,在终端执行 ssh target 即可ssh到目标服务器

ProxyCommand

若不支持ProxyJump,可以使用ProxyCommand

-W host:port #将client过来的标准输入和输出forward到host和port指定的地方. 可以看到,这个选项直接就可以搭配上ProxyCommand的需求

ProxyCommand 命令行语法

1
ssh username@target_server_ip -p 22 -o ProxyCommand='ssh -p 22 username@jump_server_ip -W %h:%p'

同样可以在~/.ssh/config增加配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
Host ProxyServer
  Hostname <jump_server ip>
  Port <jump_server port>
  User <jump_server user>
  IdentityFile <jump_server id_rsa>

Host target
  HostName <target_server ip>
  Port <target_server port>
  User <target_server user>
  ProxyCommand ssh -p 22 -W %h:%p ProxyServer

参考:
https://qusec.cn/posts/sssh/
https://peirs.net/sshs-proxyjump-parameter/
https://murphypei.github.io/blog/2021/12/ssh-proxyjump
https://www.jianshu.com/p/199013854070
https://zhuanlan.zhihu.com/p/74193910
https://blog.csdn.net/wxqee/article/details/49234595
https://www.jianshu.com/p/ad5aa9663d37
https://juejin.cn/s/ssh%20config%20proxyjump%20windows

Licensed under CC BY-NC-SA 4.0
Built with Hugo
主题 StackJimmy 设计