この記事を読むと・・・ |
---|
パスワードなしでリモートサーバにsshログインする方法が理解できる 公開鍵、秘密鍵の作成方法が理解できる |
パスワード使用せず、リモートサーバにログインする手順
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]-----+
秘密鍵のパーミッションを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-------) として保留されました
リモートサーバにクライアントサーバの公開鍵を登録するために、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.
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 ~]$