私は現在、日常的な作業を簡単にするためにLinuxシステムをセットアップしています。端末を使用してホストに移動できるようにSSHを設定したいと思います。 LocalForwardとProxyJumpについて読みました。目的は、最初のサーバーに接続し、それを介して接続をトンネリングしてから2番目のサーバーに接続することです(2番目のサーバーは最初のサーバーからのみ接続できる領域にあるため)。
今私がしたことは〜/.ssh/configファイルの次の部分です。
Host tunnel
HostName <firstServer>
IdentityFile ~/.ssh/example.key
LocalForward 9906 <secondServer>:22
User helloWorld
「ssh トンネル」を使用してサーバーに接続すると、最初のサーバーに正常に接続できるようになります。これで、telnetを使用して「telnet SecondaryServer 9906」を使用して2番目のサーバーを確認すると、そのサーバーでSSHが実行されていることがわかります。 「ssh localhost:9906」を使用して2番目のサーバーでSSHを試みると、ホスト名が解決されないというメッセージが表示されます(127.0.0.1:9906と同じ)。
後で「ProxyJump」オプションについて読み、次のことを試しました。
Host tunnel
HostName <firstServer>
ProxyJump <secondServer>:22
User helloWorld
ただし、接続は確立されません。 「接続先」で停止しました。
ここで明らかなものを見逃していますか?たぶん私がSSH配信の基本概念全体を誤解したのではないでしょうか?私はPuttyの使い方に慣れていましたが、最近はLinuxに切り替えてすべてを適切に設定したかったです。
答え1
この ~/.ssh/config は ProxyJump を渡します。飛躍到着ターゲット、ポートを最後までバインドします。ターゲット:
Host jump
HostName <server-ip>
User user-name
IdentityFile ~/.ssh/key.pem
LocalForward 8888 localhost:8888
Host target
HostName <server-ip>
User user-name
IdentityFile ~/.ssh/key.pem
ProxyJump jump
LocalForward 8888 localhost:8888
使用法:
答え2
私たちのチームでは、以下のワンライナーを使用しています。
$ ssh zone_user@zone_host -o ProxyCommand="ssh -W %h:%p proxy_user@proxy_host"
メモ:
- 両方が存在
proxy_user@proxy_host
し、zone_user@zone_host
秘密鍵があることを確認してください~/.ssh/authorized_keys
。 - SSHを介してSSHを転送するために追加のポートを割り当てて「トンネル」する必要はありません。
- 私はそれをあまり扱うことをお勧めしません
~/.ssh/config
。エラーが発生しやすく、文書はユーザーフレンドリーではありません。上記のような単一のライナーを共有することをお勧めします。
乾杯!