[Debian 10] ssh サーバの認証方法をパスワード認証から公開鍵認証に変更した

前書き

ConoHa VPS 上で稼働させている Debian を使う時、ssh でログインして各種操作をしているが、ログインする際の認証方法がパスワード認証なのでこれを公開鍵認証に変更する。

やることは先日書いた CentOS 8 の記事 と同様 (ほとんど、もしくは全く同じ) になると思うので本投稿ではさらっと記載するにとどめたい。よければ CentOS の記事も参考にしてほしい。

ssh クライアントで秘密鍵と公開鍵 = 鍵ペアを作る

僕は ssh クライアントとして MacBook Pro を使うので、この 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:GEl7/u0vKFq237r2j9x7mxl3OWuKs/L00MzYO0HsFnI nobi@nobis-mbp.lan
The key's randomart image is:
+---[RSA 4096]----+
| .               |
| . o             |
| + . .           |
| = . E           |
| . S = .         |
| . .+ .          | 
| o .=o=.+o       |
| o.o+==+..X      |
| …+BOBOB.        |
+----[SHA256]-----+
$ ls -l id*
-rw------- 1 nobi staff 3434 Jul 9 11:50 id_rsa
-rw-r--r-- 1 nobi staff 744 Jul 9 11:50 id_rsa.pub
$

秘密鍵のファイル名を変える。

$ mv id_rsa ConoHaVPSDebian

ssh サーバの下準備 (.ssh ディレクトリを作る)

Debian 側で .ssh ディレクトリを作ります。ここに MacBook Pro で作った公開鍵 (id_rsa.pub) を保管するのである。

$ cd
$ mkdir .ssh
$ chmod 700 .ssh
$ ls -ld .ssh
drwx------ 2 nobi nobi 4096 Jul 9 11:56 .ssh
$

公開鍵を ssh サーバに scp で送る

$ ls -i id_rsa.pub
58776427 id_rsa.pub
$ scp ./id_rsa.pub nobi@ww.xx.yy.zz:/home/nobi/.ssh
nobi@ww.xx.yy.zz's password:
id_rsa.pub          100%   744   112.8KB/s   00:00
$

送ってしまえば公開鍵を MacBook Pro が持っておく必要がないので削除する。

$ rm id_rsa.pub

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

$ ls -l id_rsa.pub
-rw-r--r-- 1 nobi nobi 744 Jul 9 11:59 id_rsa.pub
$ cat id_rsa.pub >> ./authorized_keys
$ chmod 600 authorized_keys
$ ls -l authorized_keys
-rw------- 1 nobi nobi 744 Jul 9 12:03 authorized_keys
$ rm id_rsa.pub
$

authorized_keys ファイルを作ったら id_rsa.pub は要らないので rm で削除した。

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

/etc/ssh/sshd_config の修正。

$ cd /etc/ssh
$ sudo cp -p sshd_config sshd_config.20200709
[sudo] password for nobi:
$ sudo vi sshd_config

vi で修正した後 diff で差分を確認する。

$ diff sshd_config.20200709 sshd_config
56c56
< PasswordAuthentication yes
---
> PasswordAuthentication no
$

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

$ sudo systemctl restart sshd
$ sudo systemctl status sshd
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2020-07-09 12:10:10 JST; 10s ago
Docs: man:sshd(8)
man:sshd_config(5)
Process: 9694 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
Main PID: 9695 (sshd)
Tasks: 1 (limit: 541)
Memory: 6.6M
CGroup: /system.slice/ssh.service
└─9695 /usr/sbin/sshd -D
Jul 09 12:10:10 systemd[1]: ssh.service: Found left-over process 9688 (sshd) in control group whi
Jul 09 12:10:10 systemd[1]: This usually indicates unclean termination of a previous run, or serv
Jul 09 12:10:10 sshd[9695]: Server listening on 0.0.0.0 port 22.
Jul 09 12:10:10 sshd[9695]: Server listening on :: port 22.
Jul 09 12:10:10 systemd[1]: Started OpenBSD Secure Shell server.
Jul 09 12:10:11 sshd[9687]: Failed password for root from 218.92.0.201 port 12196 ssh2
Jul 09 12:10:15 sshd[9687]: Failed password for root from 218.92.0.201 port 12196 ssh2
Jul 09 12:10:17 sshd[9687]: Received disconnect from 218.92.0.201 port 12196:11: [preauth]
Jul 09 12:10:17 sshd[9687]: Disconnected from authenticating user root 218.92.0.201 port 12196 [p
Jul 09 12:10:17 sshd[9687]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh rus
$

再起動したあとのステータスを見ると 10 秒前に ssh サーバが起動したことがわかります。

あと、Failed password for root from 218.92.0.201 port 12196 ssh2 とログが出ています。

これは誰かが勝手に ssh で root ログインしようとして失敗した、なログだと思います。なんどか sudo systemctl status sshd を叩けば、いろんな IP から ssh でログインしようとしてくるのがわかるでしょう。

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

$ cd
$ cd .ssh
$ cp -p config config.20200709
$ vi config

vi で編集した後はご覧の通り。

$ 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

Host aa.bb.cc.dd
 HostName aa.bb.cc.dd
 User nobi
 IdentityFile ~/.ssh/ConoHaVPSDebian
$

ssh クライアントからログインできるか確認する

$ ssh ww.xx.yy.zz
Enter passphrase for key '/Users/nobi/.ssh/ConoHaVPSDebian':
Linux ww.xx.yy.zz 4.19.0-8-amd64 #1 SMP Debian 4.19.98-1 (2020-01-26) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Thu Jul 9 11:22:42 2020 from aa.bb.cc.dd
$

Enter passphrase と聞いてきています。これは公開鍵認証を求められていることを示します。鍵ペアを作るときに入力したパスフレーズ (パスワードみたいなもの) を正しく入力することで ssh ログインができました。

コメントを残す

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

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