linux通过ssh实现反向连接
来源:互联网 发布:c语言数据结构教程 编辑:程序博客网 时间:2024/05/18 00:46
1.问题描述:
有时,我们会想在局域网外访问局域网内的机器。这时,我们可以使用SSH的反向连接来实现。
设备A:位于局域网内,可以访问代理服务器B。 假设该设备IP:A.A.A.A,用户名userA
设备B:位于局域网外,作为访问设备A的代理服务器,不可访问A。假设该设备IP:B.B.B.B,用户名userB
设备C:想要访问A的设备,可以访问B,无法直接访问A。假设该设备IP:C.C.C.C,用户名userC
2.目标:设备C可以通过SSH访问局域网内设备C
3.条件:
三台设备都需要包含SSH客户端,A,B设备需要包含SSH服务端。
4.实现步骤:
4.1.在A设备上建立A设备到B设备的反向代理:
ssh -fCNR <port_b1>:localhost:22 userB@B.B.B.B
例如:ssh -fCNR 10000:localhost:22 userB@B.B.B.B (此时B设备上已经可以通过ssh -p 10000 userA@localhost连接到设备A)
<port_b1>:建立在B机器上,用来代理设备A机器22端口的端口。
userB@B.B.B.B :B机器的用户名和IP地址。
4.2.在B设备上建立B设备到A设备的正向代理:(这样做的目的是为了实现和外网的通信)
ssh -fCNL *:<port_b2>:localhost:<port_b1> userB@localhost
例如:ssh -fCNL *:10001:localhost:10000 userB@localhost
<port_b2>:用作本地转发的端口,用来和外网通信,并将数据转发到<port_b1>,实现从其他机器可以访问。
*代表可以接受来自任意机器的访问。
4.3.现在C机器上可以通过B机器SSH到A机器
ssh -p<port_b2> userA@B.B.B.B
5.注意事项
5.1.参数介绍
-f 后台运行-C 允许压缩数据-N 不执行任何命令-R 将端口绑定到远程服务器,反向代理-L 将端口绑定到本地客户端,正向代理
5.2.自动连接和防断线脚本
如果你想让连接长期保持,可以写个脚本来保证因为网络原因断线的话可以自动重连。
先说Windows平台,用plink -pw参数可以指定密码,所以只要写个批处理:
:1plink -pw “password” -D 7070 user@serveripgoto 1
这样应该就可以解决大多数问题造成的断线。
Linux平台ssh默认不支持把密码作为参数,不过有sshpass可以搞定http://sourceforge.net/projects/sshpass/files/latest/download
下载,解压,编译,把可执行文件拷贝到合适的目录,执行命令格式如下:
sshpass -p "password" ssh -D <port> user@serverip
貌似ubuntu下可以直接apt-get install sshpass编写脚本autossh.sh,内容如下:
#!/bin/bashwhile [ '' == '' ]dossh_d_process_num=`ps aux|grep -E 'ssh \-' |grep -v grep |wc -l`if [ "$ssh_d_process_num" == "0" ]; then /home/user/sshpass -p "password" ssh -D 7070 user@ServerIP &fisleep 300done
执行这个脚本就可以了。sleep 300代表300秒查看一次,可以根据需要调整。
5.3.如果设备A重新启动了,则只需要重新配置设备A即可。
- linux通过ssh实现反向连接
- Linux下通过SSH实现远程连接
- ssh反向连接和简单实现
- ssh反向连接和简单实现
- 公网ssh反向连接内网Linux
- 公网ssh反向连接内网Linux
- windows 通过ssh连接linux
- 通过反向ssh连接+socks5+web-proxy来访问内网资源
- SSH反向连接
- ssh反向连接
- ssh反向连接
- SSH以及反向连接
- SSH反向连接
- SSH反向连接及Autossh 实现外网访问内网树莓派
- 使用ssh反向连接访问内网linux机器
- windows通过ssh连接linux机器
- Linux SSH 通过密匙连接主机
- 通过SSH连接VirtualBox中的linux
- @Autowired
- python正则表达式相关总结
- VC unicode下Cstring转char*
- SQL Server 根据分隔符截取指定位置的子字符串
- HDU1869六度分离(最短路径)
- linux通过ssh实现反向连接
- FFMPEG研究: Android下录制/dev/video0设备h264编码保存为mp4格式视频
- 【WIFI】[esp8266]-上电引脚初始化状态问题
- React Native学习实践:动画初探之加载动画!
- python同时给多个变量赋值
- 杭电1272(并查集)判断环
- all warnings being treated as errors报错解决
- 本征向量、PCA和熵的基础教程
- Centos6.8 x64位一键安装google-chrome-stable浏览器