LinuxのSSHサーバーに鍵認証でログインする方法

LinuxのSSHサーバーに鍵認証でログインする方法

リモートからLinuxサーバーに接続する方法として一般的なSSH接続では、デフォルトでパスワード認証でSSHサーバーに接続しますが、より安全に接続するなら鍵認証を使った方法がおすすめです。

そこでここでは、Linux上のSSHサーバーに鍵認証で接続できるように設定する方法を紹介します。

この記事は、以下の環境での動作結果を基にしています。他のソフトウェアやバージョンでは、動作結果が異なる場合があることをご了承ください。

ソフトウェアバージョン
Alma Linux9.1

SSHクライアントでの作業

まず、SSHクライアント上(接続元マシン上)で、認証で必要となる公開鍵と秘密鍵のペアを作成し、公開鍵をSSHサーバーに登録します。

鍵ペアを作成する

ここでは、RSAよりも強固でパフォーマンスが良い暗号方式(楕円曲線暗号)である「ed25519」を使って鍵ペアを作成します。

$ ssh-keygen -t ed25519

上のコマンドを実行すると、鍵ペアの保存ファイル名やパスフレーズを聞かれますが、既定値のまま[Enter]キーを押します。

Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/hoge/.ssh/id_ed25519): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/hoge/.ssh/id_ed25519.
Your public key has been saved in /home/hoge/.ssh/id_ed25519.pub.
The key fingerprint is:
SHA256:2FT3NxSN7D66/r+rv8OEVxL02Uj1NM+id7cFX++7v7o hoge@mysv.local
The key's randomart image is:
+--[ED25519 256]--+
|          . .oo*=|
|         . . o==B|
|        .    .=+O|
|       +     .o==|
|      . S   ..o.B|
|             oo=+|
|             .+o.|
|            .  o.|
|           .oE*X@|
+----[SHA256]-----+

以上で、ユーザーのホームディレクトリ配下の「.ssh/」に以下の2つのファイルが生成されます。

  • id_ed25519 ←秘密鍵
  • id_ed25519.pub ←公開鍵

公開鍵をSSHサーバーに登録する

次に、生成された公開鍵の内容を、SSHサーバーに接続するときのユーザーの「authorized_keys」ファイルに登録します。

SSHクライアントがLinuxの場合は「ssh-copy-id」コマンドを使って登録するのが簡単です。

$ ssh-copy-id -i <公開鍵ファイル> <ユーザー名>@<SSHサーバー名>

SSHクライアントがWindowsの場合は、PowerShellで以下のようにコマンドを実行して登録するとよいでしょう。

PS C:\> type <公開鍵ファイル> | ssh <ユーザー名>@<SSHサーバー名> "cat >> .ssh/authorized_keys"

動作確認

公開鍵を登録したら、SSHクライアントから秘密鍵を使ってSSHサーバーに接続できるか確認しておきます。

sshコマンドで鍵認証を使ってSSHサーバーに接続するときは、以下のようにコマンドを実行します。

$ ssh <ユーザー名>@<SSHサーバー名> -i <秘密鍵ファイル>

SSHサーバーでの作業

鍵認証で接続できることを確認したら、SSHサーバー側でパスワード認証でのSSH接続を無効化して安全性を高めます。

# vi /etc/ssh/sshd_config
PasswordAuthentication no

設定変更後、設定を適用するためにサービスを再起動します。

# systemctl restart sshd

以上で、パスワード認証でSSH接続できなくなります。

あとがき

インターネットに公開しているLinuxサーバーにSSH接続するなら、パスワード認証を無効化して、鍵認証を使って接続するように制限しておけば安心でしょう。