通过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 )