跳板机

这张图是我从ssh-kung-fu盗来的.

上图的意思是你想连primary.example.com, 但是无法连接, 需要先连接secondary 这台机器.

如果有时间, 也请参考SSH_jump_host.

我的应用

基础的跳板机使用

下面的配置中, 其意义是, 我想要连接middleware这台机器, 需要首先连接work 这台机器, 再通过work连接middleware, 连接之后, 建立起了连接复用, 之后 的使用就不需要借助跳板机, 也不需要输入密码了.

1
2
3
4
5
6
7
8
9
10
11
12
13
Host work
User root
HostName 1.2.3.4
IdentityFile ~/.ssh/id_rsa_test

Host middleware
HostName 127.0.0.1
Port 2233
User root
Controlmaster auto
Controlpath ~/.ssh/ssh-%r@%h:%p.sock
ControlPersist 600
ProxyCommand ssh -q -W %h:%p work

使用http代理进行ssh连接

你没有听错, OpenSSH还可以使用HTTP协议进行代理!!

曾经在腾讯任职时, 访问外网需要使用http代理, 并且2小时申请一次, 后来听到同事 说现在可以不用申请了, http代理的限制确实很令人烦恼, 尤其是你想要使用github 没有ssh协议, github几乎就失去了它的光辉.

也不知道当初的我怎么想到这样的方式, 从网络上查找, 还确实有这种方法, 这里也与大家分享一下, 假设HTTP代理是HTTP_PROXY=xxx.yyy.zzz:8080

那么你可以这么编写配置文件:

1
2
3
4
5
Host ali
User root
HostName 1.2.3.4
IdentityFile ~/.ssh/id_rsa_test
ProxyCommand=socat - PROXY:xxx.yyy.zzz:%h:%p,proxyport=8080

当然你也可以举一反三, 既然HTTP代理可以用, 那么类似socks4/5这样的代理 也是可以使用的.