内网穿透

问题描述:
现在有三台机器:
star:中科院内网服务器,无法直接从外网访问,IP:172.16.0.*
jump:中科院跳板服务器,可以从内外网访问,但是只有端口22,IP:159.226.113.*
mine:家里的电脑,或PC或Mac,IP:不重要!ok?不重要!

那么,想从家里向服务器传数据,或者下数据怎么破?尤其不想手动做搬运工怎么破?

Mac & Linux

SSH访问

mine -> jump -> star

这样是带图形界面的,可以xeyes进行测试:

ssh -t -o ProxyCommand='ssh -Y [email protected].* -W 172.16.0.*:22' -Y [email protected].*

当然,通常我会在~/.bashrc建立一个alias,省的每次敲着一大串:

alias sjumpstar="ssh -t -o ProxyCommand='ssh -Y [email protected].* -W 172.16.0.*:22' -Y [email protected].*"

其中-t是指远程建立一个tty,-o ProxyCommand是设置设定远程代理执行命令的option,-Y是指建立信任的X11传输协议。

scp rsync传输文件

mine -> jump -> star

scp进行传输,少量传输还挺好,大量数据的备份不推荐:

scp -r -o ProxyCommand='ssh [email protected].* -W 172.16.0.*:22' [email protected].*:~/data ./data

其中-r指recursively递归复制,复制单独文件时可以拿掉。

rsync传输,老司机的同步命令,适合大量数据的备份,支持断点续传:

rsync -avPH -e "ssh -t -o ProxyCommand='ssh [email protected].* -W 172.16.0.*:22'" [email protected].*:~/data ./data

star -> jump -> mine

也很简单,反过来写:

scp -r -o ProxyCommand='ssh [email protected].* -W 172.16.0.*:22' ./data [email protected].*:~/data 
rsync -avPH -e "ssh -t -o ProxyCommand='ssh [email protected].* -W 172.16.0.*:22'" ./data [email protected].*:~/data

当然,也有很多其他方法,比如笨笨的zssh;以及操作复杂的ssh映射本地socks再通过Proxifier配置代理。

sshfs 挂载本地

最爽的难道不是将ssh映射到本地当成一块磁盘用吗?探索半天,一条命令足以:

sshfs [email protected].*:/ /mnt -o ssh_command='ssh -J [email protected].*'

随便拖拽copy开不开心?卸载的话右键弹出即可。

映射到本地

最简单的思路是这样的:先通过jump把star的22端口映射到本地12333(随便选,别被占用就行),再假装ssh、scp、rsync到本地的12333端口。只不过这样会留下一个ssh的后台,这个后台可以选择使用-f参数自动放在后台,用kill、htop等工具管理,也可以用screen不加-f,不用的时候手动终止。

映射端口:

ssh -N -f -L localhost:12333:172.16.0.*:22 [email protected].*

使用端口:

ssh zy@localhost -p 12333
scp -r -p 12333 zy@localhost:~/data ./data

一劳永逸的.ssh_config修改

上面说的那么多都需要手动设置一堆option或者有很多前置操作,但是如果学会了修改.ssh_config配置文件,一切都如丝般顺滑,完全体会不到自己在外网。当然,我还没学会,到家再做折腾。

frp 全能穿透

如果你在jump有较大权限,或者其防火墙没有ban掉你开端口的权力,恭喜你,你可以拥有一套豪华的frp穿透套餐。包括,自己建站、自建私有云,client端也随你说:iOS、安卓、Unix-like、windows都无缝访问。

Windows

一直认为Mobaxterm比Xshell好用很多,这里可以再次推荐下。首先,它是免费的(至少免费版够用);其次,内置cygwin为底层更加方便,所以以上命令直接写在Moba的local terminal里面就可以直接用,而且左边的简易文件管理器基本做到无缝衔接。最重要的,UI漂亮,可定制!

如果想保存这种设定以便经常访问,也很简单,新建ssh对话的时候有gateway的选项,把跳板服务器的信息填进去就可以了。

[图片上传失败...(image-efd28b-1550468828018)]

你可能感兴趣的:(内网穿透)