.ssh / config ProxyCommand带有一个可变端口

Modified on: Sat, 30 Jun 2018 08:48:00 +0800

在我工作的环境中,我们使用隧道连接到各种服务器。例如,我将'ssh -p XXXXX username @ localhost'到达服务器。

如果端口始终相同,我可以这样做,我就完成了:

Host somehost
  User bryan
  Hostname localhost
  Port 12345
  ProxyCommand ssh -p 2218 bryan@first.server.com -W %h:%p

但是,如果隧道出现故障并重新启动,则使用的端口可以并且将会更改。这不是我有能力改变的 - 它是内置于基础设施中的。所以,我写了一个程序来查找当前端口。但我不知道如何:

a)运行该程序并使用%p变量的输出;要么
b)在first.server.com上运行cron作业,写出包含端口的文本文件,或设置环境变量等。

实际上,我想这样做。有可能吗?

Host somehost
  User bryan
  Hostname localhost
  Port `sh get_port_for_somehost.sh`
  ProxyCommand ssh -p 2218 bryan@first.server.com -W %h:%p

我现在唯一能想到的就是在我的笔记本电脑上运行一个程序,它在重新编写我的.ssh / config后再查询当前的端口,但我不想这样做。

作者:Gilles,Bryan

最佳答案

无法在配置文件中编写脚本来为端口号提取变量。

但您可以编写bash函数来获取端口并将其放置在正确的位置。例如,将以下内容放在~/.bashrc

function ssh-dynamic() {
  PORT=`sh get_port_for_somehost.sh`
  exec ssh -p "$PORT" somehost "$@"
}

其他配置可能保留在~/.ssh/config中。

作者:Gilles,Jakuje

相关问答

添加新评论