ssh跳板登录懒人大法

有的时候出于安全考虑,真正的工作服务器是不对外提供ssh连接的,需要先登录一个跳板服务器,然后在跳板服务器上再ssh到工作服务器,每次都要输两遍ssh命令对于我这种懒人来说真是折磨啊,经过实验,总结三个一劳永逸大法。

现在假设有ABC三台机器,A是本地机器,B是跳板服务器(公网地址123.456.789.110),C是工作服务器(内网地址192.168.1.111).A可以访问B,但不能直接访问C,B可以直接访问C。

1、通过ssh端口转发命令

在B的命令行输入

具体参数不解释了,不懂的可以参考http://qubaoquan.blog.51cto.com/1246748/292497。这句话的意思是当我访问B机器8833端口时,其实是在访问C的22端口
 

以后就可以直接在A机器命令行输入

就可以登录C机器了,这里要注意的是此处用户名是B登录C的用户名,而ip地址是B的ip地址,要和普通的ssh登录做区分。

这种方法和ssh翻墙原理相同,各位想fXXk GFW的童鞋可以发挥想象力。。。

 

2、通过proxycommand+netcat

这种方法不需要对B和C进行任何操作,只需要对A机器上的ssh_config文件做些修改就可以了

proxycommand是ssh的内置功能,而netcat更是黑客们居家旅行杀人越货必备之良品,netcat详解参考这篇博客:http://blog.csdn.net/michael493439861/article/details/7445454

回到我们需求,一般的服务器上都默认装有netcat。我们首先修改A机器上的ssh_config文件,添加这么几行

 

 

然后在A机器的命令行输入

 

 

见证奇迹的时刻来了。。。

3、无脑笨方法

我们知道ssh是可以直接执行远程命令的,于是,在A机器命令行输入:

 当然这还是要输入两次ssh命令,没有任何技术含量。无脑懒人可以把这个在.bashrc里面alias一下,记住要source哦。

个人感觉方法2原理上其实是方法3和方法1的结合,通过proxycommand执行远程nc命令,而这个nc命令的作用是建立一个tunnel。

声明:如未作说明,则本文为 渣滓洞【解旻的博客】 原创。转载务必注明出处
注意:转载须保留全文,如需修改请联系作者

本文永久地址:http://xieminis.me/?p=257