Answers:
是的,没有。
首先,没有。您无法在〜/ .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启动外壳程序时,每个连接都会有一个额外的进程在运行,外壳程序又启动了另一个进程。