Ubuntu Server 19.10へのssh接続方式を公開鍵認証のみにしておく

How To Server Ubuntu

さて、新たに環境構築したUbuntu Server19.10ですがWEBサーバですから、常に外部に晒されております。
UFWで基本使わないポートはブロックしているとは言え、sshのポートは空いています。
ssh接続をローカルだけに限定できれば安全ですが、外部接続が必要もあるため、接続方式をID/PASSによる認証方式から公開鍵認証だけに限定するよう変更しておくと鍵がない限り接続できないのでセキュリティ対策として効果がありますね。

尚、本手順はネット上で検索すればいくらでも出てくると思いますが、ここでは自分自身の作業の備忘として書き残しておきます。

鍵ファイルの作成

WEBサーバ上で以下を実行

$ ssh-keygen

Generating public/private rsa key pair.
Enter file in which to save the key (/home/UserName/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again:
Your identification has been saved in /home/UserName/.ssh/id_rsa.
Your public key has been saved in /home/UserName/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:0nPqic9t4V35+reLqA1aFBQ59j65V5zNUXKUtKTXzNI akkun@tpx121e
The key's randomart image is:
+---[RSA 3072]----+
|         oo   .+o|
|        .+    +==|
|        ..o  ..=E|
|       .  ..  .o |
|      . S.o . .o+|
|       ..+.+  o+o|
|        .+ oo... |
|       +oo=.o.. o|
|      .o=ooo...==|
+----[SHA256]-----+

以下の2ファイルが生成されていることが確認できる。

$ cd .ssh/
$ ls -al
-rw-------  1 UserName UserName 2602  3月 20 13:11 id_rsa
-rw-r--r--  1 UserName UserName  567  3月 20 13:11 id_rsa.pub

それぞれリネームする。以下は例。

$ mv id_rsa.pub authorized_keys
$ mv id_rsa thinkpadx121e.pem

thinkpadx121e.pemの方はクライアント側で必要になるため、ファイルを移動する。
catで中身を開いて、コピーし、手元端末にテキストファイルとして保存でもOK。

クライアント側で上記鍵ファイルを保存する場所は以下になります。

~/.ssh/thinkpadx121e.pem

また鍵ファイルのパーミッションは600としなければなりませんので以下を実施します。

$ chmod 600 .ssh/thinkpadx121e.pem

sshサーバの設定

鍵ファイルの準備が終わったらsshサーバの設定を行う。
設定ファイルをエディタで開き、該当箇所を変更する。

以下のコメントアウトを外す

PubkeyAuthentication yes

鍵ファイルのパスとファイル名を合わせる。

#AuthorizedKeysFile	.ssh/authorized_keys .ssh/authorized_keys2
AuthorizedKeysFile	.ssh/authorized_keys

上記後に、sshサーバを再起動し、一度切断後、鍵ファイルによる接続が可能か確認する。

$ ssh [UserName]@[サーバホスト名] -i .ssh/thinkpadx121e.pem

上記で接続OKならば、IDとパスワードによる認証は許可しないよう以下コメントアウトし、noとしてsshサーバを再起動する。

#PasswordAuthentication yes
PasswordAuthentication no

sshサーバの再起動コマンドは以下

$ sudo systemctl restart sshd

再度、接続して問題ないことを確認して作業完了。

ssh接続のショートカットを作成しておく

毎回接続時に以下のように鍵ファイル名まで入力していたら手間ですのでショートカットを作成しておくとよいです。

$ ssh [UserName]@[サーバホスト名] -i .ssh/thinkpadx121e.pem

.ssh/configファイルを作成、編集します。

$ vi .ssh/config

configファイルの書き方例

Host thinkpad
HostName 192.168.X.XXX
User UserName
IdentityFile ~/.ssh/thinkpadx121e.pem
TCPKeepAlive yes

configファイルのパーミッションは以下で設定します。

$ chmod 644 .ssh/config

上記により以下コマンドだけで接続可能です。

$ ssh thinkpad

以下はパーミッション設定は実施しなくても接続可能ではありますが、念のためやっておいた方が良いでしょう。

$ chmod 700 .ssh

それではHappy Hackingライフを!!