在我的工作笔记本电脑上,如果我需要通过 SSH 连接到非工作机器,我需要通过代理服务器,但仅当我在工作网络上(在办公室或 VPN 上)时才需要。我通过在 SSH 配置文件中设置 ProxyCommand 行来执行此操作。但是,当我不在办公室或 WAN 上时,我不想使用代理。有没有一种简单的方法可以自动决定使用或不使用代理?
答案1
在您的 .ssh/config 中使用Match
关键字创建一个条件部分。
该Match
关键字采用不同的参数,其中之一是exec
允许您运行外部命令并使用该命令的返回值来决定本节是否适用。
您可以用它来运行一个脚本,检查任何可用于区分不同网络的网络设置。当需要 a 时,脚本需要返回 0 ;当不需要ProxyCommand
a 时,脚本需要返回任何非零值。ProxyCommand
以下是配置的示例:
Match host external-host.example.com exec /home/joe/bin/need-proxy
ProxyCommand /home/joe/bin/proxy-script %h %p