UbuntuでSSHサーバーを構築して公開鍵で認証してみた

この記事は約4分で読めます。

サーバー構築を体験するためにSSHサーバーを立ててみました。
自分用のメモとアウトプットのために手順を記事としてまとめます。

Ubuntu: 22.04 LTS

SSHのインストール

まずは以下のコマンドで必要なパッケージをインストールします。

# サーバー側
$ sudo apt-get update
$ sudo apt install openssh-server

インストールが完了したら、systemctlコマンドでSSHサービスが稼働していることを確認してみましょう。
サービスが停止している場合はsystemctl startで開始してください。

# サーバー側
$ systemctl status sshd

パスワード認証による接続

SSHサーバーの準備が完了したらクライアント側からsshコマンドを実行してみましょう。
ユーザー名とホスト名は環境に合わせて適切なものに変更してください。

client@client-pc:~$ ssh nakamura0907@192.168.100.100
nakamura0907@192.168.100.100's password:
Welcome to Ubuntu 22.04 LTS

nakamura0907@server-pc:~$

パスワードでログインすることができました。

公開鍵認証による接続

続いて公開鍵を用いてSSH接続をしてみましょう。

公開鍵と秘密鍵の作成

まずはクライアント側でssh-keygenコマンドを実行し、公開鍵と秘密鍵を作成します。
パスフレーズなどの設定は要件に合わせて適切なものに変更してください。

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/client/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/client/.ssh/id_rsa
Your public key has been saved in /home/client/.ssh/id_rsa.pub
$ ls ~/.ssh/
id_rsa id_rsa.pub

lsコマンドを実行すると.ssh内に公開鍵と秘密鍵が作成されていることが確認できます。

SSHの公開鍵を登録する

続いて、先ほど作成した公開鍵をssh-copy-idコマンドでサーバーのauthorized_keysファイルに登録します。

$ ssh-copy-id nakamura0907@192.168.100.100

SSHサーバーの設定を変更する

最後に、SSHの設定ファイルを編集して公開鍵認証を有効化し、パスワード認証は無効にします。
編集するファイルは/etc/ssh/sshd_configファイルです。

# サーバー側
$ sudo vim /etc/ssh/sshd_config

PubkeyAuthenticationという項目が、コメントアウトまたはnoになっているため、yesに書き換えましょう。

# PubkeyAuthentication no
PubkeyAuthentication yes

同様にPasswordAuthenticationという項目を見つけ出し、noに書き換えましょう

PasswordAuthentication no

以上で必要な設定は終わりました。systemctlコマンドを実行してサービスを再起動させましょう。

# サーバー側
$ systemctl restart sshd

クライアント側でSSH接続を試みると、パスワードを入力することなくサーバーにログインできるようになっているはずです。

まとめ

自分用のメモも兼ねてSSHサーバーを構築する方法をまとめました。
今回はサーバーの構築と認証方式の変更のみを行ったため、ポートなどはデフォルトのままになっています。そのため今後はセキュリティ周りの改善をしたいと思います。

タイトルとURLをコピーしました