如何临时配置SSH代理服务器

如何临时配置SSH代理服务器

我经常处于一个因某些愚蠢原因而阻止 TCP 目标端口 22 的网络中。使用完整的 VPN 来解决这个问题似乎并不实际,所以我有时使用 SSH 代理(通过ProxyCommand),有时使用伪代理-使用ssh -w any:any -p 443本地和远程ip命令行组合的VPN。

我使用 SSH 作为 Git 的后端,因此无法直接更改ssh命令行。

我正在寻找一种干净而好的方法来临时(例如通过简单的脚本或环境变量)通过具有可通过 TCP 端口 443 访问的 SSH 的服务器来联系 Git 服务器,例如 GitHub 和 Fedora distgit。我不坚持ProxyCommand-w作为方法。

答案1

您可以将ProxyCommandTunnelwith都存储TunnelDevice在您的ssh_config. Git 尊重您ssh~/.ssh/config.

此外,在 Fedora 25(openssh-7.3 或来自铜矿),您可以使用Include指令来使用配置中的单个字符修改您的配置,例如:

# ~/.ssh/config
#Include ~/.ssh/config_proxy
Host github.com
  # some standard configuration

# ~/.ssh/config_proxy
Host github.com
  ProxyCommand something

如果您愿意,您当然可以使用 simple 来编写此更改的脚本sed

答案2

使用最新版本的 OpenSSH 客户端,您可以将条件设​​置放入您的.ssh/config.因此,您可以ProxyCommand在条件节内设置该行。除了基于目标的条件(此处无用)之外,您还可以有一个包含运行外部命令的条件。使用命令来检测您是否位于需要代理的网络中,例如通过检查您的 DHCP 租约。

Match exec "awk /var/lib/dhcp/dhclient.eth0.leases '$2 == \"domain-name-servers\" {nsip=$3} END {exit(nsip == \"192.0\.2\.1\")}'"
    ProxyCommand …

相关内容