17
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

SSH鍵の作成方法と -t -C オプションのすすめ

Posted at

SSH公開鍵・秘密鍵の作成方法をググると ssh-keygen をオプションなしで紹介している記事がヒットするので、初心者はそれだけ見て納得し、オプションのことなど知る由もなく仕事に戻っていきますね(自己紹介)。

しかしもう少し調べてみると、できれば -t -C オプションは毎回付けた方がよいと思いました。

TL;DR

$ ssh-keygen -t ed25519 -C ""

SSH鍵の作成方法

ssh-keygen を使います。

$ ssh-keygen -t ed25519 -C ""
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/ec2-user/.ssh/id_ed25519): # そのままEnterを押す
Enter passphrase (empty for no passphrase): # そのままEnterを押す(パスフレーズが欲しい場合は入力してEnter)
Enter same passphrase again: # そのままEnterを押す
Your identification has been saved in /home/ec2-user/.ssh/id_ed25519.
Your public key has been saved in /home/ec2-user/.ssh/id_ed25519.pub.
The key fingerprint is:
SHA256:XXX
The key's randomart image is:
+--[ED25519 256]--+
|.E.  .o+.o       |
|.o . .=.= .      |
|o + +.+*.o o     |
|++.o.=o*=+. .    |
|.o...=*.S+o      |
|    B=.o. .      |
|    .*o  .       |
|    .            |
|                 |
+----[SHA256]-----+
$ cat ~/.ssh/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKkpYGsqIGWd5Nl0Tp0w9RpT2ghoehsThe71AcmbPb5B

-t オプションのすすめ

-t オプションでは暗号アルゴリズムを指定します。オプションを使用しない場合のデフォルトはRSAです。

OpenSSH 6.5以降であれば、パフォーマンスとセキュリティに優れた1Ed25519を指定するとよいでしょう。GitHubのドキュメントでも、サンプルコードでEd25519が使われています2

$ ssh-keygen -t ed25519

-C オプションのすすめ

-C オプションではコメントを指定します。コメントは、公開鍵の末尾に付与されます。オプションを使用しない場合は、ssh-keygen を実行した環境のユーザー名とホスト名で username@hostname の形式になります。

$ cat ~/.ssh/id_ed25519.pub 
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKkpYGsqIGWd5Nl0Tp0w9RpT2ghoehsThe71AcmbPb5B username@hostname

ただし、コメントは必須ではなく、形式も任意です。

生成した鍵をお客様などに渡す場合には、余計な情報となるため、-C "" としてコメントなしで鍵を生成するとよいでしょう3 4

$ ssh-keygen -C ""

もちろん、鍵の管理のために意図的にコメントを付けたい場合は、付けるとよいです。

コメントの表示と変更の方法

コメントは秘密鍵にも含まれています。表示するには以下のようにします。

$ ssh -l -f ~/.ssh/id_ed25519
256 SHA256:XXX comment (ED25519)

秘密鍵のコメントを変更するには、以下のようにします。なお公開鍵のコメントは直接テキストエディターで編集できます。

$ ssh -c -C "new comment" -f ~/.ssh/id_ed25519

(おまけ)SSH鍵の登録方法

ローカルの公開鍵を持って行く場合、ssh-copy-id を使うと簡単です。

$ ssh-copy-id -i ~/.ssh/id_ed25519.pub username@hostname

手動でやる場合は以下の流れです。

$ scp ~/.ssh/id_ed25519.pub username@hostname
$ ssh username@hostname

リモートサーバーで:
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ cat ~/id_ed25519.pub >> ~/.ssh/authorized_keys
$ rm ~/id_ed25519.pub
$ chmod 600 ~/.ssh/authorized_keys

(おまけ)公開鍵認証を有効化する方法

まだの場合、リモートサーバーで公開鍵認証によるSSH接続を有効化します。

リモートサーバーの /etc/ssh/sshd_config を開いて、以下の記述がなければ追記します(先頭に # が付いていたら外します。no になっていたら yes にします)。

PubkeyAuthentication yes

SSHデーモンを再起動します。

$ sudo systemctl restart sshd # OSによって違う

(おまけ)楽にSSH接続する方法

毎回 ssh -i key username@hostname と打つのが面倒な場合は、~/.ssh/config ファイルに以下のように追記してください(ファイルがなければ作成する)。

Host remote
    User username
    HostName hostname
    IdentityFile key

Hostremote の部分は任意の名前。

そうしたら、ssh remote で接続できます。

  1. SSH 鍵 - ArchWiki

  2. $ ssh-keygen -t ed25519 -C "your_email@example.com"Generating a new SSH key and adding it to the ssh-agent - GitHub Docs

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

  4. WindowsのPowerShellだと option requires an argument -- C と怒られてしまいます。コマンドプロンプトだと大丈夫。

17
10
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
17
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?