○ opensshクライアント

・LinuxのSECUREな通信を目的とします
・クライアントのsshはrpmパッケージのopensshを使います
・"protocol2 PubkeyAuthentication"を使います

・6.8p1以降、fingerprint表示にSHA256/base64が使われ、表示が変わります
・ssh-keygenで以前のMD5/hexで表示するには、-E md5 オプションを付けます
・ただし、表示にアルゴリズムMD5が追記されるので注意します

・ログイン端末で "#" はroot、"$" は一般ユーザのプロンプトの記号です
・設定ファイルで "#" で始まる行はコメントとして解釈されます

○参照ファイル

:opensshマニュアルetc.

○仮設定

:ローカルホスト  mars.528p.com
:ユーザ sola
:サーバ venus.528p.com
:ユーザ sola

○ローカルホスト上でECDSA認証鍵(ユーザ認証)を作ります

・opensslが楕円曲線暗号モード(ECDH, ECDSA)をサポートしていること
・openssh-5.7以降で楕円曲線暗号モード(ECDSA)が使えます
・ユーザのディレクトリに .sshディレクトリが作られます
・id_ecdsa(ECDSA秘密鍵)id_ecdsa.pub(ECDSA公開鍵)が収納されます
・ssh-keygen -t ecdsa では 256bit で作成されます

:openssh 6.7p1以前

[sola@mars:~]
$ ssh-keygen -t ecdsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/sola/.ssh/id_ecdsa):← Enterキー
Enter passphrase (empty for no passphrase):← パスフレーズを入力
Enter same passphrase again:← 再入力
Your identification has been saved in /home/sola/.ssh/id_ecdsa.
Your public key has been saved in /home/sola/.ssh/id_ecdsa.pub.
The key fingerprint is:
16:d2:f8:fa:4f:ac:83:bc:0a:98:19:a0:29:30:22:5a sola@mars.528p.com
The key's randomart image is:
+--[ECDSA  256]---+
|                 |
|       o         |
|* E   o o        |
|B+     o .       |
|*       S        |
|.=     o .       |
|+ .  ...  o      |
|   .  o..o       |
|    ....oo.      |
+-----------------+

:openssh 6.8p1以降

[sola@venus:~]
$ ssh-keygen -t ecdsa
Generating public/private ecdsa key pair.
Enter file in which to save the key (/home/sola/.ssh/id_ecdsa):← Enterキー
Enter passphrase (empty for no passphrase):← パスフレーズを入力
Enter same passphrase again:← 再入力
Your identification has been saved in /home/sola/.ssh/id_ecdsa.
Your public key has been saved in /home/sola/.ssh/id_ecdsa.pub.
The key fingerprint is:
SHA256:PECUbxa6F/sr+58dn8CdC03/bDpgbKt+Iu47hnXjDJ8 sola@venus.528p.com
The key's randomart image is:
+---[ECDSA 256]---+
|     .o.         |
|     .. .        |
|      .o .       |
|      .o=        |
|       +So .   . |
|      . =.o * + o|
|       + B = *.+.|
|      . = E oo++=|
|       +=O=*o o*+|
+----[SHA256]-----+

○サーバ上でid_ecdsa.pub(ECDSA公開鍵)を登録します

・ローカルホストからサーバにid_ecdsa.pub(ECDSA公開鍵)を転送しておきます
・専用ディレクトリをつくります
・公開鍵を専用ファイルに書き加えます
・ディレクトリとファイルのパーミッションを変更します

[sola@venus:~]
$ mkdir .ssh
$ cat id_ecdsa.pub >> .ssh/authorized_keys
$ chmod 700 .ssh
$ chmod 600 .ssh/authorized_keys

○ログインしてみます

・インストール時(またはサーバ起動時)に作られるキーを使って
・ホスト認証され、ローカルホストのknown_hostsに登録されます
・yesと答えるのは初回接続のみです
・表示されるfingerprintはサーバのHostキーのものです
・クライアント側のバージョンでfingerprintの表示が変わります
・その後、ユーザ認証が公開鍵認証で行われるので
・鍵作成のとき入力したパスフレーズを入力します
・ホスト認証(ecdsa)、ユーザ認証(rsa)となる組み合わせもあります

[sola@mars:~]
$ ssh -2 sola@venus.528p.com
The authenticity of host 'venus.528p.com (192.168.0.1)' can't be established.
ECDSA key fingerprint is b7:0a:be:4e:97:4f:56:eb:3d:e6:57:66:87:4e:59:45.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'venus.528p.com,192.168.0.1'
(ECDSA) to the list of known hosts.
Enter passphrase for /home/sola/.ssh/id_ecdsa:← パスフレーズを入力
[sola@venus:~]
$

・ホスト認証に使われる鍵は、"HostKeyAlgorithms"で指定できます
・CentOS7(openssh-6.x)クライアントでは、最初にecdsa-*が呼びだされます
・CentOS6(openssh-5.x)クライアントでは、最初にssh-rsaが呼びだされます

:/etc/ssh/ssh_config または ~/.ssh/config

#   $OpenBSD: ssh_config,v 1.28 2013/09/16 11:35:43 sthen Exp $

・省略

ForwardAgent yes
HostKeyAlgorithms ssh-rsa

・省略




○(参考) 他の認証鍵の作成

○ローカルホスト上でRSA認証鍵(ユーザ認証)を作ります

・ユーザのディレクトリに .sshディレクトリが作られます
・id_rsa(RSA秘密鍵)id_rsa.pub(RSA公開鍵)が収納されます
・ssh-keygen -t rsaでは 2048bit で作成されます

:openssh 6.7p1以前

[sola@mars:~]
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/sola/.ssh/id_rsa):← Enterキー
Enter passphrase (empty for no passphrase):← パスフレーズを入力
Enter same passphrase again:← 再入力
Your identification has been saved in /home/sola/.ssh/id_rsa.
Your public key has been saved in /home/sola/.ssh/id_rsa.pub.
The key fingerprint is:
06:ea:8a:cf:c7:5b:0c:ec:5b:d5:15:a1:5c:01:88:4a sola@mars.528p.com
The key's randomart image is:
+--[ RSA 2048]----+
|       . ...=o   |
|    E . .. o .   |
|   . ..   o .    |
|   ... . . .     |
|    +   S .      |
|   o o o         |
|   .o +          |
| o .o+           |
|..+.o.           |
+-----------------+

:openssh 6.8p1以降

[sola@venus:~]
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/sola/.ssh/id_rsa):← Enterキー
Enter passphrase (empty for no passphrase):← パスフレーズを入力
Enter same passphrase again:← 再入力
Your identification has been saved in /home/sola/.ssh/id_rsa.
Your public key has been saved in /home/sola/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:tJGZ9iRUDivsyfCmN/fWRaPNonZq2InGfsegbKp9xCI sola@venus.528p.com
The key's randomart image is:
+---[RSA 2048]----+
|        o..      |
|     . . B       |
|    . o X o      |
|     = = *    o  |
|      *.S .  = . |
|    Eo. o . o +  |
|    ..o=.= * o   |
|     o oX.O =    |
|    ..o*.=o+     |
+----[SHA256]-----+

○(参考) 公開鍵の鍵指紋の確認

・ssh-keygenで様々な鍵ファイルの鍵指紋を表示します
・6.7p1以前では、MD5/hexで表示されます、-Eオプションはありません
・6.8p1以降、鍵指紋表示にSHA256/base64が使われ、表示が変わります
・以前のMD5/hexで表示するには、-E md5 オプションを付けます
・ただし、表示にアルゴリズムMD5が追記されるので注意 色の部分
・-C オプションを付けて作成したので "no comment" になってます

:openssh 6.8p1以降

・ホスト鍵(SHA256/base64での表示)

# ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub
256 SHA256:liDYUbKZG5YdK+DNPE9cjSsF+6N1rkz2pj1MWZ3QwDI no comment (ECDSA)

・ホスト鍵(MD5/hexでの表示)

# ssh-keygen -l -E md5 -f /etc/ssh/ssh_host_ecdsa_key.pub
256 MD5:63:5e:57:d4:07:07:3b:5a:25:fd:bc:d9:2b:f3:90:2e no comment (ECDSA)

・ユーザ鍵(SHA256/base64での表示)

$ ssh-keygen -lf ~/.ssh/id_ecdsa.pub
256 SHA256:F0ELFLbSaIPOKBvc0YqowWiYo5PcjyRKZcm2Zt22ZoI no comment (ECDSA)

・ユーザ鍵(MD5/hexでの表示)

$ ssh-keygen -l -E md5 -f ~/.ssh/id_ecdsa.pub
256 MD5:48:30:5e:8d:86:0d:ed:56:f0:d3:26:3f:b9:4e:c7:e8 no comment (ECDSA)

・鍵ファイル(SHA256/base64での表示)

# ssh-keygen -lf ~/.ssh/authorized_keys
*省略*

・ユーザ鍵(MD5/hexでの表示)

# ssh-keygen -l -E md5 -f ~/.ssh/authorized_keys
*省略*

・known_hosts(SHA256/base64での表示)

$ ssh-keygen -lf ~/.ssh/known_hosts
*省略*

・known_hosts(MD5/hexでの表示)

$ ssh-keygen -l -E md5 -f ~/.ssh/known_hosts
*省略*

○ Copyright(c) 528p.com All Rights Reserved.