网络启动时自动启动 autossh 反向隧道

Mou*_*inX 7 ssh ssh-tunneling bash-script

我使用反向 ssh 隧道从我的家用 PC 通过我拥有的 Internet 服务器连接到受限客户端(我也拥有)。

我有一个脚本,可以将受限客户端设置为该 ssh 隧道的中间人部分。如果我手动执行脚本,它工作正常。这里是:

#!/bin/sh
autossh -M 12399 -oPubkeyAuthentication=yes -oPasswordAuthentication=no -oLogLevel=error  -oUserKnownHostsFile=/dev/null -oStrictHostKeyChecking=no -i ~/.ssh/named_id_rsa -R 12345:localhost:22 client@example.com -p 22
Run Code Online (Sandbox Code Playgroud)

我想让它在这台机器上的网络启动时自动运行

为了做到这一点,我想把它保存为:/etc/network/if-up.d/reverse_ssh_tunnel.sh

我知道我必须删除“~/”并将私钥的完整路径指定为 home/username/.ssh/named_id_rsa。

我怀疑我必须使用 su -cmy_script_name用户名,但我无法让它工作。解决我的这部分问题是最重要的。它需要全自动且无人值守。

要从我家连接,我执行两个手动步骤:

A. ssh home -> 中间人
B. ssh 中间人 -> 受限客户端

A&B可以一步完成吗?(这很好,但不是必需的。)

总之:

  1. 理想情况下,我想手动一步完成 A 和 B。
  2. 而且我需要autossh完全自动的受限客户端-> 中间人连接。

Mou*_*inX 5

好的,终于可以运行了。详细信息在这个问题中: Remote desktop over SSH reverse tunnel to replace TeamViewer

总之:

在桌面上(将获得支持):

su -l -c "autossh -M 5234 -N -f -R 1234:localhost:22 user@middleman.com &" username
Run Code Online (Sandbox Code Playgroud)

在笔记本电脑上(提供支持):

me@laptop:~/.ssh$ nano 配置

Host family_desktops
  ProxyCommand ssh middleman_fqdn nc localhost %p
  User admin
  PasswordAuthentication no
  IdentityFile ~/.ssh/my_id_rsa
Run Code Online (Sandbox Code Playgroud)

然后我只需一步连接到“远程桌面”:

me@laptop:~$ ssh family_desktops -p 1234