つまり、私は基本的に次のことをやろうとしているのです:
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
またはProxyJump
toC
が「そのまま機能」します。
Host C
User user
ProxyJump proxyuser@B
$ ssh C
追加の 1 回限りのコマンドという若干の不便はありますが、私の意見では、設定をかなり健全な状態に保つことができます。
いずれにしてもローカルマシンにキャッシュされるのであれば、要塞にキーを保存することで本当に安全性が高まるのか、自問自答してみるのもいいだろう。もちろん、ないキーはディスクに保存されていますが、ローカル マシンがハッキングされた場合、ファイルを読み取ることや、キーがロードされた ssh エージェントと通信することに大きな違いはありません。
答え2
設定で test-vm に bastion 内のキーを検索させたいようです。そこで、次のことをお勧めします:
- キー ファイルを bastion 内の bob2 の .ssh フォルダーにコピーします。
- 追加プロキシコマンド設定に 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:などが問題なく実行できます。