はじめに
踏み台サーバーに公開鍵と秘密鍵を作成して、公開鍵をサーバーに登録するにはssh-copy-idコマンドが便利と聞いたため、試してみました。
発行した秘密鍵と公開鍵の名前は変更しないでください。ssh-copy-idコマンド実行時に鍵がありませんというエラーが出ます。
参考にしたサイトです。
https://atmarkit.itmedia.co.jp/ait/articles/1908/15/news023.html
https://qiita.com/gakuseikai/items/707a8f740db59a8c30ef
ユーザーにSSH接続する
踏み台サーバーにて公開鍵と秘密鍵を作成する
今回はパスフレーズなしです。
ssh-keygen -t rsa
デフォルトで RSA 鍵を生成することが多いですが、必要に応じて他の鍵タイプ(たとえば、ED25519 や ECDSA など)を生成するために -t オプションを使用した方がよいです。
今回はデフォルトRSAで鍵を作成しました。
[test1@localhost ~]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/test1/.ssh/id_rsa):
Created directory '/home/test1/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/test1/.ssh/id_rsa.
Your public key has been saved in /home/test1/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:lBf+DZmCnp585WybpYYBjALte7yp1MAJgzVQJVF1d3c test1@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
|.o*=o.. . o . . E|
| o.o. . = o + . |
|. oo o+ + + |
| +o..ooo o o |
| ++ S. o . |
| .ooo ..+ |
| ...o+ .o+ . |
| . o ....= |
| .. .+ |
+----[SHA256]-----+
鍵が作成されたことを確認する
[test1@localhost .ssh]$ ls -tlra /home/test1/.ssh/
合計 8
drwxr-xr-x. 3 test1 test1 112 1月 21 19:31 ..
-rw-r--r--. 1 test1 test1 409 1月 21 19:31 id_rsa.pub ※公開鍵
-rw-------. 1 test1 test1 1675 1月 21 19:31 id_rsa ※秘密鍵
drwx------. 2 test1 test1 38 1月 21 19:31 .
作成した公開鍵をサーバーに登録する
iオプションに公開鍵を指定する
[test1@localhost .ssh]$ ssh-copy-id -i id_rsa.pub test1@192.168.0.101
/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "id_rsa.pub"
/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
test1@192.168.0.101's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'test1@192.168.0.101'"
and check to make sure that only the key(s) you wanted were added.
[test1@localhost .ssh]$
[test1@localhost .ssh]$
サーバーにSSH接続してauthorized_keysファイルに公開鍵が登録されたことを確認する。
自動的にauthorized_keysは作成されます。
サーバーに例192.168.0.101に先ほど作成した秘密鍵でSSH接続できることを確認する。
ssh -i id_rsa test1@192.168.0.101
authorized_keysファイルに公開鍵が登録されていることを確認する。
[test1@localhost ~]$ cd .ssh
[test1@localhost .ssh]$ ls -tlra
合計 4
drwx------. 3 test1 test1 95 1月 21 19:35 ..
drwx------. 2 test1 test1 29 1月 21 19:35 .
-rw-------. 1 test1 test1 409 1月 21 19:35 authorized_keys
authorized_keysファイルの中身を確認する
[test1@localhost .ssh]$ cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCtOpKUSNmqf5Nvycc/560MAcnAMWuFyKb/d07WDdRr2JW4SaefBlV9fRY2d6Z+0W+MPztnBVUFZY9jFSocMk67o6v15PjTvkLTL9XOg7Itj180pvxS/RoCLbzUPlS3npdIkAHUvxihpRG/YMi6O65Y4SGRDDIv4GPRiaRYK2jwsh/LFXu7mlnqgwYrm69zjK1APqFxmW2DG8uFHXdc+83xutO1mrqr5QwQZyz1EBOMdUbXACkAdN+n8olSAp9PpTDhNlIaBv2V0k2WJ+O5R12VVfDYXfHHri/jyQ8pv3MSMXWSieNQQ9l9ndyz+IT5aIYege+bcQg0qspVCDzKH+nh test1@localhost.localdomain
2つ目の秘密鍵と公開鍵を踏み台サーバーに作成してみた
-fオプションで秘密鍵と公開鍵のファイル名を指定します。
https://uxmilk.jp/52740
[test1@localhost .ssh]$ ssh-keygen -f id_rsa2
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_rsa2.
Your public key has been saved in id_rsa2.pub.
The key fingerprint is:
SHA256:JyXlL2ARI6Jm5Wx9zf8XsTKM/aiie9I8jd9kOYa8xpk test1@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
| o . +.. |
| = o . B |
| + + . = = . |
| o . o + o+ o|
| S o.o= o |
| o....* .|
| o +ooB...|
| . B EB .. |
| o= =+ . |
+----[SHA256]-----+
[test1@localhost .ssh]$
同じ鍵名にすると上書きされるため、既存の鍵とは異なる鍵名にする必要があります。
[test1@localhost .ssh]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/test1/.ssh/id_rsa):
/home/test1/.ssh/id_rsa already exists.
Overwrite (y/n)? ←上書きしますかというメッセージが出ます。
[test1@localhost .ssh]$ ssh-keygen
秘密鍵と公開鍵が作成されたことを確認する
[test1@localhost .ssh]$ pwd
/home/test1/.ssh
[test1@localhost .ssh]$ ls -ltra
合計 24
drwxr-xr-x. 3 test1 test1 112 1月 21 19:31 ..
-rw-r--r--. 1 test1 test1 409 1月 21 19:31 id_rsa.pub
-rw-------. 1 test1 test1 1675 1月 21 19:31 id_rsa
-rw-r--r--. 1 test1 test1 175 1月 21 19:32 known_hosts
-rw-------. 1 test1 test1 409 1月 21 19:55 authorized_keys
-rw-r--r--. 1 test1 test1 409 1月 21 20:06 id_rsa2.pub ※作成された公開鍵
-rw-------. 1 test1 test1 1675 1月 21 20:06 id_rsa2※作成された秘密鍵
drwx------. 2 test1 test1 114 1月 21 20:06 .
id_rsa2.pubの公開鍵をサーバーに登録する
[test1@localhost .ssh]$ ssh-copy-id -i id_rsa2.pub test1@192.168.0.101
/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "id_rsa2.pub"
/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'test1@192.168.0.101'"
and check to make sure that only the key(s) you wanted were added.
サーバーにSSH接続してauthorized_keysファイルにid_rsa2.pub公開鍵が追加されたことを確認する。
秘密鍵でSSH接続できることを確認する。
[test1@localhost .ssh]$ ssh -i id_rsa2 test1@192.168.0.101
Last login: Sun Jan 21 20:07:28 2024
[test1@localhost ~]$
[test1@localhost ~]$
[test1@localhost .ssh]$ cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCtOpKUSNmqf5Nvycc/560MAcnAMWuFyKb/d07WDdRr2JW4SaefBlV9fRY2d6Z+0W+MPztnBVUFZY9jFSocMk67o6v15PjTvkLTL9XOg7Itj180pvxS/RoCLbzUPlS3npdIkAHUvxihpRG/YMi6O65Y4SGRDDIv4GPRiaRYK2jwsh/LFXu7mlnqgwYrm69zjK1APqFxmW2DG8uFHXdc+83xutO1mrqr5QwQZyz1EBOMdUbXACkAdN+n8olSAp9PpTDhNlIaBv2V0k2WJ+O5R12VVfDYXfHHri/jyQ8pv3MSMXWSieNQQ9l9ndyz+IT5aIYege+bcQg0qspVCDzKH+nh test1@localhost.localdomain
追加→ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDVFwH+nOY9w4PdV+2+iH73ac8LOs2MJjCCuDtz3Q0bI/H0Ty0iXNHTK4/ET++gPAWBlrBZ42NOtKnG9IskE15Jdg6I5iSOopXFj4jq2EZwEZkNAz4/w7/rKo6QhIocxTr0uRa/IjV9a8TIB5CURDagLYk0s6hnVfZg1Jv470n2r6tNHPfJoIRTDj3oX4b9l5SWeRE0PmpbMyey4kvr4cuLFRiNRZoaqPfLh8QJmU9L9si1Zhig5FhNFjdSiKal5jD8aTqH3UzpqhsgIyqn+eD6IFC/PoTV859LYfK1I/X91VicQOrcOBtCM5c6/SBqdSa3aQqU3qNGblpKY5LtnvqD test1@localhost.localdomain
まとめ
簡単に公開鍵のコピーが出来ることが分かりました。
ssh-copy-idコマンドを使用して公開鍵をコピーすることをお勧めします。
ssh-keygenで鍵タイプを指定しない場合はデフォルトではRSAタイプになると思いますが
サーバーによってはRSAにならない可能性があるため、RSAタイプと指定した方が安全です。
鍵ファイルは同名のものを作成できないことが分かりました。
2つの鍵を作成する場合は、鍵ファイルを別名にする必要があります。
同じ名前にしたら鍵が上書きますかというメッセージが出ます。
ssh-copy-idコマンドを使用すると、新規に公開鍵を登録する際はauthorized_keysが自動的に作成されて、2つ目の公開鍵を登録する際はauthorized_keysに公開鍵が追記されることが分かりました。