Sunforger

Sunforger

サーバーが私たちのキーを拒否しました!

サーバーに ssh キーを設定して、毎回パスワードを入力する手間を省こうと思った。しかし、どうやら…… サーバーには独自の考えがあるようだ。

奇妙なバグと奇妙な修正方法を記録する。

操作#

サーバーのユーザーディレクトリ内の .ssh フォルダーで ssh-keygen -t rsa を実行してキーを生成する。

その後、プライベートキーをローカルの Windows マシンにダウンロードする。mobaxterm を通じて ssh キーでログインする。

ここまでは順調だった。ログインの瞬間まで。

Server refused our key!

キーが拒否され、パスワードを入力しなければならない。

試み#

思考 1/etc/ssh/sshd_configStrictMode を無効にする設定をする。しかし、サーバーは複数人で使用しているため、あまり理解しておらず、権限の問題を引き起こす可能性があるため、この方法は考慮しない。

思考 2StrictMode の要件を満たすように権限設定を調整する。 リモート接続サーバー Server refused our key | CSDN ブログ

思考 3Openssh のバージョンの問題により、 RSA 暗号化アルゴリズムがサポートされていない。 sshd_config ファイルで RSA をサポートするように設定する mobaxterm で Server refused our key の問題 | CSDN ブログ または他の暗号化アルゴリズムを使用する Ed25519 アルゴリズムで SSH キーを生成する | 知乎

思考 4:詳細なログを有効にして問題を特定する。ssh キー設定後に Server refused our key と表示される | CSDN ブログ

最初の 3 つの思考では問題が解決しなかったが、4 つ目の思考は私により多くのヒントを与えてくれた。重要なエラーメッセージは:

mm_answer_keyallowed: publickey authentication test: RSA key is not allowed

キーが互換性がないと言う人もいれば、 Win32 の制限だと言う人もいて、混乱してしまった。

解決#

この記事は私に少しのヒントを与えてくれた Can't set up SSH key (PuTTY to Ubuntu Server) | StackExchange この記事では、生成されたキーの形式が正しくない可能性があると言われている。

私の試みは偶然にも成功した —— 私は Linux サーバー上でキーを生成するのではなく、ローカルの Windows システムで再生成し、それをサーバーにアップロードしたところ、問題は奇妙に解決した!
202@2x

更新#

最近、システムを再インストールしたため、再度 ssh ログインを設定した。

システムバージョンUbuntu 22.04.1 LTS

設定ファイルを変更 /etc/ssh/sshd_config

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2

元々コメントアウトされていた # を削除する。

キーを生成

ssh-keygen -t ed25519 -f your_ssh_key_ed25519  -C "your_ssh_key_name"

.sshフォルダーの権限を 700 に設定
プライベートキーのファイル権限を 600 に設定し、パブリックキーのファイルは 644 の権限を開放する。キーの安全性には影響しない。
authorized_keysファイルの権限を 600 に設定する。 authorized_keysファイルがない場合は、touch コマンドで作成する。

chmod 700 .ssh
chmod 600 .ssh/your_private_key
touch .ssh/authorized_keys
chmod 600 .ssh/authorized_keys

パブリックキーをauthorized_keysファイルにコピー

cd .ssh
cat your_public_key >> authorized_keys

注意:public key は通常 .pub 拡張子の付いたファイルです。

テストの結果、ログインできるようになった。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。