server-memo.net

CentOSでのSSH秘密鍵・公開鍵作成方法

      2016/07/03

SSHで鍵認証方式を行う際に必要な、「秘密鍵」と「公開鍵」をCentOS上で作成する方法です。

鍵の作成方法

CentOS上で「秘密鍵」と「公開鍵」を作成するには、「ssh-keygen」コマンドを使用します。

「ssh-keygen」書式

ssh-keygen -t [暗号方式] -b [ビット数]

暗号方式

一般的に使われている暗号鍵の方式は「RSA」「ECDSA」「DSA」ぐらいでしょう。

どの方式を採用するかは、接続先のサーバとクライアントの両方で対応している方式を選択することになります。「RSA」「DSA」についてはどの環境でもほぼ問題ないと思いますが、「ECDSA」については、OpenSSH5.7からの対応となっているようなので、少し古いサーバでは対応できないかもしれませんので、注意してください。

「RSA」「DSA」で鍵を作成する場合は、鍵の長さ(ビット数)を最低でも「2048bit」以上にしましょう。

「ECDSA」ならば、「256bit」か「521bit」の長さで作成します。

※「ECDSA」鍵の「256bit」は「RSA」鍵の「3072bti」に相当し、「521bit」は「RSA」鍵の「15360bit」に相当sするとのことです。

「ECDSA」鍵の作成

tamohikoユーザがe「ECDSA 521bit」の暗号鍵を作成した際の作業ログです。

パスワード無しで接続させるための鍵を作成する場合は、パスワードの設定を求められる箇所でそのまま「Enter」キーを押下することで、パスワード無しの鍵を作成することができます。

$ ssh-keygen -t ecdsa -b 521
Generating public/private ecdsa key pair.
Enter file in which to save the key (/home/tamohiko/.ssh/id_ecdsa): <--そのまま「Enter」
Enter passphrase (empty for no passphrase):  <--- パスワードを入力
Enter same passphrase again:    <--- 再度パスワードを入力 
Your identification has been saved in /home/tamohiko/.ssh/id_ecdsa.
Your public key has been saved in /home/tamohiko/.ssh/id_ecdsa.pub.
The key fingerprint is:
bc:83:98:10:6c:ca:15:4b:b2:58:06:71:ab:d4:e5:b5 tamohiko@localhost.localdomain
The key's randomart image is:
+--[ECDSA  521]---+
|o++o . .         |
|.==.= . .        |
|.o=+ . E         |
|o+..   .         |
|o..     S        |
|   . o . .       |
|    o . o        |
|         .       |
|                 |
+-----------------+

今回はパスワード無しで作成しています。

鍵の確認

作成された鍵は、ログに表示されているように「/home/tamohiko/.ssh」フォルダの中に作成されています。

  • 秘密鍵 id_ecdsa
  • 公開鍵 id_ecdsa.pub

実際に鍵を確認してみると、秘密鍵、公開鍵の両方が作成されていることが分かります。

$ ls -la /home/tamohiko/.ssh/
合計 16
drwx------  2 tamohiko tamohiko   58  7月  2 12:57 .
drwx------. 6 tamohiko tamohiko 4096  6月 28 20:51 ..
-rw-------  1 tamohiko tamohiko  365  7月  2 12:57 id_ecdsa
-rw-r--r--  1 tamohiko tamohiko  284  7月  2 12:57 id_ecdsa.pub
-rw-r--r--  1 tamohiko tamohiko  395  6月 28 20:51 known_hosts

「RSA」鍵の作成

こちらは、「RSA」の鍵を作成した際の作業ログとなります。

$ ssh-keygen -t rsa -b 2048
Generating public/private rsa key pair.
Enter file in which to save the key (/home/tamohiko/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/tamohiko/.ssh/id_rsa.
Your public key has been saved in /home/tamohiko/.ssh/id_rsa.pub.
The key fingerprint is:
12:ea:9e:7a:b0:bd:a9:96:66:4e:7d:74:53:25:57:18 tamohiko@localhost.localdomain
The key's randomart image is:
+--[ RSA 2048]----+
|          . E+.  |
|           +.    |
|      .   .      |
|     . . .       |
|    . o S        |
|  .o . o .       |
|  .=o .          |
| .*.o+           |
| =++=.           |
+-----------------+

鍵の確認

作成された鍵は、ログに表示されているように「/home/tamohiko/.ssh」フォルダの中に作成されています。

  • 秘密鍵 id_rsa
  • 公開鍵 id_rsa.pub

実際に鍵を確認してみると、秘密鍵、公開鍵の両方が作成されていることが分かります。

$ ls -la /home/tamohiko/.ssh/
合計 24
drwx------  2 tamohiko tamohiko   88  7月  2 13:31 .
drwx------. 6 tamohiko tamohiko 4096  6月 28 20:51 ..
-rw-------  1 tamohiko tamohiko 1679  7月  2 13:31 id_rsa
-rw-r--r--  1 tamohiko tamohiko  412  7月  2 13:31 id_rsa.pub
-rw-r--r--  1 tamohiko tamohiko  395  6月 28 20:51 known_hosts

鍵の転送

「scp」等で作成した公開鍵を接続先のサーバに転送してください。

scpでの転送例

「192.168.1.160」というサーバの、「tamohiko」ユーザのホームディレクトリに、上で作成した「ECDSA」の公開鍵を「scp」で転送した際の作業ログです。

$ scp id_ecdsa.pub tamohiko@192.168.1.160:/home/tamohiko/
tamohiko@192.168.1.160's password:
id_ecdsa.pub                                  100%  284     0.3KB/s   00:00

※「scp」等が使えない場合は、USBメモリで直接サーバに格納する等してください…

接続先サーバでの公開鍵登録

公開鍵をサーバに転送し終わったら、接続先のサーバで「公開鍵の登録」作業を行ってください。

接続先サーバでの設定はこちらのページにまとめています。

鍵を使用した接続方法

接続先サーバでの公開鍵登録作業が完了しましたら、実際に鍵認証方式でのSSH接続を試してみます。

書式

「-i」オプションで秘密鍵を指定し接続します。

ssh -i 鍵ファイル ユーザ名@接続先サーバ

鍵を使った接続

実際に「ECDSA」鍵の秘密鍵を使用して、SSH接続を行った際のログです。

$ ssh -i /home/tamohiko/.ssh/id_ecdsa tamohiko@192.168.1.160
Last login: Tue Jun 30 01:56:58 2015 from 192.168.1.5

これで、無事接続できれば作業終了です。

おすすめ書籍の紹介

SSHについて詳しく書かれている本です。いままで知らなかった使い方や発見があっておもしろいですよ。

 - SSH