欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

ssh跳板登录懒人大法

程序员文章站 2022-04-25 21:29:52
...

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

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

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

1、通过ssh端口转发命令

在B的命令行输入

ssh -CfNg -L 8833:192.168.1.111:22 userc@192.168.1.111

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

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

ssh -p 8833 userc@123.456.789.110

就可以登录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文件,添加这么几行

Host Cserver【随意取名】
HostName 192.168.1.111
Port 22 【C机器的ssh端口】
ProxyCommand ssh -p 9022【B机器的ssh端口】 userb@123.456.789.110 nc %h %p

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

ssh userc@Cserver

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

3、无脑笨方法

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

ssh -t -p 9022【B机器ssh端口】 userb@123.456.789.110 "ssh userc@192.168.1.111"

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

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

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

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