在系统启动时启动 autossh

ptf*_*ptf 19 ssh startup autossh 16.04

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

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

Geo*_*sen 25

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

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

    sudo vim /etc/systemd/system/autossh-mysql-tunnel.service 
    
    Run Code Online (Sandbox Code Playgroud)
  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
    
    Run Code Online (Sandbox Code Playgroud)
  3. 重新加载systemd

    sudo systemctl daemon-reload
    
    Run Code Online (Sandbox Code Playgroud)
  4. 启动Autossh服务:

    sudo systemctl start autossh-mysql-tunnel.service
    
    Run Code Online (Sandbox Code Playgroud)
  5. 启用于boot

    sudo systemctl enable autossh-mysql-tunnel.service
    
    Run Code Online (Sandbox Code Playgroud)
  6. 检查状态:

    sudo systemctl status autossh-mysql-tunnel
    
    Run Code Online (Sandbox Code Playgroud)

笔记

然而,关于 systemd 和 AutoSSH 有一件重要的事情需要注意:-f(后台使用)已经暗示了AUTOSSH_GATETIME=0,但是-f不支持systemd.

所以在systemd你需要利用的情况下AUTOSSH_GATETIME

来源

  • 我还需要添加`-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no`。也许我只需要其中一个,还没有单独测试它们。在这里找到:/sf/answers/1728234301/。但是,当我查看 tty1 登录屏幕(我启动到终端)时,该服务尚未创建隧道。如果我登录,服务就会启动。 (3认同)
  • 我相信你的意思是`autossh -i /home/<user>/.ssh/id_rsa -R 22222:localhost:22 <user>@<remote_host>` (2认同)
  • 有时您希望在不同的用户上下文下运行。为此:将“User=username”添加到 systemd 文件的“[Service]”部分。 (2认同)