【Ubuntu】SSHの認証を公開鍵認証へ変更する方法

SSHの認証を公開鍵認証へ変更

UbuntuでSSHの認証をユーザ名とパスワードによる認証から、秘密鍵と公開鍵を使用した公開鍵認証方式へ変更する方法を説明していきます。

公開鍵認証について

ユーザ名とパスワードによる認証の場合、その情報が漏れてしまうと他人が簡単にログインすることが出来てしまいますが、公開鍵認証の場合は秘密鍵を持っていなければユーザ名とパスワードの情報が漏れてしまった場合でもログインすることが出来ないため、セキュリティレベルが上がります。

作業内容

公開鍵認証を導入するための作業は下記の流れで行っていきます。

  • 秘密鍵と公開鍵の作成
  • 公開鍵を接続先サーバへ登録
  • SSHサーバ設定変更

秘密鍵と公開鍵の作成と公開鍵の登録

SSHクライアントであるRLoginを使用しての秘密鍵と公開鍵の作成と、接続先のSSHサーバへの公開鍵登録方法については、下記ページで説明してありますので参照願います。

RLoginでSSH用認証鍵ペアを作成する方法
RLoginでSSH用の秘密鍵と公開鍵のペアを作成する方法 SSH接続用のクライアントであるRloginを使用して、SSH接続用の秘密鍵と公開鍵を作成する方法について説明していきます。 作成した秘密鍵と公開鍵はそれぞれ以下の場所に保存して使...

SSHサーバ設定変更

接続先のSSHサーバで/etc/ssh/sshd_configを編集して、パスワード認証を行わないように設定を変更します。

$ sudo cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_$(date +%Y%m%d-%H%M%S)
$ sudo vi /etc/ssh/sshd_config

パスワード認証を許可するかどうかは「PasswordAuthentication」という項目で設定されていますので、この設定をyesからnoに変更してパスワード認証を行わないようにします。

Ubuntu Server 20.04の場合、編集箇所は下記の2箇所でした。

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication yes   # 変更前

PasswordAuthentication no    # 変更後
# Example of overriding settings on a per-user basis
#Match User anoncvs
#       X11Forwarding no
#       AllowTcpForwarding no
#       PermitTTY no
#       ForceCommand cvs server
PasswordAuthentication yes    # 変更前

PasswordAuthentication no     # 変更後

設定が終わったらsshdを再起動して設定を反映させます。

$ sudo systemctl restart sshd

設定が反映されているかの確認は下記のコマンドで確認することができます。

$ sudo sshd -T | grep passwordauthentication
passwordauthentication no

動作確認

動作確認として下記の実際にSSHで接続を行い動作検証を行ってください。

  • パスワード認証でログインできないこと
  • 作成した秘密鍵を使ってログインできること

動作に問題がなければ作業は完了となります!

コメント

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