如何透过SSH代理穿越跳板机
2016-05-11 09:57
399 查看
一般公司为了安全起见,线上服务器都无法直接访问,必须通过一台跳板机来访问。比如要访问机器webserver01,则必须先ssh到跳板机gateway,然后再ssh到webserver01机器。这样做自然可以减少***面,但是每次去webserver01机器执行命令,或者上传文件的时候都要两次ssh,对线上的调试和监控效率影响很大。
通过Proxycommand+Netcat
前提条件本机、跳板机、目标机器三者已经做过公钥认证(如果不做密钥认证就会提示分别输入跳板机和目标机器的密码,需要多输入两次密码比较繁琐)跳板机已安装Netcat
安装NetcatCentOS
yum install nc配置本机ssh config
vim ~/.ssh/config Host webserver01 #主机别名也可写成IP HostName 192.168.111.102 #目标机域名或IP地址 User root #SSH用户名 Port 22 #SSH端口 ProxyCommand ssh -q -p 22 root@192.168.119.101 nc %h %p IdentityFile ~/.ssh/id_rsa #登陆跳板机的私钥所在位置原理分析通过ProxyCommand,可以在开启ssh之前执行一个命令打开代理隧道,这个命令
nc %h %p意为在跳板机上使用nc开启了远程隧道。
ProxyCommand参数中的-q是为了防止和跳板机的ssh连接产生多余的输出,比如不加-q就会导致每次断开连接的时候会多一句
Killed by signal 1.
通过SSH -W
参数(推荐)
此方法不用跳板机上额外安装NC。前提条件本机、跳板机、目标机器三者已经做过公钥认证(如果不做密钥认证就会提示分别输入跳板机和目标机器的密码,需要多输入两次密码比较繁琐)配置本机ssh config
vim ~/.ssh/config Host gateway HostName 192.168.119.101 User root Host webserver01 #主机别名也可写成IP HostName 192.168.111.102 #目标机域名或IP地址 User root #SSH用户名 Port 22 #SSH端口 ProxyCommand ssh -q -W %h:%p gateway IdentityFile ~/.ssh/id_rsa #登陆跳板机的私钥所在位置原理分析通过ProxyCommand命令就会先和gateway建立ssh连接,并把这个中间连接当作一个代理使用。
ProxyCommand参数中的-q是为了防止和跳板机的ssh连接产生多余的输出,比如不加-q就会导致每次断开连接的时候会多一句
Killed by signal 1.
测试
在本地机器的命令行输入ssh root@webserver01见证奇迹的时刻来了,SSH会直接登陆到远端WEB服务器。
一些高级用法
ssh webserver01 "sudo tcpdump -s 0 -U -n -i eth0 not port 22 -w -" | wireshark -k -i -这条命令在远端调用tcpdump抓包,通过管道传回本地,然后让wireshark抓包,就达到了实时抓包的效果了。这比原来的抓包存储到pcap文件中,然后两次scp传回来要快很多。
参考文档
http://www.google.com https://www.robberphex.com/2015/09/426 http://xieminis.me/?p=257 http://feiyang.me/2013/03/ssh-cross-gateway/相关文章推荐
- 小心服务器内存居高不下的元凶--WebAPI服务
- 运维入门
- 利用开源软件打造自己的全功能远程工具
- dns。dhcp,ftp
- Linux5.9无人值守安装
- 数据中心和云未来的十二大趋势
- 用vsftp快速搭建ftp服务器
- Linux快速构建apache web服务器
- 服务器监控策略浅谈
- 如何降低服务器采购成本 原理分析
- 建议的服务器分区办法
- 服务器托管六大优势分析
- Erlang实现的一个Web服务器代码实例
- SQL Server 2005中更改sa的用户名的方法
- 服务器技术全面解析
- 保护DNS服务器的几点方法小结
- 我国成为全球第二大服务器消费国
- 服务器 安全检查要点[星外提供]
- 服务器应用自动重新启动IIS批处理[原创]_DOS/BAT_脚本之家