キーファイルを使用してssh認証を実行しようとしています:サーバーがキーを拒否しました


53

ユーザー名/パスワードの代わりにキーファイルを使用してssh認証を設定しようとしています。クライアントはPuTTYを実行するWindowsボックスであり、サーバーはUbuntu 12.04 LTSサーバーです。

puttygen.exeをダウンロードして、キーペアを生成しました。で/etc/ssh/sshd_config、私の行を持っています:

AuthorizedKeysFile %h/.ssh/authorized_keys

そして、私のクライアントの公開鍵ファイルには次のように書かれています:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "my@email.address.com"
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAr3Qo6T5XU06ZigGOd3eKvfBhFLhg5kWv8lz6
qJ2G9XCbexlPQGanPhh+vcPkhor6+7OmB+WSdHeNO652kTofnauTKcTCbHjsT7cJ
GNrO8WVURRh4fabknUHPmauerWQZ6TgRPGaz0aucU+2C+DUo2SKVFDir1vb+4u83
AV1pKxs=my@email.address.com
---- END SSH2 PUBLIC KEY ----

「ssh-rsa AAA」から「my@email.address.com」に部品をコピー~/.ssh/authorized_keysし、それをサーバー上のファイル(自分のホームフォルダー)に入れました。PuTTYの[接続]> [SSH]> [認証]で、クライアントで生成した秘密キーへのパスを入力し、セッション設定を保存しました。

でsshサーバーを再起動しました

sudo service ssh restart

プロファイルをPuTTYにロードし(秘密キーがまだ[接続]> [SSH]> [認証]にあり、パスが正しいことを確認した)、プロファイルを実行すると、

Server refused our key

ディレクトリの 下のファイルに公開鍵を入れてみました./ssh/authorized_keys/が、それは役に立たなかったので./ssh/authorized_keysファイルとして使用し、その中に鍵を貼り付けました。また、サーバーで秘密キーと公開キーのペアを生成し、公開キーを入力し./ssh/authorized_filesて、クライアントのPuTTYに秘密キーをロードしようとしました。サーバーを再起動しても解決しませんでした。

このエラーは、ユーザーのホームフォルダー以外の場所にキーを配置することで解決できることがわかりましたが、これはホームフォルダーが暗号化されている場合にのみ役立ちます。

また、おそらく1024は短すぎると考えて、4096ビットキーを生成しようとしました。

これを機能させるにはどうすればよいですか?ありがとう!

編集:

OK、/var/log/auth.log言った:

sshd: Authentication refused: bad ownership or modes for directory /home/vorkbaard/.ssh

グーグルは、私~/.ssh/は700歳で、~/.ssh/authorized_keys600歳であるべきだと言っているので、そうしました。今/var/log/auth.log言う:

sshd: error: key_read: uudecode AAAAB3N [etc etc etc until about 3/4 of my public key]

回答:


95

OK、それは修正されましたが、これが私がすでに試したものとどう違うかわかりません。

私がしたこと:

  • puttygen.exeでキーペアを生成します(長さ:1024ビット)
  • PuTTYプロファイルに秘密鍵をロードします
  • 公開鍵を~/.ssh/authorized_keys 1行で入力します(最初にが必要ですssh-rsa
  • chmod 700 ~/.ssh
  • chmod 600 ~/.ssh/authorized_keys
  • chown $USER:$USER ~/.ssh -R
  • /etc/ssh/sshd_config含まれるように変更するAuthorizedKeysFile %h/.ssh/authorized_keys
  • sudo service ssh restart

トラブルシューティングを行うには# tail -f /var/log/auth.log

ご協力いただきありがとうございます!


1
うーん、ではそのsshd: error: key_read: uudecode AAAAB3Nエラーはauth.logどうなりましたか?
アラアアリ

手がかりがありません、Alaa。おそらく、前のキー文字列の貼り付けでエラーが発生した可能性があります。Auth.logはこれ以上エントリを取得せず、キーベースの認証は問題なく機能します。私の主な問題は、何をする必要があるが本当にわからず、それがどれほど難しいということでした。理由はわかりませんが、動作します。あなたの助けを再びありがとう:)
Forkbeard

驚くばかり!!!私は2日間頭をかきました。この答えは日を節約します!!
ナカ14

ステップ3が私にとっての秘wasでした。私は、公開鍵入れていないauthorized_keys、私はちょうど私の貼り付けられたファイルmykey.pubにファイルを~/.sshフォルダと、それはそれを拾うだろうと思ったが。代わりに、最終的に必要なのは、これを実行するか、そこにある他のキーの下に編集して貼り付けることでした。cat mykey.pub >> authorized_keys。今は簡単にauthorized_keys思えますが、学んだ教訓は、すべての公開鍵が~/.ssh/ディレクトリ内だけでなく、そこになければならないということです。これが正しい主張ではない場合、誰かが助言してください。
ティンブラウン

手順が役に立たない場合は、次のことも確認してください。1. OpenSSHではなく、保存されたPuTTY公開キーをauthorized_keysにコピーしました。複数行の公開鍵。1行にする必要があります。あなたが先頭またはr_hartmanのおかげでコピー中に末尾のスペースを追加していないことを確認してくださいcentos.org/forums/viewtopic.php?t=990を
mvladk

23

この問題が発生しました。このスレッドで既に説明されているように構成が正しく設定されているにもかかわらず(authorized_keysのアクセス許可など)、公開キーの形式が間違っていることがわかりました。次の形式でした:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "imported-openssh-key"
AAAAB3NzaC1yc2EAAAADAQABAAABAQDUoj0N3vuLpeviGvZTasGQ...
... lPmTrOfVTxI9wjax2JvKcyE0fiNMzXO7qiHJsQM9G9ZB4Lkf71kT
---- END SSH2 PUBLIC KEY ----

うまくいきませんでした。しかし、それを次の形式で動作させました:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDU.....j0N3vuLpeviGvZTasGQa1rcJiPXQMW7v3uurb+n94B9MQaaWR0odsg5DJQL92TNenOda5BO1nd08y6+sdLQmHXExTz6X8FzgoVsAkEl3RscxcxHUksiKA9JfTo38vQvG/bPxIHMCuSumCQVA1laf3rO/uOrkcB7iMWhaoi1/z6AbFtPzeh7xjGfInMWwtBI0CsHSRF73VWIxT26w0P+KjafCjSn/7vDO1bT8QHujSQelU/GqaVEvbbvPl1a7POVjKgHLNekolwRKfNeVEewcnmZaoqfHgOKlPmTrOfVTxI9wjax2JvKcyE0fiNMzXO7qiHJsQM9G9ZB4Lkf71kT UserName@HOSTNAME

14
ssh-keygen -i -f filenameofwindowsformpub.keyOpenSSHサーバーが理解できる形式に公開鍵を変換するために使用できます。
ブラック

はい、それは私のために働いた!それは一行でなければなりません。それだけだなんて信じられない!
アデルリオサンティアゴ

1
こんにちはkuraara @Blackによる上記の指示は、答えの中で顕著にすべきであると考えています。
ekerner

OpenSSHサーバー形式にコメントを追加できますか?人間にとって、このキーがどのコンピューターを表しているのかを判断するのは困難です。
user1700890

@Blackの提案に従うと、文字列の最後にUserName @ HOSTNAMEはありません。その部分が重要かどうかはわかりません。
アーノルドバード

9

問題は、windows がlinuxとは異なる新しい行を使用するため、キーをwindowsからlinuxにコピーすると、行の最後に\ nがあり、Linuxでエディターに表示されないことです。

/var/log/auth.logを末尾にしてログインしようとすると、エラーは次のようになります。

sshd:エラー:key_read:uudecode AAAAB3N [....] == \ n

Windowsでキーを変更して、最後に新しい行追加せずに1 行にし、それをLinuxにコピーすると、動作するはずです(私にとってはうまくいきました)。


これは私の問題でしたが、それが事実であることを示唆するauth.logには何も見ませんでした。イライラ
アンソニー

8

ホームディレクトリのアクセス許可を変更する必要がありました

chmod 700 ~

2
これは(AIXでも)私にとってもうまくいきました。
-stevepastelan

CentOSでも私のために働いていた
Jaywalker

Redhatで私のために働いた!グループの書き込みアクセスが特定の問題のようです。ただし、グループの読み取り許可を「chmod 740〜」のままにしておくと、引き続き機能します。
ポール

6

〜/ .sshディレクトリのアクセス許可を770から700に変更し、〜/ .ssh / authorized_keysファイルのアクセス許可を660から600に変更する必要がありました。

何らかの理由でグループのアクセス許可を削除すると、この問題は修正されました。

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

5

この~/.ssh/authorized_keysファイルでは、キーがすべて1行にある必要があります。上記のペーストのように複数の行に追加した場合は、行を結合してみてください。


おかげで、それは理にかなっており、今ではディレクトリではなくファイルである理由を理解しています。しかし、助けにはなりませんでした。
フォークひげ

3
これに混乱するかもしれない人にとって、彼が意味することは、各キー自体が単一行にある必要があるということですが、異なるキーは異なる行にある必要があります。
アンソニー

2

ここに私のために働いたものがあります:

puttygen、キーを生成した後、必ずトップフィールドの情報をコピーして貼り付け、authorized_keysファイルに移動してください。クライアントマシンに公開鍵を保存してから開くと、テキストはputtygen画面上部のテキストとは異なります。繰り返しますが、puttygen(キーを作成した後)画面のトップからテキストをコピーして、authorized_keysファイルに貼り付けてください~/.ssh


これにより実際に問題が修正されました。パブリックキーを保存するをクリックしても、適切な形式が保存されない理由はわかりません。
ラッキー

1

上記のすべての答えに加えて、キーをputtygen正しくコピーして貼り付けてください!

キー文字列の大部分をダブルクリックして選択すると、文字列全体が取得されない場合があります。これは、テキストボックスが文字+などの一部の行を分割して、文字の後のテキストを選択しないためです+(テキストボックスが小さすぎるため表示できません)。ssh-rsaテキストボックスの最後から最後まで、必ず文字列全体を手動で選択してください。


1

1行に公開鍵を持っていることに関連する問題である場合がありますが、このアプローチはそれを解決するようです

echo 'the content of the public key' > /root/.ssh/authorized_keys

1

私にとっては、~/.ssh/authorized_keysルートを使用して作成されたので、ルートが所有されていました。chown sshuser:sshuser ~/.ssh/authorized_keysそれから働かなければならなかった


1

私もこのエラーに直面し、authorized_keysファイルのパーミッションをに変更することで解決しました600

chmod 600 ~/.ssh/authorized_keys

1

一般的なエラーは、ユーザーがテキストエディター(Vimなど)を使用し、コピーしたテキストを貼り付けてから「挿入」をアクティブにすることです(貼り付ける前にVimで+ iを押します)



0

オープンsshをデバッグするには、次を使用できます。

sudo `which sshd` -p 2020 -Dd

他のポート2020でsshdを実行します。現在のプログラムとしてsshdを実行するため、出力が画面に表示されます。閉じている場合は閉じられます。

その後、接続してみてください。

説明:

  • `which sshd`-sshdアドレスを特定し、どのsshdが出力するか確認して実行してください。逆引用符を使用すると、実行され、結果が所定の場所に返されます。
  • -p 2020-ポートを指定します
  • -D-ファイルにログ
  • -d-画面にログ

https://www.attachmate.com/documentation/rsit-unix-802/rsit-unix-guide/data/sshd_options_ap.htm


この答えを拡大していただけますか?引数には何が必要ですか?コマンドは何をしているのですか?
ズザッハ...

-1

ルートとしてログインしているときに.sshファイルとauthorized_keysファイルを作成していたため、間違った権限が付与されました。また、すべてのファイルをルートディレクトリの下に配置しました。

これらのファイルの所有権を希望するユーザーに変更するのは良い習慣ではないため、手順をたどり、SSHを使用したいユーザーとしてログインし、.sshとauthorized_keysを再度作成したことを確認しました。

Win7をXubuntu 15.04サーバーに接続する方法VPSに接続するためのPuTTYを使用して SSHキーを作成する方法

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.