2009-06-18 4 views
16

シナリオSSHトンネリングチェーン

私はserver3のにSCPへのアクセスを取得しようとしていますが、サーバー3へのsshするために、サーバ1への唯一の公共SSHアクセスがあると、私は、SERVER1へのSSHするサーバー2へのSSHを持っています、次にsshをserver3に設定します。

最終的に私はWinSCPをlocalhost:8022にすることができ、それによってserver3にファイルアクセスできます。

私はsshトンネルを使用しようとしていますが、このシナリオではすべてのチュートリアルと質問を読んだことがありません。

私はWindows上でパテを使用しています。

本当に役立つ提案があります。ありがとうございました。

答えて

0

perlスクリプトソリューションhereがうまく説明されています。投稿のコメントも読んでください。

続きを読むSSH Agent Forwarding(perlスクリプトの投稿のコメントに記載されています)。

10

最初の解決策は、1つのローカルポートを各サーバーにトンネリングすることです。 SSHはポート22を使用するので、各SSH接続を使用してローカルポートを次のサーバーのポート22にトンネリングします。

PuTTYを開くと、PuTTY設定ダイアログが表示されます。編集する必要がある2つのカテゴリは、「セッション」と「接続→SSH→トンネル」です。

  1. PuTTYのコピーを開きます。これらの設定を使用します。

    • 接続をホストするために

      • ホスト名:
      • ポート:22
    • トンネルポート

      • ローカルモード
      • 送信元ポート:15500
      • 先:server2:22(セキュアシェルポート)

        ​​ PuTTY Configuration window after pressing Add

    さて、あなたはあなたのローカルマシン上のポート15500に接続するたびに、あなたの接続はserver2のポート22にトンネリングされています。

  2. PuTTYのコピーを開きます。これらの設定を使用します。

    • 接続をホストするために
      • ホスト名:localhost
      • ポート:15500
    • トンネルポート
      • ローカルモード
      • 送信元ポート: 15501
      • 先:server3:22(セキュアシェルポート)
  3. は、パテのコピーを開きます。これらの設定を使用します。

    • 接続をホストするために
      • ホスト名:localhost
      • ポート:15501
    • トンネルポート
      • ローカルモード
      • 送信元ポート: 15502
      • 先:server3:22(セキュアシェルポート)
  4. ポート15502localhostに接続するためのWinSCPを使用してください。 server3に直接接続しているかのように、接続がトンネルされます。

これがあなたのために働くかどうか私にコメントを教えてください。がんばろう!

+0

はい、私はこれが動作することを確認できます。私は2つ以上のSSHを連鎖させませんでしたが、おそらく2の場合には3つ以上のSSHを処理するでしょう。 –

0

答えは、私はトンネルを必要とするとき、私は、この設定を使用し、OpenSSHのではserver3の

19

からトンネルを逆にすることでした。これにより、手動でserver2とのトンネルを手動で開始することを心配することなく、直接sftp server3と入力することができます。

 
# ~/.ssh/config 

# to connect to server2, tunnel through server1 
Host server2 
ProxyCommand ssh server1 nc %h %p 

# to connect to server3, tunnel through server2 
Host server3 
ProxyCommand ssh server2 nc %h %p 

は、私は通常、 ProxyCommandとして ssh -oCiphers=arcfour128,arcfour256,arcfour,blowfish-cbc -oControlMaster=no -oForwardX11=no -oForwardAgent=no -oPermitLocalCommand=no -oClearAllForwardings=yes server1 nc %h %pを使用し、より完全なものにします。外層用 aes/ 3des重いを使用しても点がありませんので、

  • トンネリングされたSSH接続は既に暗号化されています。 arcfourblowfishの方が高速です。
  • 残りの-o****設定はパラノイア外ですので、実際に奇妙な設定のHost server1スタンザがssh_configに追加されても何も壊れません。

同様に、プロキシコマンドplink -P %proxyport -pw %pass %[email protected]%proxyhost nc %host %portを使用するためにはPuTTYを構成することができ、それに応じて接続/プロキシの設定ペインでプロキシのホスト名/ポート/ユーザー/パスワードを設定します。 plinkと残りのPuTTYスイート(pscppsftpなど)は、PuTTYのグラフィカル設定で保存されたものをロードします。うまくいけば、WinSCPもそうです。

+0

これを実行しようとすると、「bash:nc:command not found」というメッセージが表示されます。 "nc%h%p"の場所にコマンドとポートを置く必要がありますか? – Zak

4

この方法は、開いているssh設定ファイルでproxycommandを使用する方法と似ています。

この方法の前提条件は、すべての中間(プロキシ)ホストによる公開鍵認証でPageantを使用する必要があります。そうしないと、点滅するカーソルで終わることになります。ページェント、PuTTYgenを鍵と公開鍵を参照について詳しく知ることができます。私たちが持っているSERVER01の場合> server03

- - > SERVER01 - > Server02の
http://the.earth.li/~sgtatham/putty/0.62/htmldoc/Chapter8.html#pubkey
http://the.earth.li/~sgtatham/putty/0.62/htmldoc/Chapter9.html#pageant

私たちは、この順
PuttyPCでアクセス4台のマシンを持っていますSERVER01

として//ポート [email protected] 22 // SSH
保存このセッション:
メインウィンドウ:パテは、セッションを保存しました
メインウィンドウ: [email protected] //ポート 22 // SSH
プロキシ設定ウィンドウ:についてはServer02の

としてタイプlocal // proxyコマンドplink -load server01 -nc %host:%port
保存このセッション

は、Server02のために我々は、セッションをパテが保存されています
メインウィンドウ:[email protected] //ポート22 // SSH
プロキシ設定パネル:server03我々はパテは、セッションを保存しているタイプlocal // proxyコマンドplink -load server02 -nc %host:%port
このセッションを次のように保存します。

これは、server03の保存セッションがserver02の保存セッションを呼び出し、server02の保存セッションがserver01セッションを呼び出すことを意味します。

+0

非常に良い解決策。 windows、putty、winscpと完全に統合されています。もし私ができるなら、私はそれを2倍upvoteします。 – helt

0

1台のサーバーを過ぎる必要がある場合は、このセットアップをWinSCPに直接行うのが簡単です。

シナリオ:コンピュータ> server1->サーバ2

1:サーバ2へ接続セットアップ

2:クリックして詳細設定]> [Connection(接続) - > Connectトンネル

3:SSHトンネルとセットを有効ホストtoサーバ1