私にとって、ネットワークは非常に「不透明」なものであり、SSH に関するチュートリアルをたくさん読んでも、ファイルを転送するための基本的なトンネルを作成する方法がわかりません。
構成は次のとおりです。
My Computer --[Internet]--> Bridge Machine --[Local Network]--> Final Machine
現在、私は次のことを行っています:
1) Connect to the Bridge Machine with :
ssh -X [email protected]
2) Connect to the Final Machine with :
ssh -X username@finalmachine
3) I copy the address of files I need (for example .../mydirectory)
4) Then I deconnect from the finalmachine with :
exit
5) I copy the files to the bridge :
scp -r username@finalmachine:/.../mydirectory .
6) I deconnect from the bridge with :
exit
7) I copy the files to my machine :
scp -r [email protected]:/.../mydirectory .
これはかなり複雑です。私の質問は基本的なものです。SSH トンネルを使用してこれを簡素化するにはどうすればよいでしょうか?
(また、各行が実際に何をするのかを理解し、魔法のように使用しないようにするために、記述する各コマンド ラインの意味を説明してください。さらに、ポート番号が使用されている場合は、完全にランダムな番号を選択できるのか、特定の番号を選択する必要があるのかを説明してください。)
答え1
SSH 設定ファイルを設定します。
~/.ssh/config
このファイルはさまざまな点で役立ちますが、最終的にはすべてを 1 つの手順で実行できるようになります。
まず、各マシンにエイリアスを設定します
Host bridge
User username
Host final
User username
これで、「ssh -X bridge」を使用して最初のマシンに接続できます。
次のステップでは、各マシンで netcat を実行して確認する必要があります (「which nc」を試してください)。次に、ProxyCommand を「最終的な」マシン構成で使用して、次のようにします。
Host final
User username
ProxyCommand ssh -CAYq bridge exec nc %h %p
このコマンドは、中央マシンを介してポート %p のホスト %h に必要なものを送信します (つまり、この接続が開いている限り、別のポートを介して他のアプリ データを送信できます)。
キーが設定されている場合は、パスワードのプロンプトも表示されません。設定されていない場合は、最初にブリッジのパスワード、次に最後のパスワードの入力を求められます。
これで、「ssh final」も動作するはずです。
scp -r final:/.../directory .