4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ssh-copy-idコマンドを試してみた

Last updated at Posted at 2024-01-21

はじめに

踏み台サーバーに公開鍵と秘密鍵を作成して、公開鍵をサーバーに登録するには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に公開鍵が追記されることが分かりました。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?