SSH公開鍵をauthorized_keysにコピーした後、サーバーがパスワードを要求し続けます


44

クラウドで実行されているUbuntuサーバーがあります。ユーザーを作成しました(git)。フォルダ/home/gitに、.ssh/ディレクトリとauthorized_keysファイルを作成しました。

しかし、SSH公開キーをauthorized_keysファイルに入れると、サーバーは引き続きパスワードを要求します。

私は何を間違えましたか?


ypurをどこに公開しますか?ユーザーgitまたはrootで?どうやってアクセスしますか?ssh <you> @ <server> o <git> @ <server>またはroot @ <server>として..それを確認し、さらに情報を追加します。
maniat1k

回答:


42

サーバー側では、sshデーモンがエラーをログに記録する/var/log/auth.logため、そのファイルをチェックして、報告されている内容を確認します。

クライアント側から、接続を確立するときに-vフラグ(または-vvまたは-vvv)を追加して、冗長性を高めることができます。この方法で問題を特定できる場合があります。

その他の確認事項を次に示します。

  • /home/git/.ssh/authorized_keysがに所有されていることを確認してくださいgit
  • /home/git/.ssh/authorized_keysモードが600(-rw-------)であることを確認してください。

/etc/ssh/sshd_configファイルも確認してください。

  • PubkeyAuthentication に設定する必要があります yes
  • AuthorizedKeysFile許可されたキーを配置するパスを決定するディレクティブもあります。コメントアウトされているか、デフォルトのを確認してください%h/.ssh/authorized_keys

ありがとう!このオプションを試し、後でフィードバックに戻ります!
ルイスダルモリン

/var/log/auth.logファイルが表示されない場合はどうしますか?これをオンにする方法はありますか?
スティーブロビンス

1
/var/log/auth.logがない場合、ログは/ var / log / secureにある場合があります
CoverosGene 14

愚かな間違い。接続したいサーバー上の.sshフォルダー内に.pubファイルをscp-edしていました。必ずauthorized_keysフォルダーに移動してください。
CenterOrbit 14年

また、ホームディレクトリ自体からグループ書き込み権限を削除する必要がありました。その後、私はsshを再起動しましたsudo service ssh restart
ディランピアス

19

また、ユーザーのホームディレクトリ(この場合は、/ home / git)が自分だけが書き込み可能であることを確認してください。ホームディレクトリがグループ書き込み可能であるため、一度この問題が発生しました。/var/log/auth.logには、「認証は拒否されました:ディレクトリ/ home / chuckの所有権またはモードが正しくありません」とあります。(これは、あなた以外の誰かがいじっていたauthorized_keysファイルを使用しないようにするためです!)


これは確かに役立ちますが、これはxeyesの答え追加であると思います。
gertvdijk

1
なんてこった、ありがとう!Googleで行ったすべての検索が原因で、私の目は燃えていました。ついにうまくいきました!どうもありがとうございます。
-GTRONICK

ありがとう 私は解決策を探すのに何時間も費やしました...そしてこれは私の問題をすべて解決しました。
アファリア

うん。それでした。次の回答を読むことにしたのは嬉しいです
-Katushai

また、ユーザーのホームディレクトリを/ etc / passwdで確認します。私の奇妙な問題は、それが標準的なものではなかった
-drodsou

5

これを解決するにはさまざまな方法があります。パスワード認証を使用しないようにsshd(サーバー側)またはssh(クライアント側)を構成できます。サーバーでパスワード認証を無効にすると、サーバーのセキュリティが強化されますが、キーを紛失すると問題が発生します。

sshpubkey認証を使用して(クライアント側)を作成するには、sshコマンドにいくつかのオプションを追加します。

ssh -o PubkeyAuthentication=yes -o PasswordAuthentication=no -X git@server

これが機能する場合PasswordAuthentication=noは、/etc/ssh/ssh_configシステム全体または~/.ssh/configユーザー固有のsshクライアント構成ファイルでオプションを永続的に設定できます(詳細については、を参照してくださいman ssh_config)。


1
デフォルトでは/etc/ssh/ssh_config、Debian / Ubuntuシステム上のすべてのSSHクライアント設定()は、冗長モードで呼び出したときにわかるように PubkeyAuthentication、すでに優先して試してみてsshください。
gertvdijk

3

ローカルマシンで〜/ .ssh / configを使用していますか?構成ファイルでIdentityFileディレクティブを使用して公開キーをポイントすると、この問題に遭遇しました。例えば:

Host Cloud
    Hostname cloud.theclouds.com
    User git
    IdentityFile ~/.ssh/config/mykey # This is correct

    # IdentityFile ~/.ssh/config/mykey.pub # This is incorrect


1

もう1つ確認する必要があるのは、公開キーに余分な改行があるかどうかです。上記のアドバイスに従って/var/log/auth.logを確認しましたが、キーを読み取るときにエラーが発生しました。キーは4行ではなく約2行でした。キーに余分な改行が埋め込まれていました。

viエディターを使用する場合、shift-jを使用して行を結合し、キー文字列の余分なスペースを消去します。


1
私はトリプル権限を確認しましたsshd_config。頭を壁に30分ぶつけた。これは私の間違いでした!どういうわけか、私が手で編集するすべてのファイルを余分な改行で終わらせる習慣になりました。最後に1つのキーと復帰がある場合でも、認証を台無しにするのに十分です。
jrhorn424

----- END RSA PRIVATE KEY -----ビットも持っていることを確認してください。
トビーチ

1

複数のプライベートキーがある場合は、ssh接続コマンドで-vスイッチを使用して、他のプライマリキーが接続を試みるようになっているかどうかを確認します。そうでない場合は、sshクライアントに次のコマンドで使用するように指示します。

ssh-add path/to/private/key

1

キーをSSHエージェントに追加することもできます。

u@pc:~$ ssh-agent bash
u@pc:~$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/u/.ssh/id_rsa: # ENTER YOUR PASSWORD
Identity added: /home/u/.ssh/id_rsa (/home/u/.ssh/id_rsa)

0

また、あなたが呼び出している可能性があります

sudo git clone gituser@domain:repo.git

rootユーザーのSSHキーが追加されていないところauthorized_keysgituser


0

Ubuntu 18.04.02 LTSを実行しているマシンでは、アクセス許可~/.sshを600 に設定するという提案はうまくいきませんでした。アクセス許可を700に設定する必要があり、その後は問題なく機能しました。


0

.ssh /ディレクトリとauthorized_keysファイルのアクセス許可は正しいものでしたが、自己誘導型の別の問題が原因でこの「パスワードのプロンプト」問題が発生しました。

マウスベースのハイライトとコピー/貼り付けを使用して、ローカルid_rsa.pubからサーバー上のauthorized_keysファイルに情報をコピーしました。これにより、データは1行として正常にコピーされましたが、viを使用してファイルを編集する際に見えにくい、目に見える行の最後に不要なスペースがありました。これらの不要なスペースを削除したら、問題なくsshできました。


0

私に起こったことは、ローカルマシンから2つのVMにアクセスできることです(2つのキーid_rsa.pubおよびid_rsa2.pub)。私のssh接続は、すべてのssh user@xx.xx.xx.xx接続にデフォルトでid_rsa.pubを使用していることに気付きました。構成ファイルを追加し、次のようにすべてのホストに使用するIDを指定することで問題を解決しました。

vi ~/.ssh/config

Add both hostnames and their identity file as follows:

Host server1.nixcraft.com
  IdentityFile ~/Users/.ssh/id_rsa1
Host server2.nixcraft.com
  IdentityFile /backup/home/aymen/.ssh/id_rsa2
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.