跳转至

内网穿透

配置内网穿透,用于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 &
或者配置使用Ubuntu18 开机启动开机自动启动

评论