在系统启动时启动autossh


15

有什么方法可以autossh在启动时启动,从而在用户登录之前启动并设置ssh隧道吗?我将Ubuntu引导到终端,我希望该autossh过程在启动时自动启动,因此可以ssh进入。

我尝试将命令添加到中/etc/rc.local,以及创建/etc/init/*.conf脚本。这些似乎都不起作用。


这是什么版本的Ubuntu?
乔治·乌德森

@乔治16.04 LTS。
ptf

Answers:


20

systemd可以使用此方法(autosshmysql访问创建示例):

  1. 通过创建一个systemd文件nanovim或选择适当的编辑器:

    sudo vim /etc/systemd/system/autossh-mysql-tunnel.service 
    
  2. 添加以下内容:

    [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 cytopia@everythingcli.org -p 1022
    
    [Install]
    WantedBy=multi-user.target
    
  3. 重新加载systemd

    sudo systemctl daemon-reload
    
  4. 启动Autossh服务:

    sudo systemctl start autossh-mysql-tunnel.service
    
  5. 在启用boot

    sudo systemctl enable autossh-mysql-tunnel.service
    
  6. 使用以下方法检查状态:

    sudo systemctl status autossh-mysql-tunnel
    

注意

但是,有关systemd和AutoSSH的注意事项很重要:-f(后台用法)已经暗示了AUTOSSH_GATETIME=0,但-f不支持systemd

因此,在这种情况下,systemd您需要利用AUTOSSH_GATETIME

资源


谢谢!我正在尝试这个,但是当我跑步时sudo service reverse-ssh-tunnel.service status,我得到了Loaded: not-found (Reason: No such file or directory)。现在进行研究:)
ptf

请不要sudo systemctl status reverse-ssh-tunnelsudo service reverse-ssh-tunnel.service status
乔治Udosen

2
我相信您的意思是autossh -i /home/<user>/.ssh/id_rsa -R 22222:localhost:22 <user>@<remote_host>
乔治·乌德森

2
我也需要添加-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no。也许我只需要其中之一,而没有单独测试它们。在这里找到此:stackoverflow.com/a/24689061/1211119。但是,当我查看tty1登录屏幕(引导至终端)时,该服务尚未创建隧道。如果我登录,该服务将启动。
ptf

2
有时您想在不同的用户上下文下运行。为此,请执行以下操作:添加User=username[Service]systemd文件中的部分。
Friederbluemle
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.