首页 » SSH » 正文

通过ssh转发实现稳定连接海外服务器

1、架构

2、说明

连接海外服务器网络非常的不稳定,这里我们通过某厂云私有网络的对等连接及iptables来实现稳定连接海外服务器。

3、实践

首先在上海区域购买一个私有网络(vpc),然后划分好网段,再购买一台服务器加入私有网络。同样的在香港区域再购买一个私有网络(vpc),然后划分好网段,再购买一台服务器加入私有网络。最后使用对等连接使香港vpc与上海vpc打通。这样上海云主机与香港云主机的内网打通。

在香港云主机部署一个tinyproxy作为代理,监听在10.168.0.2:8080。

在上海云主机加入如下防火墙:

iptables  -A FORWARD -s  hz_ip  -d 10.168.0.2 -p tcp -m tcp --dport 8080 -j ACCEPT
iptables  -t nat -A PREROUTING  -s  hz_ip  -d 192.168.0.2 -p tcp -m tcp --dport 8080 \
-j DNAT --to-destination 10.168.0.2:8080
iptables  -t nat -A POSTROUTING -d 10.168.0.2 -j SNAT --to-source 192.168.0.2

在北美、新加坡、韩国等机房的服务器上面加入防火墙,允许香港云主机访问其ssh端口(22)。

在公司跳板机加入防火墙,允许其访问上海云主机的8080端口。

在公司跳板机加入如下登录脚本:

系统CentOS 7

#!/bin/bash

export user=$USER
if [[ $1 =~ ([0-9]{1,3}\.){3}[0-9]{1,3} ]]; then
/usr/bin/ssh -A -o StrictHostKeyChecking=no -o "ProxyCommand=/usr/bin/nc \
--proxy sh_ip:8080 %h %p" -l ${user} ${1} -p22
else
   echo "ERR: $1 is not a ip!"
fi

系统CentOS 6

#!/bin/bash

export user=$USER
if [[ $1 =~ ([0-9]{1,3}\.){3}[0-9]{1,3} ]]; then
/usr/bin/ssh -A -o StrictHostKeyChecking=no -o \
"ProxyCommand=/usr/bin/nc -X connect -x sh_ip:8080 %h %p" -l ${user} ${1} -p22
else
   echo "ERR: $1 is not a ip!"
fi

保存登录脚本为login放到系统环境变量里面,例如,北美一个服务器ip为na_ip,直接执行:login na_ip。这样就可以登录北美服务器。

注意:

centos6与centos7登录脚本不同的原因为系统提供的nc不一样。centos6为nc,centos7为nmap-ncat。

在使用securecrt或者xshell时打开OpenSSH代理程序转发。

4、其他

利用我们在第三步搭建的上海云主机与香港云主机之间的专线,再加上iptables,我们可以实现向海外服务器快速分发文件,监控数据实时回传到大陆等工作。

scp也支持ProxyCommand功能。同ssh。可以仿照登录脚本,写个文件分发代理脚本。快速实现文件分发与回传。

发表评论