根据当前网络使用ssh proxy命令


2

我想从家里或办公室通过笔记本电脑访问家用计算机。在办公室,我必须使用网关。为此,我proxycommand在自己.ssh/config的办公室中添加了一个工作正常的条目。但是,如果我想在家中使用它,则不要依赖于办公室网关。有没有办法使它自动化?

Answers:


3

是的,没有。

首先,没有。您无法在〜/ .ssh / config文件中放入任何内容,该文件会根据外部因素(例如您所使用的网络或文件是否存在等)使不同的设置处于活动状态。SSH的配置文件是静态文件。

现在是的。您可以“破解”某些东西。它可能不会非常漂亮,但是可能会起作用。

考虑ProxyCommand如何工作。它执行命令行,并用printf样式替换某些字符串。您可以在该命令行中输入登录名。例如,您的笔记本电脑中可能有类似的东西可以在办公室使用:

host athome
    ProxyCommand ssh -x -a -q gateway nc athome.dyndns.org 22

该命令启动一个ssh命令,该命令连接到gateway该服务器并在该服务器上启动netcat以连接到您的实际目标。好吧,您可以使用Shell脚本来代替运行ssh。例如,在您的.ssh/config文件中:

host athome
    ProxyCommand bin/customconnect athome.dyndns.org

您可以创建一个~/bin/customconnect脚本:

#!/bin/sh

if /sbin/ifconfig -a | grep -q 'inet 192\.168\.'; then
        nc $1 22
else
        ssh -x -a -q gateway nc $1 22
fi

然后,假设您在家中的网络启动192.168而办公室中的网络没有启动,则脚本将选择适当的ProxyCommand 。

如果您需要其他动态功能,例如根据网络选择其他主机名,则显然也可以将其添加到脚本中。

请注意,此解决方案并非没有成本。通常,SSH直接启动您的ProxyCommand。如果使用此解决方案,则在ssh启动外壳程序时,每个连接都会有一个额外的进程在运行,外壳程序又启动了另一个进程。

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.