linux使用autossh实现开机自启动端口映射

linux使用autossh实现开机自启动端口映射,第1张

1.在远程服务器上创建一个用于ssh连接的用户(ussh不需要登录权限)

2.登录刚刚创建的用户

3.生成ussh的秘钥:

确认秘钥是否已存在:

如果不存在,手动生成(回车三次):

4.把公钥添加到authorized_keys

5.重启ssh服务

6.复制秘钥到客户端服务器,并设置权限(这里使用scp复制,也可以用其他方法)

7.修改秘钥权限

8.在客户端服务器使用秘钥测试是否可以免密登录(如果不可以,请检查4,5,6步骤,如果可以登录则继续下一步)

9.出于安全考虑,需要取消远程服务器上的ussh账户的登录权限(root 账号下执行修改)

重启ssh服务:

10.在客户端服务器新建文件并

输入以下内容:(关于linux自定义系统服务的说明参考: https://www.jianshu.com/p/57aa4b66999c )

其中第六行为autossh映射指令,指令中10764为进程号,10768为本机80端口所映射远程服务器上的端口,这些映射的端口号需要自己设定,并且需要注意新的端口在远程服务器上是否已被占用,linux查看端口占用的指令netstat -nap | grep port,remote_ip是远程服务器ip

11.修改文件权限为664:

12.使服务生效(会开机自启动):

13.修改后重载服务:

14.手动启动服务

有主机A,eth0的IP为内网IP:192.168.56.101,eth1为公网IP:120.77.36.222。

有主机B,eth0的IP为内网IP:192.168.56.102。

可以通过外网访问主机A,主机B和主机A在同一个局域网。

想要访问外网访问主机B的Web服务,怎么办?答:使用端口映射。

sudo echo 1 >/proc/sys/net/ipv4/ip_forward

如果报错:-bash: /proc/sys/net/ipv4/ip_forward: Permission denied

那就切换到root用户:

sudo -i

echo 1 >/proc/sys/net/ipv4/ip_forward

要想永久有效,还要把/etc/sysctl.conf文件里边的net.ipv4.ip_forward的值改为1。

参考 linux下用用iptables做端口映射的shell 和 Ubuntu 14.04 端口映射 ,具体配置如下:

1、新建portmap.sh,内容如下:

2、添加执行权限

sudo chmod a+x portmap.sh

3、执行脚本

sudo ./portmap.sh

4、测试访问

curl 192.168.56.102 ,正常。

curl 192.168.56.101:3480 ,报错curl: (7) Failed to connect to 192.168.56.103 port 3480: Connection refused。

啊嘞,没有配置成功吗?莫非时因为端口没有打开?测试下3480端口:

telnet 192.168.56.101 3480 ,报错telnet: Unable to connect to remote host: Connection refused。

打开端口试试?

sudo iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3480 -j ACCEPT

然而,并没有什么用!

直接用浏览器访问 http://192.168.56.101:3480 ,访问正常。。。心中万马奔腾。。。curl有坑啊!

直接用浏览器访问 http://120.77.36.222:3480 ,访问正常。

5、如果不需要端口映射了,可以删除添加的规则

sudo iptables -t nat -vnL PREROUTING --line-number

sudo iptables -t nat -nL --line-number

sudo iptables -t nat -D PREROUTING 1

sudo iptables -t nat -D POSTROUTING 1

6、设置重启后依然有效

参考 《Linux配置SNAT上网》 。

有主机A,eth0的IP为内网IP:192.168.56.101,eth1为公网IP:120.77.36.222。

访问 http://192.168.56.101 正常,访问 http://120.77.36.222 失败。这是因为,电信会封锁80端口和8080端口。为了使外网也可以访问80端口的服务,可以把10180端口映射为80端口。

sudo iptables -t nat -A PREROUTING -p tcp --dport 10180 -j REDIRECT --to-ports 80

然后,就可以通过 http://120.77.36.222:10180 来访问80端口的服务。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8502724.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-17
下一篇 2023-04-17

发表评论

登录后才能评论

评论列表(0条)

保存