![如何使用 systemd 在 Ubuntu 启动时启动和维护反向 SSH 连接?](https://linux22.com/image/1024333/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20systemd%20%E5%9C%A8%20Ubuntu%20%E5%90%AF%E5%8A%A8%E6%97%B6%E5%90%AF%E5%8A%A8%E5%92%8C%E7%BB%B4%E6%8A%A4%E5%8F%8D%E5%90%91%20SSH%20%E8%BF%9E%E6%8E%A5%EF%BC%9F.png)
我妈妈有一台小型笔记本电脑,在启动时需要通过反向 SSH 连接到服务器(这样我就可以随时提供帮助)。
我正在努力让连接在由 启动时持续下去systemd
。
我/reverse_SSH.sh
有类似这样的事情:
#!/bin/bash
while true; do
ssh -R 19123:localhost:22 [email protected]
sleep 1000
done
我/etc/systemd/system/reverse_SSH.service
有类似这样的事情:
[Unit]
Description=reverse-SSH
[Service]
Type=fork
ExecStart=/reverse_SSH.sh
[Install]
WantedBy=multi-user.target
当我运行 时sudo systemctl start reverse_SSH
,SSH 连接确实似乎发生了,并且可以在 的输出中看到服务器的 MOTD sudo systemctl status reverse_SSH
,但 SSH 连接似乎没有持续,我无法使用类似 的命令访问服务器上的机器ssh sonnyboy@localhost -p 19123
。
我做错了什么?谢谢!
答案1
我更愿意使用autossh
此类服务的软件包。因此首先安装它:
sudo apt update && sudo apt install autossh
然后通过在目录中创建一个新文件来为您的连接创建配置条目/etc/ssh/ssh_config.d/
。我们称之为reverse.ssh.www.example.org.conf
。以下是一个例子:
sudo nano /etc/ssh/ssh_config.d/reverse.ssh.www.example.org.conf
# This file is loaded by /etc/ssh/ssh_config
Host reverse.ssh.www.example.org
HostName www.example.org
IdentityFile /root/.ssh/your_passles_id_rsa
User mum
Port 22
RemoteForward 19123 127.0.0.1:22
GatewayPorts yes
Compression yes
- 请注意,SSH 密钥由 root 用户拥有,root 用户将通过我们的服务管理连接。
- 最后两个选项不是强制性的。
最后创建服务:
sudo nano /etc/systemd/system/reverse-autossh-www-example-org.service
[Unit]
Description=Keeps a resident tunnel to www.example.org open
#After=network.target
After=network-online.target
[Service]
User=root
ExecStart=/usr/bin/autossh -M 0 -N -q -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" reverse.ssh.www.example.org
ExecStop=/usr/bin/killall -s KILL autossh
#ExecStop=/bin/kill $MAINPID
Restart=always
RestartSec=3
#Environment=AUTOSSH_GATETIME=0
[Install]
WantedBy=multi-user.target
启用并启动服务:
sudo systemctl daemon-reload
sudo systemctl enable reverse-autossh-www-example-org.service
sudo systemctl start reverse-autossh-www-example-org.service
过去两年来,我一直使用这种配置来解决类似的任务 - 效果非常好。不过,这里有一些参考: