web-dev-qa-db-ja.com

ProxyCommandを使用して複数のホストを介してSSHを実行しますか?

自宅のコンピュータの〜/ .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でこれを行っています。

11
Graham

簡単です。

次のネットワーク設定を想定します。

example network setup

次のような〜/ .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」へのゲートウェイとして扱います。

晴れ?

13
ghoti

Ghotiの答えについて:netcat("ssh ... nc %h 22")、OpenSSH 5.4以降、次のコマンドで直接実行できます:"ssh -W %h:22 ..."。この方法では、netcatが正しい場所にインストールされているかどうかを心配する必要はありません。

13

ローカルコンピューターに保存されている秘密鍵を使用して、ローカル->ゲートウェイ->宛先sshのニーズに変更された秘密鍵パス、シェルユーザー名、ホスト名/ IPアドレスを指定して、このコマンドを入力します。

ゲートウェイ/ジャンパーボックスがルートハイジャックされた場合、プロキシ転送がエージェント転送よりも優先されることに注意してください。

SSHをサーバーにプロキシする単一のコマンド(ローカルコンピューターに両方の秘密キーを保持):

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 
1
openyk

これは私が保護されたネットワークからインターネットに飛び移るために行うことです。

buildでラップトップを使用してコードを操作しています。 buildはインターネットアクセスから制限されているため、github.comからリポジトリを複製するには、まずtoolbox、これもインターネットにアクセスできません。しかし、インターネットのあるgwにはアクセスできます。

このような:

SSH jumping schematic

ぼくの .ssh/config onbuild

Host gw
  ProxyCommand ssh -A -W %h:%p toolbox

Host github.com
  ProxyCommand ssh -A -W %h:%p gw

説明。

  1. 視点はbuildからです。他のサーバーには構成はありません。
  2. 最初に、gwに到達するには、toolbox
  3. 次に、github.comにアクセスするには、gw。内部的にSSHは前のルールを使用します。
  4. 結局、git clone [email protected]:aRepo/There機能します。

晴れ?

0
Jari Turkia