この投稿 に従ってUbuntu 14.04を実行しているサーバーで公開キー認証を設定しようとしています。これまでに次のことを行いました。
ssh-keygen -t rsa
を使用して、ホストで生成されたRSAキー。
キー(id_rsaおよびid_rsa.pub)が〜/ .sshディレクトリに保存されるようになりました。
ssh-copy-id <username>@<Host>
を使用してサーバーにキーをコピーしました
/ etc/ssh/sshd_configファイルを編集して、PasswordAuthentication no
行を追加しました。
/etc/init.d/ssh restart
でsshを再起動しました。
ホストからサーバーにsshしようとすると、次のメッセージが表示されます(サーバーアドレスやホスト名などの詳細を編集しました)。
$:ssh -v user @ domain OpenSSH_6.6.1、OpenSSL 1.0.1f 6 Jan 2014 debug1:構成データの読み取り/home/Host/.ssh/config debug1:構成データの読み取り/etc/ssh/ssh_config debug1:/ etc/ssh/ssh_config行19:* debug1:ドメイン[192.168.xx.xx]ポート22への接続オプションの適用.____。] debug1:接続が確立されました。 debug1:IDファイル/home/Host/.ssh/id_rsaタイプ1 debug1:IDファイル/home/Host/.ssh/id_rsa-certタイプ-1 debug1:識別ファイル/home/Host/.ssh/id_dsaタイプ-1 debug1:識別ファイル/home/Host/.ssh/id_dsa-certタイプ-1 debug1:IDファイル/home/Host/.ssh/id_ecdsaタイプ-1 debug1:IDファイル/home/Host/.ssh/id_ecdsa-certタイプ-1 debug1:IDファイル/ home/Host/.ssh/id_ed25519 type -1 debug1:IDファイル/home/Host/.ssh/id_ed25519-cert type -1 debug1:プロトコル2.0の互換モードを有効にする debug1:ローカルバージョン文字列SSH-2.0-OpenSSH_6.6.1p1 Ubuntu -2ubuntu2.8 debug1:リモートプロトコルバージョン2.0、リモートソフトウェアバージョンOpenSSH_6.6.1p1 Ubuntu-2ubuntu2.8 debug1:一致:OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.8 pat OpenSSH_6.6.1 * compat 0x04000000 debug1:SSH2_MSG_KEXINIT sent debug1:SSH2_MSG_KEXINIT received debug1:kex:server-> client aes128-ctr [email protected] none debug1:kex:client-> server aes128-ctr [email protected] none debug1:SSH2_MSG_KEX_ECDH_INITを送信 debug1:予想SSH2_MSG_KEX_ECDH_REPLY debug1:サーバーホストキー:ECDSA 16:00:b8:c5:89:af:e9:50:22:85:76:6d:65:1c:aa:b4 debug1:ホスト 'domain'は既知であり、 ECDSAホストキー。 debug1:/home/Host/.ssh/known_hosts:2 debug1:ssh_ecdsa_verifyにキーが見つかりました。 debug1:SSH2_MSG_NEWKEYS debug1:SSH2_MSG_NEWKEYSが受信されることを期待する debug1:SSH2_MSG_SERVICE_REQUESTが送信される debug1:SSH2_MSG_SERVICE_ACCEPT received debug1:継続可能な認証:publickey debug1:次の認証方法:publickey debug1:RSA公開キーの提供:/home/Host/.ssh/id_rsa debug1:続行できる認証:publickey debug1:秘密鍵の試行:/home/Host/.ssh/id_dsa debug1:秘密鍵の試行:/home/Host/.ssh/id_ecdsa debug1:秘密鍵の試行:/home/Host/.ssh/id_ed25519 debug1:これ以上の認証方法は試行しません。 許可が拒否されました(公開キー)。
this に従って問題を修正し、次のことを行いました。
保証された権限は、OpenSSH標準によってあまり開かれていない。
chmod go-w ~/
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
ホストコンピューターでssh-copy-id [email protected]
によってauthorized_keysファイルを作成し、authorized_keysファイルをサーバーにコピーし、必要に応じて所有権と権限を変更しました。
それでも問題は解決しません。 Publickey認証を使用する前に、パスワードを使用してサーバーに正常にsshできました。他の誰かが同様の問題に直面しましたか?
編集:
後でsshしようとしたときに、出力にAgent admitted failure to sign using the key.
という新しい行が追加されました。一部のグーグルは this の問題を引き起こしました。この問題はgnome-keyring干渉と呼ばれます。 SSH_AUTH_SOCK=0 ssh user@domain
を試したとき、公開鍵認証を使用してサーバーに正常にログインできました。あなたの貢献に感謝します。
ssh -i ~/.ssh/key_name user@domain
を試したときに、サーバーからAgent admitted failure to sign using the key.
と言った応答がありました。これは明らかにgnome-keyring干渉の問題によるものであり、修正はこの link で説明されています。
一時的な修正はSSH_AUTH_SOCK=0 ssh user@domain
を試すことです。これでサーバーにsshできる場合は、上記のリンクの修正に従ってください。