基点(プロキシ)ではなく基点(プロキシ)からのキーを使用して基点(プロキシ)経由でサーバーに ssh する方法

基点(プロキシ)ではなく基点(プロキシ)からのキーを使用して基点(プロキシ)経由でサーバーに ssh する方法

つまり、私は基本的に次のことをやろうとしているのです:

ssh [email protected] -t ssh bob2@test-vm

上記はターミナルに入力するだけでは正常に動作しますが、.ssh 構成ファイル経由で再現しようとすると困難が生じます。

設定ファイルの内容は次のとおりです。

Host bastion
     HostName 35.192.152.35
     User bob2

Host test-vm
     User bob2
     FOrwardAgent yes
     ProxyCommand ssh bastion nc %h %p 2> /dev/null

しかし、「権限が拒否されました」というエラーが表示され、公開鍵ファイルが無効ですか? この投稿から上記を思いつきました: https://unix.stackexchange.com/questions/124078/how-to-ssh-to-a-server-using-another-server-with-key-from-the-second-server

どういうわけか、その人の場合はうまくいきましたが、私の場合はうまくいかないようです。また、すべてのパーティ (オリジン、要塞、サーバー) で sshd_chroot 構成でエージェント転送と TCP 転送を許可してみましたが、違いはありませんでした。

ID パスを強制的に指定する場合:

Host bastion
     HostName 35.192.152.35
     User bob2
     IdentityFile /Users/bob/.ssh/id_rsa

Host test-vm
     User bob2
     FOrwardAgent yes
     ProxyCommand ssh bastion nc %h %p 2> /dev/null
     IdentityFile /home/bob2/.ssh/id_ed25519

その後、同じエラーが表示され、ディレクトリ「/home/bob2/.ssh/id_ed25519」が見つからないというメッセージが表示されます。

誰か何かアイデアはありますか?

答え1

要塞はネットワーク ファイアウォールを破るためのものであり、キーを保存するためのものではないことを理解すると、最小限の構成でこれを 2 つのコマンドのソリューションに変更できます。

ローカル マシン A で、ssh-agent が実行されていることを確認します。

B に対して 1 回限りのコマンドを実行します。B の構成は次のとおりです。

Host B
        ForwardAgent yes
        User proxyuser

次のコマンドを実行します。

$ ssh B ssh-add # and possibly a reference to a non-standard key

この時点で、ローカルの ssh-agent のキャッシュにリモート キーが保存されます。

その後は、プレーン-JまたはProxyJumptoCが「そのまま機能」します。

Host C
        User user
        ProxyJump proxyuser@B

$ ssh C

追加の 1 回限りのコマンドという若干の不便はありますが、私の意見では、設定をかなり健全な状態に保つことができます。

いずれにしてもローカルマシンにキャッシュされるのであれば、要塞にキーを保存することで本当に安全性が高まるのか、自問自答してみるのもいいだろう。もちろん、ないキーはディスクに保存されていますが、ローカル マシンがハッキングされた場合、ファイルを読み取ることや、キーがロードされた ssh エージェントと通信することに大きな違いはありません。

答え2

設定で test-vm に bastion 内のキーを検索させたいようです。そこで、次のことをお勧めします:

  1. キー ファイルを bastion 内の bob2 の .ssh フォルダーにコピーします。
  2. 追加プロキシコマンド設定に ssh-add を追加します。

答え3

以下は私の場合はうまくいきます...最終目的地のIPアドレスを指定している点を除いて、あなたの場合とほぼ同じです(あなたの場合は関係ないかもしれませんが)コピーしなければならなかった私の ssh_config は、要塞の途中ではなく、ここでキー ファイルを見つけているため、要塞からローカル ホストへのキーは次のようになります。

==== added to .ssh/config ====
Host mybastion
    HostName 133.35.41.9
    User bastuser
    IdentityFile /Users/bchapman/.ssh/bast_priv.key

Host mytarget
    HostName 109.0.1.38
    ProxyCommand ssh -q -W %h:%p mybastion
    User targuser
    IdentityFile /Users/bchapman/.ssh/targ_priv.key
==============

その後、ssh mytarget、scp localfile mytarget:などが問題なく実行できます。

関連情報