注目の記事

sshの鍵を作るときにちょっとだけ気にしたいこと

2017.08.02

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、臼田です。

AWSでEC2と接続するためのsshの鍵の生成は、基本AWS側で行なってくれますが、ec2-user以外のユーザで別の鍵を利用したり、AWS以外でもGithub等のサービスに利用したりする際には自分でsshの鍵を作成すると思います。

本当にちょっとしたことですが、ssh-keygenで鍵を生成する際に気にしたいことを書きます。

普通に作ってみる

ssh-keygenコマンドは対話式で鍵を生成することができます。

具体的には、下記のような動作になります。

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/username/.ssh/id_rsa): /Users/username/.ssh/test
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in test.
Your public key has been saved in test.pub.
The key fingerprint is:
SHA256:SAMPLEXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX username@hostname
The key's randomart image is:
+---[RSA 2048]----+
|   ..  .=XXXXXX  |
|      ..XXXXXXX  |
|     o oXXXXXX   |
|      +.o==== .  |
|     . .SXXXX= . |
|       + +  + .  |
|    xxxx  .  o   |
|       .   o.    |
|    xX    o.     |
+----[SHA256]-----+

しかし、これで生成された公開鍵の中身を確認すると…

$ cat .ssh/test.pub
ssh-rsa AAAABXXX[省略] username@hostname

末尾にユーザ名とホスト名が記述されます。

余計な情報を消す

もしこの公開鍵を外部サービスや、お客様などに渡す場合には、少し気になりますよね。

そんな時は下記のように実行します。

$ ssh-keygen -C ""
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/username/.ssh/id_rsa): /Users/username/.ssh/test2
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in test2.
Your public key has been saved in test2.pub.
The key fingerprint is:
SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
The key's randomart image is:
+---[RSA 2048]----+
|     XXX         |
|           XXX   |
|      +          |
|     + o .       |
|.   = =.S =      |
|XXXXXXXXXX .     |
|E.o XXXXXXo      |
|.ooo XXXXX       |
|..XXXXXO+ .      |
+----[SHA256]-----+
$ cat .ssh/test2.pub
ssh-rsa AAAABXXX[省略]

これで、ユーザ名とホスト名が記述されなくなりました。

鍵を作成するときに、末尾にusername@hostnameを付加しているのは、鍵の仕組みとしてはコメントとして扱われる領域になります。

通常は、どのような用途であるのかや、誰の鍵であるかを識別するために利用するのが一般的なようですが、

少なくとも自分の情報を外に出すのはあまり気持ちのいいことではないですよね。

ssh-keygen-Cオプションは、コメントを指定するものなので、空文字"" or ''を渡すことによってデフォルトのコメントを削除することができます。

さいごに

以上、あまり気にする必要はないですが、ちょっとだけ気にしたいことでした。

ユーザ名とホスト名が他人に知られたところで、セキュリティ的に問題が出たりすることは考えにくいですが、簡単に消すことが出来るので、特に用がないのであれば消してみてはいかがでしょうか?