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

2022-03-10  本文已影响0人  南瓜pump

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

adduser ussh

2.登录刚刚创建的用户

su ussh

3.生成ussh的秘钥:
确认秘钥是否已存在:

ls -l ~/.ssh

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

ssh-keygen -t rsa -C "your_email@example.com"

4.把公钥添加到authorized_keys

cat .ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

5.重启ssh服务

service sshd restart(或者/etc/init.d/ssh restart)

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

scp ussh@remote_ip:~/.ssh/id_rsa /usr/share/utbin/rsa
chmod 600 /usr/share/utbin/rsa/id_rsa

7.修改秘钥权限

chmod 600 id_rsa

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

ssh -i /usr/share/utbin/rsa/id_rsa ussh@remote_ip

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

vi /etc/ssh/sshd_config
增加一行 DenyUsers ussh

重启ssh服务:

service sshd restart(或者/etc/init.d/ssh restart)

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

vi /lib/systemd/system/autossh-tcp.service

输入以下内容:(关于linux自定义系统服务的说明参考:https://www.jianshu.com/p/57aa4b66999c
其中第六行为autossh映射指令,指令中10764为进程号,10768为本机80端口所映射远程服务器上的端口,这些映射的端口号需要自己设定,并且需要注意新的端口在远程服务器上是否已被占用,linux查看端口占用的指令netstat -nap | grep port,remote_ip是远程服务器ip

[Unit]
Description=ut-autossh
After=network.target auditd.service
[Service]
TimeoutSec=infinity
ExecStart=/usr/bin/autossh -M 10764 -g -N -R 10768:localhost:80 -o ServerAliveInterval=20 -o ServerAliveCountMax=3 -i /usr/share/utbin/rsa/id_rsa ussh@remote_ip
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=no
RestartPreventExitStatus=255
Type=notify
[Install]
WantedBy=multi-user.target
Alias=autossh.service

11.修改文件权限为664:

chmod 664 /lib/systemd/system/autossh-tcp.service

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

systemctl enable autossh-tcp

13.修改后重载服务:

systemctl daemon-reload

14.手动启动服务

systemctl start autossh-tcp
上一篇下一篇

猜你喜欢

热点阅读