我使用反向 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 [email protected] -p 22
我想让它在网络启动时自动运行在这台机器上。
为了实现这一点,我考虑将其另存为:/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可以一步完成吗? (这很好,但不是必需的。)
总之:
- 理想情况下,我希望手动一步完成 A 和 B。
- 我需要受限制的客户端 -> 中间人
autossh
连接是全自动的。
答案1
好的,终于可以工作了。详细信息在这个问题中: 通过 SSH 反向隧道的远程桌面替代 TeamViewer
总之:
在桌面上(将获得支持):
su -l -c "autossh -M 5234 -N -f -R 1234:localhost:22 [email protected] &" username
在笔记本电脑上(提供支持):
me@laptop:~/.ssh$ 纳米配置
Host family_desktops
ProxyCommand ssh middleman_fqdn nc localhost %p
User admin
PasswordAuthentication no
IdentityFile ~/.ssh/my_id_rsa
然后我只需一步连接到“远程桌面”:
我@笔记本电脑:~$ ssh family_desktops -p 1234