0%

SSH穿越跳板机登录远程服务器

如果公司服务器处于外网,而出于安全方面的考虑,访问公司外网服务器时一般会通过跳板机(堡垒机)进行访问。

方式1

使用ssh分别登录:

1
2
3
4
# 先登录到跳板机
$ ssh -A username@192.168.0.3 # -A: 表示转发密钥,它会将本机的密钥转发到跳板机上,从跳板机登录目标机器时会使用该密钥
# 从跳板机上再登录目标机器
$ ssh username@10.0.1.10

方式2

使用ProxyCommand选项,一行命令直接登录到目标机器:

1
$ ssh username@10.0.1.10 -o ProxyCommand='ssh username@192.168.0.3 -W %h:%p'

命令有点复杂,推荐使用~/.ssh/config配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Host    proxy.machine
HostName 192.168.0.3
Port 22
User username
IdentityFile ~/.ssh/id_rsa
ProxyCommand none
CheckHostIP no
ForwardAgent yes
ControlMaster auto
ControlPersist 10m

Host 10.0.1.*
Port 22
User username
IdentityFile ~/.ssh/id_rsa
ProxyCommand ssh username@proxy.machine -W %h:%p

然后使用ssh 10.0.1.10登录目标机器。

多重跳板机

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Host    proxy1.machine
HostName 192.168.0.3
Port 22
User username
IdentityFile ~/.ssh/id_rsa
ProxyCommand none
CheckHostIP no
ForwardAgent yes
ControlMaster auto
ControlPersist 10m

Host proxy2.machine
HostName 1.2.3.4
Port 22
User username
IdentityFile ~/.ssh/id_rsa
ProxyCommand ssh username@proxy1.machine -W %h:%p
CheckHostIP no
ForwardAgent yes
ControlMaster auto
ControlPersist 10m

Host 10.0.1.*
Port 22
User username
IdentityFile ~/.ssh/id_rsa
ProxyCommand ssh username@proxy2.machine -W %h:%p