サーバー構築を体験するために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サーバーを構築する方法をまとめました。
今回はサーバーの構築と認証方式の変更のみを行ったため、ポートなどはデフォルトのままになっています。そのため今後はセキュリティ周りの改善をしたいと思います。