【Linux】パスワードなしでリモートログインする方法(SSH公開鍵認証)

パスワードを使用せず、リモートログインする方法(SSH公開鍵認証)
この記事を読むと・・・
パスワードなしでリモートサーバにsshログインする方法が理解できる
公開鍵、秘密鍵の作成方法が理解できる
目次

パスワード使用せず、リモートサーバにログインする手順

STEP
クライアントサーバーにて公開鍵、秘密鍵を作成する

ssh-keygen コマンドを実行し、公開鍵、秘密鍵を作成します。
暗号化方式は様々ありますが、今回は一般的なrsa-tオプションで明示的に指定しています。(デフォルトはrsa)

コマンドを実行すると以下のような内容が聞かれます。
①Enter file in which to save the key (<実行ユーザのホームディレクトリ>/.ssh/id_rsa):
これは鍵の名称と保存先を聞かれています。
デフォルトでは「実行ユーザーのホームディレクトリ/.ssh」に以下表のとおり、秘密鍵と公開鍵が作られるので、特段理由がない場合は、何も入力せず「Enter」キーを押下すればOKです。

ファイル名説明
id_rsa秘密鍵
id_rsa.pub公開鍵

②Enter passphrase (empty for no passphrase):
パスフレーズを聞かれています。
これはパスワードより長いパスフレーズを使用してログインをする場合には設定するべきですが、今回はパスワードなしでログインできるようにしたいので、何も入力せずに「Enter」キーを押下すればOKです。

③Enter same passphrase again:
再度パスフレーズを聞かれます。
パスフレーズは設定しないので、何も入力せずに「Enter」キーを押下すればOKです。

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/sshuser01/.ssh/id_rsa):←「Enter」キーを押下する
Created directory '/home/sshuser01/.ssh'.
Enter passphrase (empty for no passphrase):←「Enter」キーを押下する
Enter same passphrase again:←「Enter」キーを押下する
Your identification has been saved in /home/sshuser01/.ssh/id_rsa
Your public key has been saved in /home/sshuser01/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:7pC465ud30YdwTjH7/5ZSeFiGLz2rHDj6q+XavJHatc sshuser01@TEST02
The key's randomart image is:
+---[RSA 3072]----+
|           +     |
|          + =    |
|           = o . |
|            = o .|
|        S  = = o |
|     . o  o.= + .|
|    . o .oooo+ ..|
|     + = ===oE. o|
|   .*oo.OBX+   o.|
+----[SHA256]-----+
STEP
秘密鍵のパーミッションを600に変更する

秘密鍵のパーミッションを600に変更します。
今回の実行環境では作成時にすでにパーミッションが600だったので実行は不要でした。
パーミッションが600ではない場合はchmodコマンドで600に変更してください。

$ ls -la /home/sshuser01/.ssh/
合計 8
drwx------ 2 sshuser01 sshuser01   38 10月 27 22:31 .
drwx------ 3 sshuser01 sshuser01   74 10月 27 22:31 ..
-rw------- 1 sshuser01 sshuser01 2602 10月 27 22:31 id_rsa
-rw-r--r-- 1 sshuser01 sshuser01  570 10月 27 22:31 id_rsa.pub

$ chmod -v 600 /home/sshuser01/.ssh/id_rsa
'/home/sshuser01/.ssh/id_rsa' のモードは 0600 (rw-------) として保留されました
STEP
クライアントサーバーからリモートサーバーに公開鍵を転送して登録する

リモートサーバにクライアントサーバの公開鍵を登録するために、ssh-copy-id -i <実行ユーザーのホームディレクトリ>/.ssh/id_rsa.pub <リモートユーザー>@<リモートサーバーのホスト名またはIPアドレス>コマンドを実行し、クライアントサーバの公開鍵をリモートサーバに登録します。
※リモートサーバの「転送先ユーザのホームディレクトリ/.ssh/authorized_keys」に登録されます。

$ ssh-copy-id -i /home/sshuser01/.ssh/id_rsa.pub testuser01@REMOTESERVER
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/sshuser01/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
testuser01@remoteserver's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'testuser01@REMOTESERVER'"
and check to make sure that only the key(s) you wanted were added.
STEP
リモートサーバーにパスワードを使用せずログインする

ssh <リモートユーザー>@<リモートサーバーのホスト名またはIPアドレス> コマンドを実行し、リモートサーバーにパスワードを使用せずにログインできることを確認します。

一度もリモートログインしていないサーバーに接続した場合、以下のメッセージが表示されが表示されますが、「yse」を入力し、「Enter」キーを押下すればOKです。
Are you sure you want to continue connecting (yes/no/[fingerprint])?
※クライアントサーバーの「ユーザのホームディレクトリ/.ssh/known_hosts」にリモートサーバーの公開鍵情報が書き込まれます。

[sshuser01@CLIENTSERVER .ssh]$ ssh testuser01@REMOTESERVER
The authenticity of host 'remoteserver (192.168.56.101)' can't be established.
ED25519 key fingerprint is SHA256:BbZW87sA5Z8UhtmOuHEclIZZw65T8xpeXUqBxKrLCjo.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'remoteserver' (ED25519) to the list of known hosts.
Last login: Fri Oct 27 23:36:16 2023
[testuser01@REMOTESERVER ~]$
よかったらシェアしてね!
  • URLをコピーしました!
目次