使用autossh 进行内网穿透
目录
- 前言
- 解决方案
- 干就完了
- 1.ssh的断链问题
- 2.自动输入密码
- 3.开始操练
- 1.准备一个内网的ubuntu电脑
- 2.准备一个云服务器
- 3.安全规则配置,不然访问不到端口
- 4.开始配置
- 总结
前言
最近有个需要远程一个在运行的机器人的需求,机器的接在4G路由器下,属于内网环境,4G路由器带宽有限
解决方案
- 1.端口映射
- 2.tv或者向日葵这种
- 3.ssh穿透
专门进入了华为B316的设置界面看了支持端口映射,但是只支持有线宽带这种,方案一ng
TV,之前试过,一次把系统搞的差不多gg,还有启动的时候需要接显示器好像,tv比较大,不推荐,试了下向日葵,有支持ssh的,但是要花钱,没钱,(ng)
ssh穿透,之前只是试过局域网内的穿透,没有试过真正的大网的,下面开始尝试
干就完了
1.ssh的断链问题
ssh会自己断掉,这个就很麻烦,查了下,大家都用autossh来代替ssh
例子:
autossh -M 5678 -CqTfnN -D 192.168.0.2:7070 freeoa@remote-host
-M为autossh参数, -CqTfnN -D 为ssh参数
参数解释:
| -M 5678 | 负责通过5678端口监视连接状态,连接有问题时就会自动重连 |
| -C | 启动数据压缩传输 |
| -q | 安静模式运行,忽略提示和错误 |
| -T | 不占用shell |
| -f | 后台运行 |
| -n | 配合 -f 参数使用 |
| -N | 不执行远程命令,专为端口转发度身打造 |
| -D 192.168.0.2:7070 | 指定一个本地机器 “动态的“ 应用程序端口转发,如果不加IP地址,默认只监听127.0.0.1 |
2.自动输入密码
用autossh之后,会提示输入远端的密码,我查了下,有用sshpass的,有用脚本的
我专门对比了下两个方式,还是用expect脚本实现,sshpass会一直弹窗让我输入密码,很不方便
脚本:
HOST="yourhostip" #目标服务器的IP或域名
USER="yourusername" #用户名
PASS="yourpwd" #密码ip
echo `date`
VAR=$(expect -c "
spawn /usr/bin/autossh -M 42228 -NTR 2228:127.0.0.1:22 $USER@$HOST
match_max 100000
while (1) {
expect \"*?assword:*\" {send -- \"$PASS\r\"}
}
")
echo "==============="
echo "$VAR"
3.开始操练
1.准备一个内网的ubuntu电脑
我这边有好多虚拟机和工控机,问题不大
2.准备一个云服务器
虽然我不喜欢给向日葵付9块钱

但是我买了个服务器,感觉赚到了

3.安全规则配置,不然访问不到端口
看动图

4.开始配置
- 在内网执行脚本之前手动测试下会不会成功
utry@utry:~$ autossh -M 62226 -NTR 2226:127.0.0.1:22 root@xxx.xxx.xxx.xxx
The authenticity of host 'xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx)' can't be established.
ECDSA key fingerprint is SHA256:ct/Ul07Bh8hrHR0oqGbW1DorltlNZQjbQKyEoafubmM.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'xxx.xxx.xxx.xxx' (ECDSA) to the list of known hosts.
root@xxx.xxx.xxx.xxx's password:
- 在服务器上配置端口转发

- ssh 测试下

搞定,执行脚本之后,测试稳定性,我有个端口测试了几天了,没啥事
总结
这个其实挺方便的,也不是很占带宽,用支持x11的东东,可以看到些界面啥的,可以设置到开机启动,这样就可以想啥时候调试就啥时候调试
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
