「鍵認証の設定は面倒・・・」
もしかしたら、このように思っている人がいるかもしれません。
でも、実際はとても簡単です。
この記事通りにやれば、初心者でも必ず設定できます。
本記事の内容
- ユーザー作成[サーバー]
- 鍵ペア(公開鍵と秘密鍵)の作成[サーバー]
- 公開鍵の設定[サーバー]
- 疎通確認・秘密鍵の設定[クライアント]
それでは、上記に沿って説明していきます。
ユーザー作成[サーバー]
鍵ペアは、ユーザー毎に作成することになります。
そのため、まずは対象となるユーザーを新規に作成します。
下記では、「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ではパーミッションを気にする必要はありません。
以上、秘密鍵の設定について説明しました。