@TOC
外网的机器需要访问内网,正常情况下无法访问,需要通过 autossh 建立隧道从而建立连接。
假设 A 是内网,B 是公网
1、确保 A 能通过 ssh 连接上 B 机器
ssh root@B_ip
备注,这里需要通过公钥和私钥进行连接
查看 A 机的公钥
A 机操作:
[root@wk1 ~]# cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EA#######balilia#######balilia
将 A 的公钥放置到 B 机,vim 插入模式复制上面的公钥保存
B 机操作:
[root@iZwz9ir35kqtndn7ojffvpZ ~]# vim .ssh/authorized_keys
然后通过 ssh root@B_ip 确保能连接上,连接成功效果见下
A 机操作:
[root@wk1 ~]# ssh root@B_ip
Welcome to Alibaba Cloud Elastic Compute Service !
Activate the web console with: systemctl enable --now cockpit.socke
2、通过 autossh 连接
centos 安装 autossh
yum install autossh
建立端口映射连接,这里使用的目的是使得 B 机的 19394 映射到 A 机的 22 端口,也就是当访问公网 B 对应的端口 19394,相当于访问 A 机 22 端口
[root@wk1 ~]# autossh -M0 -fNR 19394:127.0.0.1:22 root@B_ip
3、确认端口映射成功
B 机操作
[root@iZwz9ir35kqtndn7ojffvpZ ~]# netstat -platn | grep LISTEN
tcp 0 0 127.0.0.1:19394 0.0.0.0:* LISTEN 27534/sshd: root
B 机操作:
增加以下配置
[root@iZwz9ir35kqtndn7ojffvpZ mitm]# vim /etc/ssh/sshd_config
Match User root
GatewayPorts yes
重启 ssh 配置使得其生效
[root@iZwz9ir35kqtndn7ojffvpZ mitm]# service sshd restart
Redirecting to /bin/systemctl restart sshd.service
重新杀掉 autossh 进程及重新创建 autossh 进程
A 机操作:
[root@wk1 ~]# ps -ef | grep autossh
root 115591 1 0 15:44 ? 00:00:00 autossh -M0 -NR 8080:0.0.0.0:8080 root@B_ip
root 121208 114250 0 15:45 pts/7 00:00:00 grep --color=auto autossh
[root@wk1 ~]# kill 115591
[root@wk1 ~]# autossh -M0 -fNR 0.0.0.0:8080:0.0.0.0:8080 root@B_ip
然后去 B 机查看,发现已经是对 0.0.0.0 开放
B 机操作:
[root@iZwz9ir35kqtndn7ojffvpZ mitm]# netstat -anplt | grep LISTEN
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 1943/sshd: root
查看 A 机:
[root@wk1 ~]# ps -ef | grep autossh
root 31418 419 0 09:01 pts/5 00:00:00 grep --color=auto autossh
root 120499 1 0 9月01 ? 00:00:01 autossh -M 19393 -NR 0.0.0.0:8080:0.0.0.0:8080 root@8.135.10.27
本人实际使用主要是通过 B 机的 8080 端口-->A 机的 8080 端口
然后 A 机配置容器端口映射到宿主机 A,即
docker run --rm -itd -v /var/docker/mitm:/var/app -p 8080:8080 --name python-mitm python:latest
怎么判断有没有映射成功
方法一:直接浏览器输入 B_ip:8080,效果反馈如图,可以对比访问不成功时 B_ip:12324(会一直转圈,没那么快响应)
方法二、容器里面启动的 8080 服务,当外面访问成功时会一直产生日志
参考:
https://199604.com/1485
http://www.huangwenchao.com.cn/2016/10/ssh-reverse-tunnel.html
https://www.cnblogs.com/kwongtai/p/6903420.html