建立持久的 autossh 反向 ssh 隧道

spa*_*ots 4 ssh autossh

任何人都可以向我指出一个好的(逐步)资源的方向,用于在启动时使用 systemd 使用 autossh 设置反向 ssh 隧道吗?

我已尽力使用我在网上找到的资源来做到这一点,并成功地手动创建了反向 ssh 会话,但是还没有设法使用 systemd 使其自动化,以便我的“远程”系统可以重新启动而不会引起问题。

我正在尝试使用本教程建立持久的 autossh 会话,但是当我运行时,sudo systemctl enable autossh.service我不断遇到此错误:update-rc.d: error: cannot find a LSB script for autossh

任何帮助破译此错误或在 Ubuntu 20.04 上创建持久 autossh 会话的帮助将不胜感激。

autossh.service文件:

[Unit]
Description=Establish persistent SSH tunnel
Requires=ssh.service
Wants=network-online.target
After=network-online.target

[Service]
User=user
Group=usergroup
Environment=AUTOSSH_POLL=60 AUTOSSH_FIRST_POLL=30 AUTOSSH_LOGFILE=/var/log/autossh.log AUTOSSH_LOGLEVEL=7 AUTOSSH_GATETIME=0
ExecStart=/usr/bin/autossh -i /root/.ssh/id_rsa -R 3010:localhost:22 -o 'StrictHostKeyChecking=no' -o 'UserKnownHostsFile=/dev/null' -o 'PasswordAuthentication=no' -o 'PubkeyAuthentication=yes' -o 'ServerAliveInterval 60' -o 'ServerAliveCountMax 3' -o 'BatchMode=yes' user@myddnsservice -p2016
RestartSec=6
Restart=always

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

Sim*_*nks 8

这就是我用的。

在远程计算机上使用 ssh-keygen 创建隧道私钥/公钥。系统将提示您输入密码。您可以按 Enter 键忽略密码问题,但不建议这样做。这意味着远程计算机上的任何人都可以与本地计算机建立 SSH 连接,而无需输入密码(请参阅“使用带密钥的 SSH”部分)。

在远程 user@remote.hosts .ssh/authorized_keys 文件中安装公钥

通过手动尝试 ssh 命令进行测试,并确保反向隧道正常工作。

vi /etc/systemd/system/tunnel.service

[Unit]
Description=Maintain Tunnel
After=network.target

[Service]
User=localuser
ExecStart=/usr/bin/ssh -i ~localuser/.ssh/tunnel -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes -gnNT -R 22222:localhost:22 remoteuser@remotehost vmstat 5
RestartSec=15
Restart=always
KillMode=mixed

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

然后运行:

sudo systemctl daemon-reload
sudo systemctl enable tunnel
sudo systemctl start tunnel
Run Code Online (Sandbox Code Playgroud)

  • 效果非常好!非常感谢西蒙的帮助! (2认同)