web-dev-qa-db-ja.com

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

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

Puttygen.exeをダウンロードして、キーペアを生成しました。 /etc/ssh/sshd_configには次の行があります。

AuthorizedKeysFile %h/.ssh/authorized_keys

そして、私のクライアントの公開鍵ファイルでは、これはこう言います:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "[email protected]"
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAr3Qo6T5XU06ZigGOd3eKvfBhFLhg5kWv8lz6
qJ2G9XCbexlPQGanPhh+vcPkhor6+7OmB+WSdHeNO652kTofnauTKcTCbHjsT7cJ
GNrO8WVURRh4fabknUHPmauerWQZ6TgRPGaz0aucU+2C+DUo2SKVFDir1vb+4u83
[email protected]
---- END SSH2 PUBLIC KEY ----

「ssh-rsa AAA」から「[email protected]」にパーツをコピーし、それをサーバー上のファイル([自分のホームフォルダー])~/.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ビットキーを生成しようとしました。

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

編集:

わかりました、/var/log/auth.logは言いました:

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

Googleは~/.ssh/が700で、~/.ssh/authorized_keysが600でなければならないことを教えてくれたので、それを行いました。今/var/log/auth.log言う:

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

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を行います。

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

94
Forkbeard

この問題が発生しました。このスレッドで既に説明されているように構成が正しく設定されているにもかかわらず(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
22
kuraara

問題は、windowsがlinuxとは異なるnew lineを使用しているため、windowsからlinuxにキーをコピーするときに\ n linuxのエディターでは表示できない行の最後。

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

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

Windowsでキーを変更して、最後にnew lineのない1行でキーを変更し、それをLinuxにコピーすると、動作するはずです(did私のためのトリック)。

9
Mischa

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

chmod 700 ~
8
Michal Zmuda

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

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

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

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

5
Paul

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

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

2
zach

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

1
PeanutPower

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

chmod 600 ~/.ssh/authorized_keys
1
Kaleem

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

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

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

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

1
Mark Lakata

オープン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

0
Shimon Doodkin

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

0
hakabe

ルートとしてログインしているときに.sshファイルとauthorized_keysファイルを作成していたため、間違った権限が付与されました。また、すべてのファイルをルートディレクトリの下に配置しました。これは、「サーバーがキーを拒否しました」に関する多くの問題の原因だと思います。

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

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

0
Leo F

実際、authorized_keysの許可を644に変更し、問題は解決しました。

chmod 644 ~/.ssh/authorized_keys
0
Peter Liang