有人能给我指出一个好的(一步一步的)资源方向,以便在启动时使用 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
答案1
这就是我用的。
使用远程计算机上的 ssh-keygen 创建隧道私钥/公钥。系统将提示您输入密码。您可以按 Enter 忽略密码问题,但不建议这样做。这意味着远程计算机上的任何人都可以建立与您的本地计算机的 SSH 连接,而无需输入密码(请参阅“使用带密钥的 SSH”部分)。
在遥控器上安装公钥[电子邮件保护].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
然后运行:
sudo systemctl daemon-reload
sudo systemctl enable tunnel
sudo systemctl start tunnel