数か月前に小さな Linux ボックスをセットアップし、個人ユーザー ID とサービス アカウント ID の両方にパスワードなしの SSH ログインを設定しました。これは両方とも正常に動作しています。サービス アカウントの秘密/公開キー ファイルは、個人ユーザー ID のキーを保存したのと同じ場所、つまりクライアント ボックスに保存しました。
基本的なガイドとして以下を使用しています:http://www.tecmint.com/ssh-passwordless-login-using-ssh-keygen-in-5-easy-steps/。
今日、2 台目のボックスをセットアップし、同じ方法で構成するつもりでした。個人のユーザー ID では問題なく動作しました。ただし、サービス アカウントではまだ動作しませんが、その理由はわかりません。サービス アカウントで 2 台目のボックスに ssh を試みると、パスワードの入力が求められ、その後、ログインできます。
サービス アカウントの公開キーが両方のボックスの ~/.ssh/authorized_keys ファイルに挿入され、キー値が両方のボックスで同じであることを確認しました。
~/.ssh の権限は 700、~/.ssh/authorized_keys の権限は 600 であることを確認しました (推奨値として読んだ 640 でもテストしました)。両方のボックスで、サービス アカウントのホーム ディレクトリでこれを確認しました。
サービス アカウントの数値ユーザー ID は 2 つのボックスで異なることに注意してください。これによって何か違いが生じるとは思えません。
また、サービス アカウントを使用してどちらかのボックスに ssh で接続した後、そのサービス アカウントを使用してそのボックスから別のボックスに ssh で接続しようとすると、パスワードの入力が求められることにも気付きました。
「known_hosts」または他の何かで何かを行う必要がありますか?
アップデート:
アドバイスに従って、「-v」で ssh を実行し、ssh 試行からの出力を検査してみました。
一部省略した出力は次のとおりです。
% ssh -v [email protected]
OpenSSH_7.2p2, OpenSSL 1.0.2h 3 May 2016
debug1: Reading configuration data /home/myuserid/.ssh/config
debug1: /home/myuserid/.ssh/config line 2: Applying options for *
debug1: Connecting to targethost.com [...] port 22.
debug1: Connection established.
debug1: identity file /home/myuserid/.ssh/id_rsa type 1
debug1: key_load_public: No such file or directory
debug1: identity file /home/myuserid/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/myuserid/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/myuserid/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/myuserid/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/myuserid/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/myuserid/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/myuserid/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.2
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1
debug1: match: OpenSSH_6.6.1 pat OpenSSH_6.6.1* compat 0x04000000
debug1: Authenticating to targethost.com:22 as 'serviceaccountid'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: [email protected]
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: [email protected] MAC: <implicit> compression: none
debug1: kex: client->server cipher: [email protected] MAC: <implicit> compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:...
debug1: Host 'targethost.com' is known and matches the ECDSA host key.
debug1: Found key in /home/myuserid/.ssh/known_hosts:18
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/myuserid/.ssh/id_rsa
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Trying private key: /home/myuserid/.ssh/id_dsa
debug1: Trying private key: /home/myuserid/.ssh/id_ecdsa
debug1: Trying private key: /home/myuserid/.ssh/id_ed25519
debug1: Next authentication method: password
[email protected]'s password:
最後の数行、「次の認証方法: publickey」の後のファイル パス参照が「/home/serviceaccountid」ではなく「/home/myuserid」になっているのが不思議です。これは大きな手がかりのようです。
答え1
私のアカウントではコメントを追加できませんが、これはトラブルシューティングに役立つようにさらに学ぼうとしているだけです。
3 台のコンピューター (ローカル 1 台、リモート 2 台) をお持ちのようですね。そして、それぞれに 2 つのアカウントがあり、それを操作しているのですか?
ローカル マシンに個人アカウントとサービス アカウントがあり、ssh service@remote-2
ローカル マシンの個人アカウントから実行する場合、サービス アカウントではなく、ローカルの個人アカウントの SSH キーのみが見つかります。ローカルの個人公開キーをリモート サービス アカウントの承認済みキー ファイルに追加した場合、これは問題になりません。
最後の数行、「次の認証方法: publickey」の後のファイル パス参照が「/home/serviceaccountid」ではなく「/home/myuserid」になっているのが不思議です。これは大きな手がかりのようです。
これはSSHがローカルアカウントのキーを探しているところです。SSHを呼び出しているアカウントのホームディレクトリである必要があります。そのパスがサービスアカウントのホームであると予想される場合は、サービスアカウントにログインしてそれからsshを実行します。