私はしばしば愚かな理由でTCP宛先ポート22をブロックするネットワークにいます。この問題を解決するためにフルVPNを使用することは実用的ではないように見えたため、時にはSSHプロキシ(経由)を使用し、時には疑似プロキシProxyCommand
(ssh -w any:any -p 443
ローカルとリモートのコマンドip
ラインの組み合わせを使用するVPN)を使用しました。
ssh
GitのバックエンドとしてSSHを使用しているため、コマンドラインを直接変更することはできません。
私は、TCPポート443を介してSSHにアクセスできるサーバー(たとえば、単純なスクリプトや環境変数を介して)を介してGitHubやFedora distgitなどのGitサーバーに一時的に接続するためのクリーンで良い方法を探しています。私は方法にProxyCommand
固執しません。-w
答え1
Gitでは、ProxyCommand
とTunnel
withの両方を保存できます。TunnelDevice
ssh_config
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 …