【Ubuntu】公開鍵認証によるSSH接続の設定(公開鍵・秘密鍵の作成)

【Ubuntu】公開鍵認証によるSSH接続の設定(公開鍵・秘密鍵の作成) サーバー

「鍵認証の設定は面倒・・・」

もしかしたら、このように思っている人がいるかもしれません。
でも、実際はとても簡単です。

この記事通りにやれば、初心者でも必ず設定できます。

本記事の内容

  • ユーザー作成[サーバー]
  • 鍵ペア(公開鍵と秘密鍵)の作成[サーバー]
  • 公開鍵の設定[サーバー]
  • 疎通確認・秘密鍵の設定[クライアント]

それでは、上記に沿って説明していきます。

ユーザー作成[サーバー]

鍵ペアは、ユーザー毎に作成することになります。
そのため、まずは対象となるユーザーを新規に作成します。

下記では、「ssh_test」という名前のユーザーを作成しています。

$ sudo adduser ssh_test 
ユーザー `ssh_test' を追加しています... 
新しいグループ `ssh_test' (1002) を追加しています... 
新しいユーザー `ssh_test' (1002) をグループ `ssh_test' に追加しています... 
ホームディレクトリ `/home/ssh_test' を作成しています... 
`/etc/skel' からファイルをコピーしています... 
新しいパスワード: 
新しいパスワードを再入力してください: 
passwd: パスワードは正しく更新されました 
ssh_test のユーザ情報を変更中 
新しい値を入力してください。標準設定値を使うならリターンを押してください 
        フルネーム []: 
        部屋番号 []: 
        職場電話番号 []: 
        自宅電話番号 []: 
        その他 []: 
以上で正しいですか? [Y/n]

「Y」を入力して、Enterを押して終わりです。

鍵ペア(公開鍵と秘密鍵)の作成[サーバー]

鍵ペアは、ユーザー毎に作成します。
そのため、対象となるユーザーでサーバーにアクセスします。

今回は、ssh_testというユーザーを対象として鍵ペアを作成しています。
基本的には、デフォルト(そのままEnter)で問題ありません。

パスフレーズは、必要なら設定しましょう。
今回は、パスフレーズに何も設定していません。

$ whoami 
ssh_test
$ ssh-keygen 
Generating public/private rsa key pair. 
Enter file in which to save the key (/home/ssh_test/.ssh/id_rsa):
Created directory '/home/ssh_test/.ssh'. 
Enter passphrase (empty for no passphrase):
Enter same passphrase again: 
Your identification has been saved in /home/ssh_test/.ssh/id_rsa 
Your public key has been saved in /home/ssh_test/.ssh/id_rsa.pub 
The key fingerprint is: 
SHA256:TjSMNIUR7dwa8Ol0uw+5dpFDY2nR1VOge1Deerga8YE ssh_test@ubuntu-focal 
The key's randomart image is: 
+---[RSA 3072]----+ 
|      =*.    .oo=| 
|     .o+.   .+.o.| 
|      .=+o  oo. o| 
|       .B.o *+ o | 
|       oS+ =Eo= .| 
|       oo ..++ + | 
|        . o..oo  | 
|          oo.o   | 
|         ..oo    | 
+----[SHA256]-----+

処理が完了したら、鍵を確認します。
デフォルトの設定なら、home以下の「.ssh」に保存されています。

$ ls -l ~/.ssh --time-style="+"
合計 8 
-rw------- 1 ssh_test ssh_test 2610 id_rsa 
-rw-r--r-- 1 ssh_test ssh_test  575 id_rsa.pub

ファイルは、それぞれ以下を表しています。

id_rsa秘密鍵
id_rsa.pub公開鍵

公開鍵の設定[サーバー]

やるべきことは、次の3点。

  • id_rsa.pubをauthorized_keysに名称変更する
  • authorized_keysを~/.ssh に設置する
  • authorized_keysのパーミッションを600に変更する

それぞれを行っていきましょう。

id_rsa.pubをauthorized_keysに名称変更する

$ mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys

すでにauthorized_keysが存在する場合は、id_rsa.pubの内容をauthorized_keysに追記します。
ただし、この場合はid_rsa.pubを削除する必要があります。

authorized_keysを~/.ssh に設置する

$ ls -l ~/.ssh --time-style="+"
合計 8 
-rw-r--r-- 1 ssh_test ssh_test  575  authorized_keys 
-rw------- 1 ssh_test ssh_test 2610  id_rsa

authorized_keysのパーミッションを600に変更する

$ chmod 600 ~/.ssh/authorized_keys

確認します。

$ ls -l ~/.ssh --time-style="+"
合計 8 
-rw------- 1 ssh_test ssh_test  575  authorized_keys 
-rw------- 1 ssh_test ssh_test 2610  id_rsa

疎通確認・秘密鍵の設定[クライアント]

サーバーで作成した秘密鍵であるid_rsaをクライアントに持っていきます。
あとは、この秘密鍵を利用してサーバーにアクセスするだけです。

sshコマンドを用いた場合について、コマンドを記載しておきます。

ssh -l ユーザー名 -i 秘密鍵のパス サーバーIP(ホスト名)

実際は、以下のように実行します。
LinuxとWindowsで若干、異なります。

Linux(Ubuntu)

$ ssh -l ssh_test -i ./id_rsa 192.168.33.100

Linuxでは、秘密鍵の場所はどこでもOKです。
ただし、パーミッションには注意しないといけません。

$ chmod 600 id_rsa

Linux上では、秘密鍵のパーミッションを600にしておく必要があります。
ここは注意しましょう。

Windows

Windows 10の場合です。
コマンドプロンプト・PowerShellで実行可能。

$ ssh -l ssh_test -i id_rsa 192.168.33.100

Windowsの場合、秘密鍵は場所が指定(固定)されています。
次のディレクトリに秘密鍵を設置します。

C:\Users\ユーザー名\.ssh

秘密鍵のフルパスは、「C:\Users\ユーザー名.ssh\id_rsa」となります。

ただし、この場所指定はコマンドプロンプト・PowerShellを利用する場合の話です。
それもデフォルトで利用可能な、sshコマンドの話になります。

それ以外のSSHツールを利用する場合は、秘密鍵の場所は問われません。
なお、Windowsではパーミッションを気にする必要はありません。

以上、秘密鍵の設定について説明しました。

タイトルとURLをコピーしました