公司连上远程游戏服需要先ssh登到跳板机,再在跳板机上ssh到远程,不能直连,如:
自己的系统(MacOS)===>跳板机===>远程服务器。
1.跳板机和远程服务器是Linux,远程服务器有python2.5(太旧了)。
都有ssh、scp,但远程服务器不能用ssh、scp连到跳板机。跳板机不能用ssh和scp连到自己的。
系统。也就是说只能正向不能反向。
2.自己的系统有perl5.1、python2.7.5、ssh、scp等各种UNIX必备。
3.跳板机能用的命令不多,能访问的目录只有自己的home目录。
4.远程服务器有运维监控着,不能乱搞乱开监听端口开服务。
困难
====
现在的效率比较低的是,有很多的批量可以做的事,比如在N台服务器执行一样的一系列命令,。
传文件N个这些服务器,从N个服务器拉特定的日志文件等,因为隔着一台跳板机,不能很轻易的。
在自己的系统上搞个脚本自动执行这些重复繁琐的任务。
目前的解决方案
==========
secureCRT脚本。
用secureCRT的Session会话可以一键点击连到远程服务器,secureCRT脚本还可以调用这些预建好的Session自动打开Session然后做跑一些命令(并能自动输入密码)。
但是有时候用得很吃力,有时要打开远程服务器的Session去做,有时如果涉及多个远程的Session,为了不打开太多,就用跳板机的Session用ssh连各个服务器执行各个远程服务器的命令。
传文件也是,比如上传一个文件,secureCRT脚本要执行本地的scp传到跳板机,然后打开跳板机的Session,执行scp拷到远程服务器。
虽然已经封装好了很多函数,用起来比较方便了,但还是免不了打开这个那个Session,在这个那个Session里执行各种命令的状况。
所以想简化这个过程,“绕过”这个跳板机。
在本地写脚本,能操作到远程的服务器并执行一些命令。
(既然跳板机可以ssh命令到远程服务器执行一个命令就收工,那本地系统上可以用ssh命令到跳板机执行[前面那段ssh到远程服务器执行命令的命令]?但这貌似有点复杂,尤其是两次都要输密码,甚至执行的命令本身也要输密码并且又考虑安全的情况下)。
寻找解决方法
==========
网上找到了fabric和(R)?ex,前者是Python实现的,后者是perl实现的。
但貌似两者只有在“直连"服务器时才能用,猜测也是在实现了ssh命令的连上某服务器执行命令的功能基础上做了封装。
貌似ssh有本地端口转发,但不太会用,不知能不能结合上fabric或者Rex,在不在跳板机和远程服务器作太多“手脚”的情况下,完成本地和远程方便的交互。
跳板机怎么用
使用SSH登录服务器有两种方法:用户账号登录和使用公钥登录。
直接使用以下命令
另外可以配置主机别名,这个和使用公钥登录差不多,区别是无需指定公钥地址而已,这里就不重复了。
方法一:(在命令行中指定私钥文件)
方法二:(使用ssh-agent代理)
方法三:(在SSH配置中指定私钥文件)
使用跳板机登录的方法在我看来不算其它登录方式,它用到的还是本章的内容。
如果我把这三种方法都用了呢?即既使用了-i~/.ssh/id_rsa_server,又使用了ssh-agentssh-add~/.ssh/id_rsa_server,还使用了域名主机配置IdentityFile~/.ssh/id_rsa。
答案很简单,SSH会先使用-i~/.ssh/id_rsa_server,如果登录失败,则使用ssh-agentssh-add~/.ssh/id_rsa_server,找不到合适的公钥的话,再使用IdentityFile~/.ssh/id_rsa,还是失败的话则提示输入密码,如果允许账号登录的话,否则整个登录失败。
还没有评论,来说两句吧...