さくらの VPS の Ubuntu 20.04 に公開鍵認証 (パスワードなし) で SSH ログインできるように設定する

前書き

これまで公開鍵認証を使った SSH ログインの方法をこのブログでも紹介してきたが、僕はこれまでパスワード (パスフレーズと言われることもあるようだ) も使うように構成してきた。

しかし諸事情により、パスワードなしで公開鍵認証を使った SSH ログインをする必要性が出てきたので記事として書くことにした。

環境情報

さくらの VPS で稼働させている Ubuntu 20.04 に対して、Ubuntu、Linux Lite、FreeBSD からパスワードなし且つ公開鍵認証で SSH ログインできるように設定する。

SSH クライアント側の OS はさまざまだがやり方は同じである。

前提条件

さくらの VPS 側ファイウオール (パケットフィルターと呼ばれています) で SSH 通信の許可設定がされている必要がある。パケットフィルターの設定に関しては以下の記事を参考にしてください。

【さくらの VPS】パケットフィルターを設定する方法

パケットフィルターを使っていない場合は ufw で SSH の許可設定を行えばオッケーです。ufw の使い方については以下の記事をご参考にしてください。

[さくらの VPS] Ubuntu の ufw で送信元の IP アドレスを指定して SSH を許可する方法

[1] SSH クライアント側で SSH キーペアを作る

ssh-keygen コマンドを使う。

$ cd
$ cd .ssh
$ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hoge/.ssh/id_rsa): home_sakura1
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in home_sakura1
Your public key has been saved in home_sakura1.pub
The key fingerprint is:
SHA256:78ev5MoKRMD9RpJzFP8vGDRwGVZHuBnezrtUu/mZ57A hoge@CF-S10
The key's randomart image is:
+---[RSA 4096]----+
| ... o+.++.oo |
| ..= o=. o. |
| .* +. = |
| . o. o+ . |
| ..S . .o .|
| . . o .o..|
| . o.o +o |
| . o ooo.o*|
| ..+oooEB=|
+----[SHA256]-----+
$ ls -l home_sakura1*
-rw------- 1 hoge hoge 3369 5月 26 23:37 home_sakura1
-rw-r--r-- 1 hoge hoge 737 5月 26 23:37 home_sakura1.pub
$

5 行目で home_sakura1 と入力しているのは、ssh-keygen コマンドで作成される公開鍵と秘密鍵 (ただのテキスト情報のファイル) のファイル名を指定しています。

home と読んでいるサーバーから さくらの VPS の 1 号機 (契約が複数あるのでこのように呼んでいます) にログインするときに使うから、そんな名前にしました。

6 – 7 行目はエンターだけ押します。これでパスワード (passphrase と表示されている) を設定しないことになります。

ls コマンドで作成された公開鍵 (ファイル名は home_sakura1.pub) と秘密鍵 (ファイル名は home_sakura1) を確認しています。

[2] 作った公開鍵を SSH サーバーの authorized_keys に追記する

次に、ssh-keygen コマンドで作った公開鍵のファイルを SSH サーバー側 (さくら VPS の Ubuntu) に何らかの方法で持っていきます。

厳密には必ずしも持っていく必要はないのですが、ここでは scp コマンドで送ることにします。

$ scp ./home_sakura1.pub 11.22.33.44:/home/hoge/.ssh/
$

11.22.33.44 というのは適当に書いています。本当はさくらの VPS に設定されているグローバル IP アドレスです。

scp コマンドで公開鍵を送ったら cat で authorized_keys に追記する。

$ cd
$ cd .ssh
$ ls -tlr
total 8
-rw------- 1 hoge hoge 3706 Feb 26 16:49 authorized_keys
-rw-r--r-- 1 hoge hoge  737 May 26 23:49 home_sakura1.pub
$
$ cat home_sakura1.pub >> authorized_keys
$ rm home_sakura1.pub
$

[3] SSH クライアント側で config ファイルを設定する

SSH クライアント側で残り作業です。SSH 接続をするときに使用する config ファイルの設定です。ssh-keygen コマンドで作った秘密鍵を使うように設定するわけです。

$ cd
$ cd .ssh
$ vi config

僕は vi エディターを使って設定しています。以下が設定後の config ファイルの中身です。

$ cat config
Host sakura1
  HostName 11.22.33.44
  User hoge
  IdentityFile ~/.ssh/home_sakura1
$ rm home_sakura1.pub
$

HostName のところには SSH サーバーのグローバル IP アドレスを記載します。11.22.33.44 というのは適当に書いています。僕が契約してるさくらの VPS の IP アドレスではありません。

IdentityFile のところに ssh-keygen コマンドで作った秘密鍵のファイル (home_sakura1) を指定します。

このように config ファイルを設定することで ssh sakura1 と叩くと 11.22.33.44 に公開鍵認証で SSH ログインを開始する動作になります。

home_sakura1.pub (公開鍵のファイル) は SSH サーバー側にもういらないので削除しておきます。

[4] SSH ログインする!

SSH クライアント側で ssh sakura1 と叩いてログインできればオッケーです。

$ ssh sakura1
Welcome to Ubuntu 20.04.1 LTS (GNU/Linux 5.4.0-137-generic x86_64)

* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage

System information disabled due to load higher than 2.0

* Strictly confined Kubernetes makes edge and IoT secure. Learn how MicroK8s
just raised the bar for easy, resilient and secure K8s cluster deployment.

https://ubuntu.com/engage/secure-kubernetes-at-the-edge

64 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

New release '22.04.2 LTS' available.
Run 'do-release-upgrade' to upgrade to it.

*** System restart required ***

SAKURA Internet [Virtual Private Server SERVICE]

Last login: Sat May 27 00:11:42 2023 from 55.66.77.88
$



コメントを残す

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

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