Ubuntu Serverに公開鍵認証を設定

訳あって、Ubuntu Serverをテスト用にインストールしました。

で、当然、公開鍵認証の設定をするのですが、引っかかってしまったので作業メモを残します。
(ホスト名やユーザー名は実際のものから置き換えてあります)

以下の手順で鍵ペアを生成します。

~$ cd .ssh
~/.ssh$ ssh-keygen -f server.example.com
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in server.example.com
Your public key has been saved in server.example.com.pub
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx user@client
The key's randomart image is:
+---[RSA 3072]----+
|          .Eo    |
|           . o   |
|. o .   .   .    |
| * ..o . + .     |
|..=...= S .      |
|...=.+ X         |
|...o+.B B        |
|+o+o+..B         |
|**+oo=.          |
+----[SHA256]-----+
~/.ssh$

公開鍵をサーバ(server.example.com)に転送します。

~/.ssh$ ssh-copy-id -i server.example.com.pub evash@example.server.com
   :
   :
Received disconnect from server.example.com port 22:2: Too many authentication failures
Disconnected from example.server.com port 22
~/.ssh$

ということで、「Too many authentication failures」というエラーメッセージで阻まれてしまいました。調べてみると、これは相手側で公開鍵認証が有効になっていないときに出るようです。

~/.ssh$ ssh-copy-id -i server.example.com.pub user@server.example.com -o PreferredAuthentications=password

ということで、オプションとして、「-o PreferredAuthentications=password」を付けて、パスワード認証を強制するとよいようです。

ssh-copy-idを実行後、試しに

~/.ssh$ ssh user@server.example.com -i server.example.com

とすると、公開鍵認証でログインできました・・・?
普通は、「-o PreferredAuthentications=password」無しでも、パスワード認証にフォールバックするような気がするのですが・・・?

.ssh/config に以下を書き足します。

Host server server.example.com
        HostName server.example.com
        User user
        IdentityFile ~/.ssh/server.example.com
        IdentitiesOnly  yes
        ServerAliveInterval 60

書き足したら、 /etc/ssh/sshd_config の

PasswordAuthentication yes

の行を no に書き換えて、ついでに、ポート転送をするのと、rootログイン禁止をしたいので、

GatewayPorts yes
PermitRootLogin no

を書き足して、

$ sudo systemctl restart ssh

としてパスワード認証を無効化しておきます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)