
Windows 上の VS Code のリモート エクスプローラーを使用して、Ubuntu からサーバーにアクセスしたいのですが、パスワードを毎回入力するのは面倒なので、ssh-keygen を使用して ssh キーを生成してみました。キーは通常のユーザーでは問題なく機能しますが、root としてログインできません。
cmd (ssh root@<server_ip>) からのエラー:
root@<server_ip>: Permission denied (publickey,password).
次のエラー/var/log/auth.log
:
sshd[1012327]: Connection reset by authenticating user root <client_ip> port 59021 [preauth]
私が見た解決策はすべて sshd_config について言及していましたが、その中で root ログインが有効になっています。sshd_config:
# Authentication:
#LoginGraceTime 2m
PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
PubkeyAuthentication yes
# Expect .ssh/authorized_keys2 to be disregarded by default in future.
#AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
#AuthorizedPrincipalsFile none
#AuthorizedKeysCommand none
#AuthorizedKeysCommandUser nobody
公開キーを/home/user/.ssh/authorized_keys
ファイルに追加しました。このキーはユーザー専用のようですが、ガイドによるとルートにも使用できるようです。
では、なぜ root として接続できないのでしょうか?
答え1
このキーはユーザー専用のように思えますが、ガイドによると、ルートにも使用できるようです。
ガイドはあなたを誤った方向に導きました。
各ユーザーには独自のホーム ディレクトリがあり、したがって独自の がありますauthorized_keys
。ルートのホーム ディレクトリは通常 です/root/
。したがって、ルートとしてログインするための関連ファイルは です/root/.ssh/authorized_keys
。 とは関係ありません/home/user/.ssh/authorized_keys
。
考えてみてください。これは通常の/home/user/.ssh/authorized_keys
ユーザーに属し、user
あるいはそうではないかもしれないsudo アクセス権を持ちます。ユーザーはそこに任意のキーを登録できます。root が同じファイルを使用した場合、ユーザーは何らかのキーを承認するだけで root としてログインできます。