私のSSHキーは正しく機能し、次の方法で他のサーバーに直接接続できます。
MyUser@host1: SSH サーバー
パスワードは要求されずに接続に成功しましたが、rootを使用すると次のようになります。
root@host1: ssh -i /home/myuser/.ssh/id_rsa.pub MyUser@server
他のサーバーではパスワードが必要です。最初の場合のように接続が自動的に行われない理由と、この問題を解決する方法を説明できる人はいますか?
事前にありがとう
答え1
MyUserでHost1にログインし、ルートを使用または切り替えるとしsu -
ますsudo
。セキュリティ上の理由から、どちらの方法もあるユーザーアカウントから別のユーザーアカウントに切り替えると、ほとんどまたはすべての環境変数を削除します。
(たとえば、特定のコマンドをrootとしてのみ実行できる場合は、すべての環境変数が自動的に渡された場合は、悪意のある設定や変数の設定でこの制限を解決sudo
できます。)LD_PRELOAD
LD_LIBRARY_PATH
SSH認証プロキシを使用すると、ホスト1のSSHセッションの重要な環境変数が生成されますSSH_AUTH_SOCK
。 MyUserがSSH経由でサーバーに接続し続ける場合、この変数が存在する場合は接続が可能であることをホスト1のSSHクライアント認証ブローカーに通知します。この変数は通常、所有者だけがアクセスできる/ tmpの下のディレクトリにあるUnixソケットを指します。このソケットは、sshd
ワークステーションからホスト1へ、最終的にワークステーションのPuTTY認証ブローカーへの接続を処理するプロセスに接続されます。
su
あるユーザーアカウントから別のユーザーアカウントにpingまたはpingするときにこの変数が渡されない場合、sudo
SSHクライアントは切り替え後に認証プロキシを使用して接続できません。したがって、使用可能な秘密鍵を自己解読するには、パスワードの入力を求める必要があります。
また、root以外のアカウントに切り替える場合は、ソケットとそれに含まれるディレクトリのファイル権限のため、他のユーザーに切り替える前に明示的に許可するアクションを実行しない限り、それを使用することはできません。 (ルートはすべてにアクセスできるため、ルートに変換する際に問題になりません。)
答え2
ssh -i /home/myuser/.ssh/id_rsa.pub MyUser@server
ここでは無効なキーファイルを使用しています。id_rsa.pubリモートサーバーにインストールされた公開鍵を含みます。id_rsa(いいえ居酒屋拡張子)には、クライアントがリモートサーバーへの認証に使用する秘密鍵が含まれています。
公開鍵の代わりに秘密鍵の名前を指定してください。
ssh -i /home/myuser/.ssh/id_rsa MyUser@server
^^^^^^--Note no .pub