有没有办法autossh
在启动时启动,以便在用户登录之前启动并设置 ssh 隧道?我将 Ubuntu 启动到终端,我希望该autossh
过程在启动时自动启动,以便我可以通过 ssh 进入。
我尝试将命令添加到/etc/rc.local
,以及创建/etc/init/*.conf
脚本。这些似乎都不起作用。
答案1
使用systemd
这个可以做到(autossh
为mysql
访问而创建的样本):
nano
使用或vim
适当的编辑器创建 systemd 文件:sudo vim /etc/systemd/system/autossh-mysql-tunnel.service
添加以下内容:
[Unit] Description=AutoSSH tunnel service everythingcli MySQL on local port 5000 After=network.target [Service] Environment="AUTOSSH_GATETIME=0" ExecStart=/usr/bin/autossh -M 0 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -NL 5000:localhost:3306 [email protected] -p 1022 [Install] WantedBy=multi-user.target
重新加载
systemd
:sudo systemctl daemon-reload
启动
Autossh
服务:sudo systemctl start autossh-mysql-tunnel.service
启用于
boot
:sudo systemctl enable autossh-mysql-tunnel.service
使用以下方式检查状态:
sudo systemctl status autossh-mysql-tunnel
笔记
然而,关于 systemd 和 AutoSSH,有一件重要的事情需要注意:-f (后台使用)已经暗示了
AUTOSSH_GATETIME=0
,但是却-f
不受支持systemd
。
因此,如果systemd
你需要使用AUTOSSH_GATETIME
来源
答案2
我-N
在命令中添加了一个以使其工作。-N
告诉 autossh 连接但不执行任何操作。没有它,我的 ssh 会话会先登录然后立即退出。我还将其设置为使用本地用户以及包含我的隧道规则的.ssh/config
文件 ( /home/myuser/.ssh/config
)。
# cat /etc/systemd/system/autossh.service
[Unit]
Description=AutoSSH service
After=network.target
[Service]
Environment="AUTOSSH_GATETIME=0"
User=myuser
Group=myuser
ExecStart=/usr/bin/autossh -N -M 0 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -i /home/myuser/.ssh/id_ecdsa_np remoteid@remote
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target