为了安全起见,线上机器一般不会允许用户通过ssh直接登录,而是需要通过堡垒机(跳板机)跳转到目标线上机器,这样方便对权限控制的管理和访问操作的审计。不知道公司用的是哪款堡垒机产品,选择目标机器的过程异常繁琐。查看ssh的手册(manual)看到了-J选项,可以通过该选项指定ProxyJump然后直接登录到目标机器,命令如下:

ssh -J user@jump.tunzao.me:80 user2@a.tunzao.me

不过要scp文件到目标机器上就有点困难了(可以通过-o选项指定ssh_option,但是还没弄明白怎么指定),而且每次登录都输这么长一串字符串实在是难以忍受,减少敲击次数的一个方案是alias,另一个方案是编辑~/.ssh/config文件配置ProxyJump,指定某些机器通过堡垒机登录,格式如下:

### 堡垒机
Host jump
  HostName jump.tunzao.me
  Port 80
  User user

### 目标机器,通过堡垒机登录
Host a
  HostName a.tunzao.me
  ProxyJump  jump

这样就能通过 ssh user2@a 登录 a.tunzao.me 了,同时也能通过 scp afile.txt user2@a:~ 拷贝文件到 a.tunzao.me 上。Host指令后的 jump 同时可以用作ssh的别名,如果要使用用户 user 登录到 jump.tunzao.me 直接执行 ssh jump 即可。

原文


吞枣
406 声望5 粉丝

It works on my machine...