SSHトンネルが中断され、キーのロックを解除しました - 単一のコマンドを探しています

SSHトンネルが中断され、キーのロックを解除しました - 単一のコマンドを探しています

別のサーバー (B) 経由でのみアクセスできるリモート サーバー (A) にアクセスするための SSH トンネルを作成しようとしています。ローカル マシン (L) にはリレー サーバー (B) にアクセスするためのキーがあり、リレー サーバー (B) には宛先サーバー (A) にアクセスするための別のキーがあります。

[リレーサーバー(B)へのキーを持つローカルマシン(L)] --> [宛先サーバー(A)へのキーを持つリレーサーバー(B)] --> [宛先サーバー(A)]

私のローカルマシン(L)には、次のような ~/.ssh/config ファイルがあります。

Host relay.server(B)
    Hostname relay.server
    Port 22
    User me
    IdentityFile ~/.ssh/id_rsa

Host destination.server(A)
    Hostname destination.server
    Port 1122
    User me
    IdentityFile ~/.ssh/id_rsa

そして、次のようにしてトンネルを正常に動作させることができます。

ssh -N -L 1122:SERVER_PRIVATE_IP:22 relay.server(B)ローカル マシン (L) で次のコマンドを実行します。最初のキーのロックを解除するためのパスワードの入力が求められ、その後ハングアップしたように見えます。プロンプトは返されません。-fオプションを使用するか、で終わると&パスワードを入力できなくなります。ただし、パスワードを^C入力した後にこのコマンドを実行すると、ssh destination.server(A)2 番目のキーのロックを解除するためのパスワードの入力が求められ、その後、宛先サーバー (A) に接続されます。

ローカル マシン (L) から宛先サーバー (A) に接続し、各キーのロックを解除するために必要なパスワードの入力を求める単一のコマンドを探しています。または、リレー サーバー (B) を介してローカル マシン (L) から宛先サーバー (A) に直接接続できるようにするための別の構成方法の提案もお願いします。

答え1

簡単に答えると、

  • ProxyCommandnc接続に使用する
  • ForwardAgent鍵を渡す
  • 公開鍵が.ssh/authorized_keysすべてのサーバーに存在することを確認する
Host relay
    Hostname        relay.server.fqdn.or.IP
    User            me
    IdentityFile    ~/.ssh/id_rsa
    ForwardAgent    yes

Host destination
    Hostname        destination.server.fqdn.or.IP
    User            me
    IdentityFile    ~/.ssh/id_rsa
    ProxyCommand    ssh -q relay "nc %h %p"
    ForwardAgent    yes

長い部分。

ssh config のオプションProxyCommandは、囲みが使用されるたびにコマンドを実行しますHost。これは通常nc、nmap.org から入手可能な (としても知られncat、多くのオプションがあります)とともに使用されます。

Host destinationssh config の上記のエントリでは、 ssh を静かに中継して実行する がProxyCommand設定されていました。ssh -q relay "nc %h %p"nc destination.server.fqdn.or.IP 22

nc着信 ssh と宛先の間の接続を確立します。

ForwardAgent yes、ssh にキーを ssh-agent に追加するよう指示します。ssh エージェントはキーを追跡し、必要に応じて正しいキーをホストに自動的に渡すために使用されます。は、ForwardAgent yesエージェントにキーをリレー上の別のエージェントに渡し、その後再び宛先に渡すよう指示します。

これらすべてが機能するには、経由する各サーバーと最終的な宛先の.ssh/authorized_keysファイルに、秘密鍵 (id_rsa) に関連付けられた公開鍵が必要です。秘密鍵 id_rsa を作成したときに、公開鍵 id_rsa.pub も作成されているはずです。

公開鍵がない場合は、いつでも秘密鍵から取得してssh-keygen -y -f ~/.ssh/id_rsa簡単にコピー/貼り付けできます。公開鍵にはスペースで区切られた2つまたは3つのフィールドがありますが、1つライン。

したがって、ssh relay編集し~/.ssh/authorized_keys(存在しない可能性があるため、mkdir -p ~/.ssh必要な場合があります)、公開キーを新しい行 (存在しない場合は最初の行) に貼り付けます。

リレー サーバー上で、nc/bin または /usr/bin に存在するかどうかを確認します。存在しない場合は、パッケージ マネージャー (yum または apt-get) を使用してインストールする必要があります。

リレーサーバーから、ssh destinationの同様の更新を実行します~/.ssh/authorized_keys

exitローカルマシンまで到達すれば、ssh destination

答え2

新しい OpenSSH バージョンProxyJumpでは以下が許可されます.ssh/config:

Host relay
    Hostname        relay.server.fqdn.or.IP
    User            me
    IdentityFile    ~/.ssh/id_rsa
    ForwardAgent    yes

Host destination
    Hostname        destination.server.fqdn.or.IP
    ProxyJump       relay
    User            me
    IdentityFile    ~/.ssh/id_rsa

関連情報