ssh的反向代理
记录一下因为项目上需要一个公网ip的端口接收数据,但是目前环境并不是公网ip,所以就只能用到ssh的反向代理
ssh 反向代理 - 不拨牙 - 博客园 (cnblogs.com) 参考的是这个博客
因为是临时的使用就不去研究这么多原理了,正好之前想要在外访问家里的服务器,真不错,学有所用了。
总结一下:
准备 一个公网ip (因为我家是移动,搞不到公网ip,只能用腾讯云服务器提供的公网ip) 一台家用的机器
公网ip 称为A机器 ip 101.230.2.23 name:tengxun
家用电脑 称为B机器 ip 192.168.2.22 name:jiayong
首先安装ssh 和autossh
1.机器A上配置sshd
sudo vim /etc/ssh/sshd_config
配置GatewayPorts为yes
重启 sshd sudo service sshd restart
2.在B机器上输入ssh-copy-id tengxun@101.230.2.23 免密登录
3.在B机器上输入 autossh -M 23332 -NR 23333:localhost:22 tengxun@101.230.2.23 然后会运行卡住 然后在任意机器上运行 ssh jiayong@101.230.2.23 -p 23333 就可以进入B机器了
注意:这里面的23332 和23333在A机器必须允许在防火墙打开 ,如果是腾讯云或者阿里云必须要在安全组里面添加上,否则不会通的。可以通过以下两条命令来开放端口
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --zone=public --list-ports
上面测试成功就说明两边已经通了
下面继续反向隧道自启动
sudo vim /etc/systemd/system/autossh.service 创建新的文件
里面内容为
[Unit]
Description=autossh
[Service]
ExecStart=/usr/bin/autossh -M 23332 -NR 23333:localhost:22 tengxun@101.230.2.23 -i /home/xxx/.ssh/id_rsa -o StrictHostKeyChecking=no
[Install]
WantedBy=multi-user.targe
然后在B机器运行
sudo systemctl daemon-reload
sudo systemctl enable autossh.service
sudo systemctl start autossh.service
sudo systemctl status autossh.service
以后开机的时候都会运行的。
这个功能也就这样结束了,还是挺好的。