在系统启动时启动 autossh

在系统启动时启动 autossh

有没有办法autossh在启动时启动,以便在用户登录之前启动并设置 ssh 隧道?我将 Ubuntu 启动到终端,我希望该autossh过程在启动时自动启动,以便我可以通过 ssh 进入。

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

答案1

使用systemd这个可以做到(autosshmysql访问而创建的样本):

  1. nano使用或vim适当的编辑器创建 systemd 文件:

    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 [email protected] -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

来源

答案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

相关内容