linux下解决跳板机ssh登录与传输问题记要

公司开发环境限制,需要先登录跳板机,再ssh登录到真正需要操作的服务器上,而且跳板机的登录密码还需要一个随机token码,甚是麻烦呀.在windows下有SecureCRT,比较方便好用,虽说也有linux版本,但有30天的限制,也不好破解,毕竟都用了linux,那还是要尊重一下知识产权的.本文就是记录有没有什么好方法,在linux下也能方便地解决跳板机登录ssh的问题记要.

通过几番搜索,找到一个好办法,那就是利用ssh的controlmaster特性,结合 ~/.ssh/config 的配置来使用,但还未达到最终目的,可以直达真正想要到达的服务器,后续再找办法吧.

编辑 ~/.ssh/config 文件,示例内容如下

Host a.b.com XXX
    HostName a.b.com
    User AAA
    
Host *
    ServerAliveInterval 300
    ControlMaster auto
    ControlPath ~/.ssh/master-%r@%h:%p
    ControlPersist yes

通过controlmaster特性,只需要第一次登录时输入密码,后续再连接时无需密码直接就连接上了.第1行与第2行中的a.b.com替换成真正的域名或IP地址,第1行的XXX改为你想要用的别名,毕竟方便记忆,还少敲几下键盘,还是好的.第3行的AAA替换成真正登录时所使用的用户名.第9行的host *表示它所设置的选项将适用到所有连接上.

几个有用的controlmaster命令

###第一次建立master连接时可采用以下命令,会在建立完master连接后回到当前本机的终端下; 当然,如果你就是想留在ssh机上,那就正常的命令连接就好了
ssh -Nf XXX
  
### 检查master连接是否建立
ssh XXX -O check
  
###结束master连接
ssh XXX -O exit

传输文件的解决办法:zssh

在自己的linux机上,如ubuntu等,安装上zssh,先用zssh登陆上跳板机,再在跳板机上ssh到相应服务器,然后ctrl+@,就可以相应上传下载文件了,先记着,后续再补详细资料。

上传本地文件到服务器
在服务器上先cd至相应要放上传文件的目录之后

rz -bye                 //在远程服务器的相应目录上运行此命令,表示做好接收文件的准备

ctrl+@                  //运行上面命令后,会出现一些乱码字符,不要怕,按此组合键,进入zssh
zssh >                  //这里切换到了本地机器

zssh > pwd           //看一下本地机器的目录在那

zssh > ls               //看一下有那些文件

zssh > sz 123.txt   //上传本地机器的当前目录的123.txt到远程机器的当前目录

下载服务器文件到本地
sz filename             //在远程机器上,启动sz, 准备发送文件

                               //看到一堆乱码,不要怕,这会按下组合键
ctrl+@
zssh > pwd              //看看在那个目录,cd 切换到合适的目录

zssh > rz -bye                 //接住对应的文件

相关推荐