LoginSignup
0

posted at

updated at

Ubuntu22.04 公開鍵認証でSSH接続する ED25519

概要

インストールしたてのUbuntu22.04に公開鍵認証でSSH接続できるように設定します。鍵と鍵のパスフレーズでログインできるようにします。ポート変更やパスワード認証不可、rootログイン不可にしたりしてセキュリティを固めにします。ローカル環境はWindows10 Pro、teraterm4.105です。Ubuntu22.04のIPは192.168.88.15です。鍵のアルゴリズムはrsaではなくED25519を使いました。

下記のようにsshが起動していることを前提としています。(私はUbuntuインストール時にsshをインストールしました。そのあと特に何もしていませんが、sshは自動で起動しているみたいです。)

$ systemctl status ssh.service

image.png

大雑把な手順

  1. 公開鍵と秘密鍵をteratermで作る
  2. 公開鍵をサーバに設置
  3. /etc/ssh/sshd_configを変更
  4. ファイアウォール設定変更
  5. 接続確認

こちらを参考にさせていただきました。

手順1 公開鍵と秘密鍵をteratermで作る

image.png
image.png
ED25519を選びます。rsaはUbuntu22.04ではデフォルトで無効にされています。
image.png
好きなフォルダに保存しておきます。鍵のパスフレーズは手順5で使います。忘れないでください。
image.png
image.png

手順2 公開鍵をサーバに設置

image.png
image.png
チェックを外しておかないと後ではまります。
image.png
公開鍵を設置するためにブレインパスワードでサーバにSSH接続します。ユーザ名パスワードはインストール時に設定したものか、ログインできるものを使います。
image.png
ログインできるはずです。
image.png
ログインしたら、さっき保存したid_ed25519.pubをteratermにドラッグアンドドロップします。するとこの画面が出てくるのでOKを押します。
image.png
送られたことを確認します。
image.png
ここからは公開鍵id_ed25519.pubをリネームして.sshフォルダに移動する作業をするのですが、もともとhomeに.sshフォルダがありauthorized_keysが入っていいたので、default_authorized_keysにして念のためバックアップとしておきます。

$ mv .ssh/authorized_keys .ssh/default_authorized_keys

id_ed25519.pubをリネームして.sshフォルダに移動させて、ファイル、ディレクトリの権限を変更します。

$ mv id_ed25519.pub .ssh/authorized_keys
$ chmod 700 .ssh
$ chmod 600 .ssh/authorized_keys

手順3 /etc/ssh/sshd_configを変更

sshd_configのバックアップを取っておきます。

$ sudo cp /etc/ssh/sshd_config /etc/ssh/backup_sshd_config

sshd_configをnanoで書き換えます。

$ sudo nano /etc/ssh/sshd_config

ポート番号など、セキュリティを固くします。
上から順番に変更点。コメントアウトを消したところもあります。

Port 55055
PermitRootLogin no
PasswordAuthentication no
PasswordAuthentication no

変更したら、Ctrl+X押して、Y押してEnter。sshを再起動します。

systemctl restart sshd

手順4 ファイアウォール設定変更

ここからサーバのコンソールで作業します。55055だけアクセスできるようにします。limitは30秒間の間に6回以上接続を試みたIPアドレスを許可しないです。

$ sudo ufw enable
$ sudo ufw limit 55055
$ sudo ufw status

こんな感じになりました。
image.png

手順5 接続確認

image.png
image.png
パスフレーズは手順1で鍵作成時に入力したものです。
image.png
ログイン出来たら完了です。
image.png
22番ポートやパスワード、rootでログインを試みましたが、設定どおりログインできないようになっていました。

さいごに

Ubuntu20.04では、鍵のアルゴリズムにrsaを使っても問題なかったのですが、22.04ではエラーが出るらしいです。(デフォルトはrsaが無効にされている。私は、たまたまエラーが出る前に知って、エラーが出るか見れてません。)22.04でもrsaを使う回避策があるらしいのですが、解決策はED25519を使うとのことでした。
https://ja.confluence.atlassian.com/bitbucketserverkb/ssh-rsa-key-rejected-with-message-no-mutual-signature-algorithm-1026057701.html

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0