通过ProxyJumps给 ssh 设置 跳板机,实现穿墙

通过ProxyJumps给 ssh 设置 跳板机,实现穿墙

之前一文,《用frp 做反向代理,做一个ssh的跳板,解决某些原因出现卡死的情况》 使用frp 来做ssh 跳板,如果不想引入另外一个服务,用ssh 的 ProxyJumps 也可实现该功能(OpenSSH 7.3 及其以上版本,7.3以下的需要用ProxyCommand,略有不同)。

这种操作常用于内网穿墙,或者如上文那样绕过防火墙。

跳转参数ProxyJumps :-J

具体命令:

ssh username@目标机IP -p 22 -J username@跳板机IP:22

上面是使用一个跳板的命令,还可以设置两个(或者多个)跳板:

ssh username@目标机IP -p 22 -J username1@跳板机IP1:22,username2@跳板机IP2:22

跳板功能是实现了,但是这样使用会有点繁琐。

因为每次都要这样输入一长串,而且需要输入多次密码(一次跳板机器,一次目标机器),登录有点难受,如果设置成免密一键登录,那就方便了。

设置免密登录

设置免密登录,也即为设置为密钥登录了,先要生成密钥对(这个查阅ssh-keygen用法即可)。

1)生成密钥对放置在~/.ssh/下,如果用现成的则无视这步。

2)将生成的密钥对的公钥(id_rsa.pub)拷贝到远程机器上(跳板机和目标机都要),并把它加入到授权列表:

cat id_rsa.pub >> ~/.ssh/authorized_keys # 跳板机和目标机器都要执行

3)确保跳板机和目标机的ssh服务的配置,下面选项已经打开:

RSAAuthentication yes         # RSA认证
PubkeyAuthentication yes       # 公钥登

4)本机调整~/.ssh/config 文件,添加如下内容:

# 设置代理机器
Host proxy-host
    Hostname 10.10.10.1         # 跳板机IP
    User username               # 跳板机用户
    Port 22                     # 跳板机登录端口
    IdentityFile ~/.ssh/id_rsa  # 私钥文件

# 设置目标机器
Host xyz
    Hostname 10.10.10.2         # 目标IP
    User username               # 目标机用户名
    Port 22                     # 目标机端口
    ProxyJump proxy-host        # 也就是上面的那个代理host名字
    IdentityFile ~/.ssh/id_rsa  # 私钥文件

上面两个配置说明:

proxy-host 设置跳板机器免密登录;

xyz 设置目标免密登录,同时指定proxyJump,通过proxy-host 做跳板。

设置后,直接命令行: ssh xyz 便一键登录目标机器了,该登录经过了跳板的登录。

相对frp优缺点

优点:省去安装另一个服务,无需在跳板机和目标机安装frp,显得更加“绿色环保”;

缺点:如果有多个终端需要通过跳板,那么多个终端都需要各自设置config,多个终端的公钥都需要增加到远程服务器,前期会繁琐一点。

另外,frp 做代理,可以给FileZilla做跳板去操作目标机器;而直接配置ssh 跳板,我想给FileZilla配置下ssh 跳板,但没有找到相关配置,不知道是没有还是没有找到。

(全文完)

(欢迎转载本站文章,但请注明作者和出处 云域 – Yuccn

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注