内网穿透¶
配置内网穿透,用于ssh连接到一个没有公网ip的机器,有以下机器
机器 | 位置 | 地址 | 用户名 |
---|---|---|---|
A | 公网 | 49.232.142.100 | root |
B | 内网 | 127.0.0.1 | root |
1.在A上开启端口转发
Info
- GatewayPorts:是否允许远程主机连接本地的转发端口。默认值是"no"。
- sshd(8) 默认将远程端口转发绑定到loopback地址。这样将阻止其它远程主机连接到转发端口。
- GatewayPorts 指令可以让 sshd 将远程端口转发绑定到非loopback地址,这样就可以允许远程主机连接了。
- "no"表示仅允许本地连接,"yes"表示强制将远程端口转发绑定到统配地址(wildcard address),"clientspecified"表示允许客户端选择将远程端口转发绑定到哪个地址。
vim /etc/ssh/sshd_config
GatewayPorts
改成yes
systemctl restart sshd
Warning
机器A需要开放对应的端口,一般都需要在云主机控制台中进行配置
2.在B上配置SSH
- 生成SSH公钥
ssh-keygen -t 'rsa'
- 把公钥复制到A的机器中完成认证
ssh-copy-id root@49.232.142.100 # 输入机器A的SSH密码
3.测试
/usr/bin/autossh -M 0 -o "ExitOnForwardFailure=yes" -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -NR 123:localhost:22 root@49.232.142.100 -i /home/senseport0/.ssh/id_rsa
123:localhost:22
表示把主机A的123端口转发到本机22端口,即ssh端口
4.部署 如果需要服务一直运行,可以执行
nohup /usr/bin/autossh -M 0 -o "ExitOnForwardFailure=yes" -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -NR 123:localhost:22 root@49.232.142.100 -i /home/senseport0/.ssh/id_rsa >/dev/null 2>&1 &