自宅のコンピュータの〜/ .ssh/configに次のようなエントリがあります。
Host foo bar
ProxyCommand ssh -x -a -q gateway.example.com nc %h 22
どこ gateway.example.com
は、パブリックインターネットと内部ネットワークの両方に接続されている職場のサーバーです。ゲートウェイボックスは、/ etc/hostsのエントリを使用してfooとbarを解決します。
私の問題は、foo
の反対側にあるボックスに到達する必要があることです。それを「baz」と呼びましょう。 「baz」ホストは、fooが接続されている別のプライベートネットワーク上にありますが、「ゲートウェイ」が接続されているものではありません。
私はこれを使ってみました:
Host baz
ProxyCommand ssh -x -a -q gateway/example.com ssh foo nc %h 22
しかし、それはうまくいきません、そして私は私の深さから少し外れています。どうすればよいですか?
それは重要ではないと思いますが、Ubuntu 10でこれを行っています。
簡単です。
次のネットワーク設定を想定します。
次のような〜/ .ssh/configファイルを使用できるはずです。
Host foo bar
ProxyCommand ssh -x -a -q gateway.example.com nc %h 22
Host baz
ProxyCommand ssh -x -a -q foo nc %h 22
ここでの考え方は、SSHがが「foo」に到達する方法を知っているため、そこでSSHが成功するということです。そしてそこから、「nc」でbazを実行できます。また、「baz」の横にある内部プライベートネットワークに他のホストがある場合は、「Host baz」行に追加することができます。
これは基本的に、「ゲートウェイ」が「foo」へのゲートウェイであるのと同様に、ホスト「foo」を「baz」へのゲートウェイとして扱います。
晴れ?
Ghotiの答えについて:netcat("ssh ... nc %h 22"
)、OpenSSH 5.4以降、次のコマンドで直接実行できます:"ssh -W %h:22 ..."
。この方法では、netcatが正しい場所にインストールされているかどうかを心配する必要はありません。
ローカルコンピューターに保存されている秘密鍵を使用して、ローカル->ゲートウェイ->宛先sshのニーズに変更された秘密鍵パス、シェルユーザー名、ホスト名/ IPアドレスを指定して、このコマンドを入力します。
ゲートウェイ/ジャンパーボックスがルートハイジャックされた場合、プロキシ転送がエージェント転送よりも優先されることに注意してください。
Sudo ssh -i dest_private_key.pem -o "ProxyCommand ssh -W %h:%p -i gate_private_key.pem gate_user@gate_IP" dest_user@dest_IP
これは私が保護されたネットワークからインターネットに飛び移るために行うことです。
buildでラップトップを使用してコードを操作しています。 buildはインターネットアクセスから制限されているため、github.comからリポジトリを複製するには、まずtoolbox、これもインターネットにアクセスできません。しかし、インターネットのあるgwにはアクセスできます。
このような:
ぼくの .ssh/config
onbuild:
Host gw
ProxyCommand ssh -A -W %h:%p toolbox
Host github.com
ProxyCommand ssh -A -W %h:%p gw
説明。
git clone [email protected]:aRepo/There
機能します。晴れ?