[CentOS 8] VPS 上で動かしてるから ssh サーバの認証をパスワード認証から公開鍵認証に変更した

前書き

さくらの VPS で稼働させている CentOS の ssh サーバの認証方法を変更する。パスワード認証から公開鍵認証への変更だ。

CentOS の NIC にグローバル IP が設定されているため、インターネット上のどこからでも IP 通信ができる状態にある。

つまりパスワード認証のまま放置すると、万が一 CentOS に登録してあるユーザー名とそのパスワードがバレてしまうと、誰にでもログインされてしまう可能性がある。

公開鍵認証に変えてしまえば、原理的にこのリスクを排除できる。だからやるのだ。

参考記事

過去に同様の設定を Ubuntu でやったときの記事Linux Lite でやったときの記事 を参考にする。

ssh クライアントを決める

まず CentOS に ssh ログインできる端末 (パソコン) を決めます。僕の場合は愛用の MacBook Pro です。この MacBook Pro だけ CentOS に ssh ログインできるようにします。

ssh クライアントで鍵ペアを作る

では MacBook Pro で鍵ペア = 秘密鍵と公開鍵を作る。

$ cd
$ cd .ssh
$ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/nobi/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/nobi/.ssh/id_rsa.
Your public key has been saved in /Users/nobi/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:IsRuDWAx6NQtMYfeSsarClGQkLlq2CxqV/A51zPrTQw nobi@nobis-mbp.lan
The key's randomart image is:
+---[RSA 4096]----+
|+=*++.           |
|=+ Bo.           |
|o.+ *            |
|.o O +           |
|+oo O + SE       |
|+oo+ * o +o      |
|+.. . o +o       |
|oo . .o          |
|+ . .. .         |
+----[SHA256]-----+
$ ls -l id_rsa*
-rw------- 1 nobi staff 3434 Jul 1 18:25 id_rsa
-rw-r--r-- 1 nobi staff 744 Jul 1 18:25 id_rsa.pub
$

秘密鍵 (id_rsa) のファイル名を変える。無理に変えなくても良いが僕は変える。

$ mv id_rsa SakuraVPSCentOS
$

ssh サーバで下準備する

以下のように .ssh ディレクトリを作る。ここに ssh クライアントで作った公開鍵 (id_rsa.pub) を持っていくためである。

$ cd
$ mkdir .ssh
$ chmod 700 .ssh
$ ls -ld .ssh
drwx------ 2 nobi nobi 4096 Jul 1 18:23 .
$

公開鍵を ssh クライアントから ssh サーバに scp で送る

$ scp ./id_rsa.pub nobi@ww.xx.yy.zz:/home/nobi/.ssh
nobi@ww.xx.yy.zz's password:
id_rsa.pub          100%   744   32.0KB/s   00:00
$

ssh サーバに送ってしまえば ssh クライアントが公開鍵を持っている必要はないので削除する。

$ rm id_rsa.pub
$

ssh サーバで authorized_keys ファイルを作る

$ ls -l id_rsa.pub
-rw-r--r-- 1 nobi nobi 744 Jul 1 18:35 id_rsa.pub
$ cat id_rsa.pub >> ./authorized_keys
$ chmod 600 authorized_keys
$ ls -l authorized_keys
-rw------- 1 nobi nobi 744 Jul 1 18:38 authorized_keys
$

authorized_keys を作ったら (今じゃなくてもいいけど) id_rsa.pub を削除する。

$ rm id_rsa.pub
$

ssh サーバ側でパスワード認証を無効にする

/etc/ssh/sshd_config を vi で修正します。

$ cd /etc/ssh
$ ls -l sshd_config*
-rw------- 1 root root 4423 Jul 1 04:08 sshd_config
-rw------- 1 root root 4425 Feb 5 01:01 sshd_config.org
$ sudo cp -p sshd_config sshd_config.20200701
[sudo] password for nobi:
$ sudo vi sshd_config

どこを修正したかというと、

$ sudo diff sshd_config.20200701 sshd_config
71c71
< #PasswordAuthentication yes
---
PasswordAuthentication no
73d72
< PasswordAuthentication yes
$

今回の場合、

  • 71 行目の #PasswordAuthentication yes を PasswordAuthentication no に変更した
  • 73 行目の PasswordAuthentication yes を削除した

の 2 箇所を変更しています。

ここで ssh サーバのプロセスを再起動します。

$ sudo systemctl restart sshd
$ sudo systemctl status sshd
● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2020-07-01 18:48:23 JST; 17s ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 3727 (sshd)
Tasks: 1 (limit: 2851)
Memory: 1.5M
CGroup: /system.slice/sshd.service
└─3727 /usr/sbin/sshd -D -4 -oCiphers=aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes256-cbc,aes128-gcm@openssh.com,aes128-ctr,aes128-cbc -oMACs=hmac-sha2-256-etm@openssh.com,hmac-sha1-etm@openssh.com,umac->
Jul 01 18:48:23 ik1-417-40590.vs.sakura.ne.jp systemd[1]: Starting OpenSSH server daemon…
Jul 01 18:48:23 ik1-417-40590.vs.sakura.ne.jp sshd[3727]: Server listening on 0.0.0.0 port 22.
Jul 01 18:48:23 ik1-417-40590.vs.sakura.ne.jp systemd[1]: Started OpenSSH server daemon.
Jul 01 18:48:34 ik1-417-40590.vs.sakura.ne.jp sshd[3731]: Received disconnect from ii.jj.kk.ll port 27883:11: [preauth]
Jul 01 18:48:34 ik1-417-40590.vs.sakura.ne.jp sshd[3731]: Disconnected from authenticating user root ii.jj.kk.ll port 27883 [preauth]
$

sudo systemctl status sshd で再起動後のプロセスの状態 (いつ起動されたか) を確認します。

ssh クライアントの config ファイルを修正する

以下はやり方の一例です。

$ pwd
/Users/nobi/.ssh
$ ls -l config
-rw-r--r-- 1 nobi staff 244 Jun 30 18:57 config
$ cp -p config config.20200701
$ vi config

vi で編集したあと cat してみると

$ cat config
Host 172.16.1.2
 HostName 172.16.1.2
 User nobi
 IdentityFile ~/.ssh/ubuntu_rsa

Host 172.16.1.3
 HostName 172.16.1.3
 User nobi
 IdentityFile ~/.ssh/raspi_rsa

Host 172.16.1.4
 HostName 172.16.1.4
 User nobi
 IdentityFile ~/.ssh/linuxlite_rsa

Host ww.xx.yy.zz
 HostName ww.xx.yy.zz
 User nobi
 IdentityFile ~/.ssh/SakuraVPSCentOS
$

こんな具合である。

ssh クライアントから ssh ログインしてみる

$ ssh ww.xx.yy.zz
Enter passphrase for key '/Users/nobi/.ssh/SakuraVPSCentOS':

SAKURA Internet [Virtual Private Server SERVICE]

Last login: Wed Jul 1 18:47:26 2020 from aa.bb.cc.dd
$

ssh ログインできた!

SAKURA Internet [Virtual Private Server SERVICE]

と書かれていることから、さくらの VPS 環境のサーバにログインできたことがわかる。これで良し!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください