サーバーが2つあります。サーバーAを介してのみサーバーBに接続できます。私の~/.ssh/config
ファイルから:
Host serverB
Hostname serverb
User root
ForwardAgent yes
Port 22
ProxyCommand ssh user@serverA nc %h %p
serverAにログインして入力するとssh root@serverB
パスワードを要求せずに接続されますが、ssh ServerB
ローカルコンピュータに入力するとServerBのパスワードを求めます。なぜ?
答え1
ProxyCommand
パイプを介して外部を接続するためのトンネルのみが提供されていますssh
。
ssh serverB
これにより、以前のアカウントserverA
のキーを使用できるようになりますserverA
。
クライアントシステムでこれを実行したときにssh serverB
開始したコマンドを介して接続するという事実は、魔法のようにserverAのキーへのアクセスを提供しません。nc
serverA
クライアントエージェントにserverAのキーを追加する必要があります。
たとえば、
ssh-add <(ssh serverA 'cat .ssh/id_rsa')
serverAにキーを追加します.ssh/id_rsa
(上記のksh93 / bash / zsh構文)。
答え2
問題:
- serverBのパスワードを尋ねることはどのくらい確実ですか? serverAに尋ねることもできます。
- プロキシを渡す必要はありません。この場合、serverBと直接ハンドシェイクします。 serverBとはserverAハンドシェイクにはなりません。
- サーバーAのキーをクライアントに追加する必要はありません。繰り返しますが、サーバーAを介してのみサーバーBと直接通信します。したがって、これを行う理由はなく、セキュリティ上のリスクもあります。 。
- いつ
ssh serverA
- パスワードを尋ねますか?それでは、serverAのAuthorized_hostsに公開鍵をインストールすることを検討しましたかssh-copy-id serverA
? - -vvv と Pastebin/filebin/post 出力として実行
答え3
完全な答えはありません。いくつか確認するだけです。両方のシステムで unix ユーザーのホームディレクトリの権限を確認します。両方のボックスで、$ HOME、$ HOME / .ssh、および.sshの下のすべてのファイルに対するディレクトリ権限を確認します。 SSHのバージョンを確認してください。また、2 つのボックスの SSH 構成ファイルを比較します。
しかし、過去にもこのようなことが何度も起こりました。この2つのために起こるのでしょうか?
1. ディレクトリ権限が正しくありません。 2. $HOME/.ssh/ に無効なサーバーキーがあります。