SSH(on Fedora)の設定方法(Version1、2対応)



●ホストキ−の作成

 作成されていない場合は、作成します。

rsa1(protocol1)用のホストキ−を作成する場合
# ssh-keygen -t rsa1 -f /etc/ssh/ssh_host_key
Generating public/private rsa1 key pair.
Enter passphrase (empty for no passphrase): ← パスワ−ドの入力
Enter same passphrase again: ← 再確認用パスワ−ドの入力
Your identification has been saved in /etc/ssh/ssh_host_key.
Your public key has been saved in /etc/ssh/ssh_host_key.pub.
The key fingerprint is:
cb:8d:37:54:fb:59:f8:52:85:e6:98:34:bf:a8:0b:c0 root@fc10.fedora.jp
The key's randomart image is:
+--[RSA1 2048]----+
|                 |
|               . |
|            + o .|
|     .     o O ..|
|      E S . + + o|
|       o =   o * |
|        = + . = .|
|         o o   . |
|          o.     |
+-----------------+
 作成されたか確認します。
# ls -l /etc/ssh/ssh_host_key*
-rw------- 1 root root 991 2008-12-09 17:27 /etc/ssh/ssh_host_key
-rw-r--r-- 1 root root 655 2008-12-09 17:27 /etc/ssh/ssh_host_key.pub
 上記のように、ssh_host_keyとssh_host_key.pubが作成されていれば問題ありません。

rsa(protocol2)用のホストキ−の作成
# ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): ← パスワ−ドの入力
Enter same passphrase again: ← 再確認用パスワ−ドの入力
Your identification has been saved in /etc/ssh/ssh_host_rsa_key.
Your public key has been saved in /etc/ssh/ssh_host_rsa_key.pub.
The key fingerprint is:
38:4d:79:c2:2e:de:12:c7:95:43:02:9b:89:23:43:15 root@fc10.fedora.jp
The key's randomart image is:
+--[ RSA 2048]----+
|  ..E.... .      |
| .   . = + .     |
|  o o + = =      |
|   o . * + .     |
|      = S        |
|     . *         |
|      o .        |
|       .         |
|                 |
+-----------------+
 作成されたか確認します。
[root@fc9 ~]# ls -l /etc/ssh/ssh_host_rsa_key*
-rw------- 1 root root 1675 2008-12-09 17:43 /etc/ssh/ssh_host_rsa_key
-rw-r--r-- 1 root root  410 2008-12-09 17:43 /etc/ssh/ssh_host_rsa_key.pub
 上記のように、ssh_host_rsa_keyとssh_host_rsa_key.pubが作成されていれば問題ありません。

dsa(protocol2)用のホストキ−の作成
# ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
Generating public/private dsa key pair.
Enter passphrase (empty for no passphrase): ← パスワ−ドの入力
Enter same passphrase again: ← 再確認用パスワ−ドの入力
Your identification has been saved in /etc/ssh/ssh_host_dsa_key.
Your public key has been saved in /etc/ssh/ssh_host_dsa_key.pub.
The key fingerprint is:
24:70:1f:fe:bf:af:d3:df:eb:36:d7:37:9c:7d:66:f3 root@fc10.fedora.jp
The key's randomart image is:
+--[ DSA 1024]----+
|    . . .        |
|     o o .       |
|      . +        |
|       o .       |
|        S .      |
|           .     |
|            ... +|
|            ...BX|
|            o++*E|
+-----------------+
 作成されたか確認します。
# ls -l /etc/ssh/ssh_host_dsa_key*
-rw------- 1 root root 668 2008-12-09 17:43 /etc/ssh/ssh_host_dsa_key
-rw-r--r-- 1 root root 618 2008-12-09 17:43 /etc/ssh/ssh_host_dsa_key.pub
 上記のように、ssh_host_dsa_keyとssh_host_dsa_key.pubが作成されていれば問題ありません。

●config(sshd_config)ファイルの設定

 protocol1のRSA1、protocol2のDSAまたはRSA鍵を使用して、クライアントから接続することを前提に記載します。
 なお、最終的な変更箇所は下記のとおりとなっています。
 鍵を使用してクライアントからの接続が可能になるまで、「PermitRootLogin」及び「PasswordAuthentication」は「yes」にしておく方がいいです。
# vi /etc/ssh/sshd_config
Port 22
Protocol 2,1
HostKey /etc/ssh/ssh_host_key
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
SyslogFacility AUTHPRIV
PermitRootLogin no
RSAAuthentication yes
PasswordAuthentication no
 上記設定でクライアント側から問題なく接続できるようになったら、sshサ−ビスを再起動して設定を反映させます。 当然ながら、22番ポ−トを開けるのを忘れないでください。
# service sshd restart
# chkconfig sshd on ← sshd自動起動設定
# chkconfig --level sshd ← sshd自動起動設定確認
sshd         0:off   1:off   2:on    3:on    4:on    5:on    6:off
 ↑ ランレベル2〜5のonを確認

●rsa1(protocol1)キ−の作成

 protocol1用のRSAキ−を作成します。
$ ssh-keygen -t rsa1
Generating public/private rsa1 key pair.
Enter file in which to save the key (/home/test/.ssh/identity):
          デフォルトのまま良いのであれば、そのまま[Enter]を押下−−↑
Enter passphrase (empty for no passphrase):(パスワ−ド入力)
Enter same passphrase again:(再度、パスワ−ド入力)
Your identification has been saved in /home/test/.ssh/identity.
Your public key has been saved in /home/test/.ssh/identity.pub.
The key fingerprint is:
17:d4:d1:54:9e:b0:13:5d:ca:7d:b8:2f:c3:d2:0d:ad test@fc10.jp
The key's randomart image is:
+--[RSA1 2048]----+
|          ...*o.+|
|         .  ..=*.|
|          .  o+.+|
|           .  .o.|
|        S .   o .|
|         .   o = |
|            . E o|
|             . o |
|                 |
+-----------------+
 identity(秘密鍵)とidentity.pub(公開鍵)の2つのファイルが作成されているかどうかを確認します。
$ ls -l .ssh/identity*
-rw------- 1 test test 992 2008-12-10 14:51 .ssh/identity
-rw-r--r-- 1 test test 656 2008-12-10 14:51 .ssh/identity.pub
 identity.pubをauthorized_keysという名前に変更して、パ−ミッションも変えます。
$ cp /home/test/.ssh/identity.pub /home/test/.ssh/authorized_keys
$ ls -l /home/test/.ssh/authorized_keys
-rw-r--r-- 1 test test 656 2008-12-10 14:55 /home/test/.ssh/authorized_keys
$ chmod 600 /home/test/.ssh/authorized_keys
$ ls -l /home/test/.ssh/authorized_keys
-rw------- 1 test test 656 2008-12-10 14:55 /home/test/.ssh/authorized_keys
 protocol1のRSA鍵を利用して、SSHでログインできるか確認します。
$ ssh -1 localhost
SSHでそのサ−バに始めてログインする場合、下記のように表示されます。
The authenticity of host 'localhost (127.0.0.1)' can't be established.
RSA1 key fingerprint is cb:8d:37:54:fb:59:f8:52:85:e6:98:34:bf:a8:0b:c0.
Are you sure you want to continue connecting (yes/no)?「yes」と入力
Warning: Permanently added 'localhost' (RSA1) to the list of known hosts.
Enter passphrase for RSA key '/home/test/.ssh/identity':(パスワ−ド入力)
 ログインできれば、プロンプトが返ってきます。ログインできない場合は、authorized_keysをidentityから作成してないか、とか、configファイルの設定が間違っていないか確認してください。
 例えば、configファイルで「RSAAuthentication no」と設定されている場合、「ssh_userauth1: server supports no auth methods」というエラ−が表示されます。

●rsa(protocol2)キ−の作成

 protocol2用のRSAキ−を作成します。上記、protocol1用のRSAキ−と共存させることは出来ません。
$ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/test/.ssh/id_rsa): 
      デフォルトのまま良いのであれば、そのまま[Enter]を押下−−↑
Enter passphrase (empty for no passphrase):(パスワ−ド入力)
Enter same passphrase again:(再度、パスワ−ド入力)
Your identification has been saved in /home/test/.ssh/id_rsa.
Your public key has been saved in /home/test/.ssh/id_rsa.pub.
The key fingerprint is:
ce:6a:b7:9c:52:c6:4b:9a:67:54:1b:a3:77:51:1f:6d test@www.bigbang.mydns.jp
The key's randomart image is:
+--[ RSA 4096]----+
|                .|
|              ..E|
|             . o.|
|          + .   .|
|       .So + .   |
|       oB o .    |
|       Boo .     |
|      =o=.       |
|     ..=+.       |
+-----------------+
 id_rsa(秘密鍵)とid_rsa.pub(公開鍵)の2つのファイルが作成されているかどうかを確認します。
$ ls -l .ssh/id_rsa*
-rw------- 1 test test 1743 2008-12-10 15:14 .ssh/id_rsa
-rw-r--r-- 1 test test  411 2008-12-10 15:14 .ssh/id_rsa.pub
 id_rsa.pubをauthorized_keysという名前に変更して、パ−ミッションも変えます。
$ cp /home/test/.ssh/id_rsa.pub /home/test/.ssh/authorized_keys
$ chmod 600 /home/test/.ssh/authorized_keys
$ ls -l /home/test/.ssh/authorized_keys
-rw------- 1 test test 411 2008-12-10 15:25 /home/test/.ssh/authorized_keys
 protocol2のRSA鍵を利用して、SSHでログインできるか確認します。
$ ssh -2 localhost
SSHでそのサ−バに始めてログインする場合、下記のように表示されます。
The authenticity of host 'localhost (127.0.0.1)' can't be established.
RSA key fingerprint is 38:4d:79:c2:2e:de:12:c7:95:43:02:9b:89:23:43:15.
Are you sure you want to continue connecting (yes/no)?「yes」と入力
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
Enter passphrase for key '/home/test/.ssh/id_rsa':(パスワ−ド入力)
 ログインできれば、プロンプトが返ってきます。ログインできない場合は、authorized_keysをid_rsaから作成してないか、とか、configファイルの設定が間違っていないか確認してください。

●dsa(protocol2)キ−の作成

 ※注意
 「●「userauth_pubkey: key type ssh-dss not in PubkeyAcceptedKeyTypes [preauth]」のためログイン出来ない」に記載しているとおりOpenSSHのバージョンによりDSA鍵を利用出来なくなっていますので注意してください。

 protocol2用のDSAキ−を作成します。上記、protocol1用のRSAキ−またはprotocol2用のRSAキ−と共存させるが出来ます。
$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/test/.ssh/id_dsa): 
      デフォルトのまま良いのであれば、そのまま[Enter]を押下−−↑
Enter passphrase (empty for no passphrase):(パスワ−ド入力)
Enter same passphrase again:(再度、パスワ−ド入力)
Your identification has been saved in /home/test/.ssh/id_dsa.
Your public key has been saved in /home/test/.ssh/id_dsa.pub.
The key fingerprint is:
fd:ea:c3:3b:b1:49:7b:16:c3:20:56:54:41:bd:60:d1 test@fc10.jp
The key's randomart image is:
+--[ DSA 1024]----+
|         ..o==   |
|          . o E  |
|         . . . . |
|        o..   .  |
|       .S..o     |
|          o.+    |
|         o =.o   |
|          B.o    |
|         .+*     |
+-----------------+
 id_dsa(秘密鍵)とid_dsa.pub(公開鍵)の2つのファイルが作成されているかどうかを確認します。
$ ls -l /home/test/.ssh/id_dsa*
-rw------- 1 test test 736 2008-12-10 15:31 /home/test/.ssh/id_dsa
-rw-r--r-- 1 test test 619 2008-12-10 15:31 /home/test/.ssh/id_dsa.pub
 id_dsa.pubをauthorized_keysという名前に変更して、パ−ミッションも変えます。
$ cp /home/test/.ssh/id_dsa.pub /home/test/.ssh/authorized_keys
$ chmod 600 /home/test/.ssh/authorized_keys
$ ls -l /home/test/.ssh/authorized_keys
-rw------- 1 test test 619 2008-12-10 15:31 /home/test/.ssh/authorized_keys
 protocol2のDSA鍵を利用して、SSHでログインできるか確認します。
$ ssh -2 localhost ←.sshフォルダにid_rsaが共存しない場合
$ ssh -2 -i /home/test/.ssh/id_dsa localhost ←.sshフォルダにid_rsaが共存する場合
 ログインできれば、プロンプトが返ってきます。ログインできない場合は、authorized_keys2をid_dsaから作成してないか、とか、configファイルの設定が間違っていないか確認してください。

●ed25519キ−の作成

 ※注意
 「●「userauth_pubkey: key type ssh-dss not in PubkeyAcceptedKeyTypes [preauth]」のためログイン出来ない」に記載しているとおりOpenSSHのバージョンによりDSA鍵を利用出来なくなっていますので注意してください。

 protocol2用のDSAキ−を作成します。上記、protocol1用のRSAキ−またはprotocol2用のRSAキ−と共存させるが出来ます。
$ ssh-keygen -t ed25519
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/test/.ssh/id_ed25519): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/test/.ssh/id_ed25519
Your public key has been saved in /home/test/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:Eu4l1EBG6AXD3jZ9GDmLFaD3U7M/C0+aLZx0C6S+Pys shiba@usagi
The key's randomart image is:
+--[ED25519 256]--+
|   .o=*..o       |
|    oo+.o=       |
|   o.o++.=oo     |
|    o+=oo.oo     |
|     .+.S+.      |
|     o +..o..    |
|      .. o.++.   |
|        E =B.o   |
|        .+=+++    |
+----[SHA256]-----+
 id_dsa(秘密鍵)とid_dsa.pub(公開鍵)の2つのファイルが作成されているかどうかを確認します。
$ ls -l /home/test/.ssh/id_ed25519*
-rw------- 1 test test 736 2022-12-22 15:31 /home/test/.ssh/id_ed25519
-rw-r--r-- 1 test test 619 2022-12-22 15:31 /home/test/.ssh/id_ed25519.pub
 id_ed25519.pubをauthorized_keysという名前に変更して、パ−ミッションも変えます。
$ cp /home/test/.ssh/id_ed25519.pub /home/test/.ssh/authorized_keys
$ chmod 600 /home/test/.ssh/authorized_keys
$ ls -l /home/test/.ssh/authorized_keys
-rw------- 1 test test 619 2022-12-22 15:31 /home/test/.ssh/authorized_keys
 protocol2のDSA鍵を利用して、SSHでログインできるか確認します。
$ ssh -2 localhost ←.sshフォルダにid_rsaが共存しない場合
$ ssh -2 -i /home/test/.ssh/id_ed25519 localhost ←.sshフォルダにid_rsaが共存する場合
 ログインできれば、プロンプトが返ってきます。ログインできない場合は、authorized_keys2をid_ed25519から作成してないか、とか、configファイルの設定が間違っていないか確認してください。

●パスフレーズなしでログインする方法

 下記の手順で、パスフレーズなしのDSA鍵を作成します。
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
Generating public/private dsa key pair.
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
93:e7:c4:5d:56:71:bc:f9:13:8c:a0:32:76:34:ef:2a root@hostA.xxx.yyy.org
 作成されたDSA鍵を確認します。
$ ls -l .ssh
合計 12
-rw------- 1 root root 668  2月  1 23:37 id_dsa
-rw-r--r-- 1 root root 627  2月  1 23:37 id_dsa.pub
 「authorized_keys」を作成します。
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
 再確認します。
$ ls -l .ssh
合計 16
-rw------- 1 root root 627  2月  1 23:38 authorized_keys
-rw------- 1 root root 668  2月  1 23:37 id_dsa
-rw-r--r-- 1 root root 627  2月  1 23:37 id_dsa.pub
 ローカルに接続し、パスフレーズを聞かれずにログイン出来ればOKです。
 リモート側にパスフレーズなしでログインするには、「authorized_keys」をリモート側に置きます。
 リモート側からローカル側にパスフレーズなしてログインさせるには、ローカル側に「authorized_keys」を置き、リモート側に「id_dsa」を置きます。
$ ssh localhost
Last login: Sun Jan 30 21:45:01 2011 from hostA.xxx.yyy.org

●デフォルトではない秘密鍵の作成

 通常、秘密鍵作成は意識しなければid_rsaやid_dsaがデフォルトで作成されます。同じユーザで複数のサーバに各サーバ用の秘密鍵を使用してログインする場合秘密鍵のファイル名がバッティングしてしまいます。これに対応する方法を記載します。
 まず、秘密鍵を作成するサーバに該当ユーザでログインします。次に、秘密鍵を作成します。
$ ssh-keygen -t dsa -f .ssh/id_dsa_test ← id_dsa_testを作成
Generating public/private dsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in .ssh/id_dsa_test.
Your public key has been saved in .ssh/id_dsa_test.pub.
The key fingerprint is:
0c:3f:be:4f:69:94:d8:66:a2:57:65:72:36:10:0d:2e test@*****.bigbang.mydns.jp
The key's randomart image is:
+--[ DSA 1024]----+
|          ++     |
|         . ..    |
|      . E o *    |
|       + + B .   |
|        S B      |
|       o B .     |
|      . o +      |
|       . +       |
|        ...      |
+-----------------+
 $HOME/.sshに秘密鍵と公開鍵が作成されているか確認します。
$ ls -l .ssh
合計 32
-rw------- 1 test test 655  9月  9 13:38 authorized_keys
-rw------- 1 test test 618  9月  9 13:38 authorized_keys2
-rw------- 1 test test 736  9月  9 13:38 id_dsa
-rw-r--r-- 1 test test 618  9月  9 13:38 id_dsa.pub
-rw------- 1 test test 771  9月 27 02:28 id_dsa_test ← 秘密鍵が作成されている
-rw-r--r-- 1 test test 619  9月 27 02:28 id_dsa_test.pub ← 公開鍵が作成されている
-rw------- 1 test test 991  9月  9 13:38 identity
-rw-r--r-- 1 test test 655  9月  9 13:38 identity.pub
 まだ、この段階ではこの秘密鍵を利用してログイン出来ません。公開鍵はサーバ側にFTP等を利用し保存します。

~/.sshディレクトリがある場合
$ mv ~/id_dsa_test.pub ~/.ssh
$ cat ~/.ssh/id_dsa_test.pub >> authorized_keys2
$ chmod 600 authorized_keys2
 authorized_keys2というファイルに公開鍵を書き込みます。これでログイン出来るようになります

~/.sshディレクトリが無い場合

 以下のようにして、作業してください。
$ cd ~
$ mkdir .ssh
$ chmod 700 .ssh
$ mv ~/id_dsa_test.pub ~/.ssh
$ cat ~/.ssh/id_dsa_test.pub >> ~/.ssh/authorized_keys2
$ chmod 600 authorized_keys2
 authorized_keys2というファイルに公開鍵を書き込みます。
 サーバにコピーした鍵は削除します。
$ rm ~/.ssh/id_dsa_test.pub
 これでログイン出来るようになります。

●パスフレーズの変更

 よそからSSHの鍵を受け取った場合、パスフレーズが複雑とか気に入らないとかと理由で変更したいと思ったことはないでしょうか。SSHの公開鍵認証は通常、認証前にパスフレーズを入力しますが、SSH公開鍵認証は所持している鍵を元々設定されているパスフレーズで復号化→復号化された鍵をサーバに送信して認証という手順なので、パスフレーズというのはローカルだけで簡単に変更することができます。
 変更する書式は下記のとおりです。
ssh-keygen -p [-P 古いパスフレーズ ] [-N 新しいパスフレーズ ]
                    \ [-f パスフレーズを変更するidentityファイル ] 
 下記のように変更します。.ssh/id_dsa_testはローカルに存在する秘密鍵です。リモートサーバにログイン後、下記作業を実施するとリモートサーバ側の秘密鍵が変更されてしまいますので注意してください。
$ ssh-keygen -p -P ********** -N ********** -f .ssh/id_dsa_test
Key has comment '.ssh/id_dsa_test'
Your identification has been saved with the new passphrase.
 これでパスフレーズが変更されました。

 下記の方法でも変更出来ます。
$ ssh-keygen -p -f .ssh/id_dsa_test
Enter old passphrase: ← 現在のパスフレーズを入力
Key has comment '.ssh/id_dsa_test'
Enter new passphrase (empty for no passphrase): ← 新しいパスフレーズを入力
Enter same passphrase again: ← 新しいパスフレーズを再入力
Your identification has been saved with the new passphrase.
 WindowsであればPuTTY付属のputtygen.exeでパスフレーズを変更することができます。puttygen.exeに鍵を現在のパスフレーズを入力して読み込ませると、パスフレーズ入力欄があります。そこを変更後、再度、秘密鍵を保存すればいいです。

●Authentication refused: bad ownership or modes for directory /home/user

 /home/userのアクセス権を「700」や「755」等に設定するといいです。

●sftpの転送ログを記録する方法

 /etc/ssh/sshd_configを以下のように変更します。
設定変更前
Subsystem       sftp    /usr/libexec/openssh/sftp-server
設定変更後
Subsystem       sftp    /usr/libexec/openssh/sftp-server -l VERBOSE
 次に、/etc/syslog.confに以下を追記します。
#auth log
auth.* /var/log/authlog
 設定を反映させるため、sshdとsyslogをrestartします。
 下記のようなログが記録されます。
console.logという約306Mの転送時に以下のようにログ(/var/log/messages)が出力されました。
Nov 13 20:47:50 host sftp-server[31332]: open "/home/hoge/console.log.filepart"
         / flags WRITE,CREATE,TRUNCATE mode 0666
Nov 13 20:49:01 host sftp-server[31332]: close "/home/hoge/console.log.filepart" bytes
         / read 0 written 321481637
Nov 13 20:49:01 host sftp-server[31332]: rename old "/home/hoge/console.log.filepart"
         / new "/home/hoge/console.log"
Nov 13 20:49:01 host sftp-server[31332]: set "/home/hoge/console.log"
         / modtime 20120604-18:54:10

●Agent admitted failure to sign using the key.と表示される

 各サーバで同じ鍵で認証できるように設定していたところ下記のようなエラーが表示されました。
Agent admitted failure to sign using the key.
Password:
 どのクライアントも秘密鍵は同じで、どのサーバの公開鍵は一緒なのにと悩んでいたところ、下記コマンドを実行したら解決しました。
$ ssh-add ~/.ssh/id_dsa
Identity added: .ssh/id_dsa (.ssh/id_dsa)


●「userauth_pubkey: key type ssh-dss not in PubkeyAcceptedKeyTypes [preauth]」のためログイン出来ない

 参考URL:SSH鍵の暗号化方式を強化してみた。

 Fedora 22をFedora 23にアップグレードしたところこれまで使用していた秘密鍵(DSA鍵)でログイン出来なくなりました。/var/log/secureに下記のようなログが記録されていました。
userauth_pubkey: key type ssh-dss not in PubkeyAcceptedKeyTypes [preauth]
 OpenSSHのバージョンは「openssh-7.2p2-6.fc23.i686」です。
 どうもDSA鍵が使用出来なくなったみたいです。

    PubkeyAcceptedKeyTypes
       Specifies the key types that will be accepted for public key authentication as a
       comma-separated pattern list. Alternately if the specified value begins with a ‘+’
       character, then the specified key types will be appended to the default set instead
       of replacing them. The default for this option is:

       ecdsa-sha2-nistp256-cert-v01@openssh.com,
       ecdsa-sha2-nistp384-cert-v01@openssh.com,
       ecdsa-sha2-nistp521-cert-v01@openssh.com,
       ssh-ed25519-cert-v01@openssh.com,
       ssh-rsa-cert-v01@openssh.com,
       ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,
       ssh-ed25519,ssh-rsa

       The -Q option of ssh(1) may be used to list supported key types.


 やむを得ないのでRSA鍵で再作成することにします。
 ●rsa(protocol2)キ−の作成

●「Could not load host key: /etc/ssh/ssh_host_dsa_key」がログに記録される

 Fedoraをバージョンアップしたころからか、/var/log/messagesに「Could not load host key: /etc/ssh/ssh_host_dsa_key」が記録されるようになりました。
 該当ファイルは存在し、所有者やアクセス権等を変更してみましたが状況は変わりませんでした。
 やむを得ないのでキーを再作成することにしました。
# ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -C '' -N ''
Generating public/private dsa key pair.
/etc/ssh/ssh_host_dsa_key already exists.
Overwrite (y/n)? y
Your identification has been saved in /etc/ssh/ssh_host_dsa_key.
Your public key has been saved in /etc/ssh/ssh_host_dsa_key.pub.
The key fingerprint is:
SHA256:F69jmkvau4eG928QSXdWX9dfjnSnjoBiHs08crUSnVwE
The key's randomart image is:
+---[DSA 2048]----+
|           L.o =+|
|         .o. .+o*|
|        +o+..o =o|
|       = B.+o  ..|
|        S *o.oo..|
|       o * o*oo o|
|        + o .+.oo|
|         o *oo.*o|
|          .  o=+ |
+----[SHA256]-----+
 再作成後エラーは出力されなくなりました。

●SSH接続のタイムアウトを防ぐには

 参考URL:SSH接続がタイムアウトで自動的に切断されないようにする

 SSHは接続を持続するように設計されています。
 しかし、SSHでクライアントからサーバに接続している経路上に存在するルータやファイヤーウォールによって一定時間通信のないコネクションを切断してしまう、ということによりSSHの自動切断という現象が発生します。
 つまり、SSHの自動切断の原因はルータやファイヤーウォールが主です。
 一定時間通信のないコネクションを切断するという行為は当然の動作です。
 SSHの自動切断を防止するためには、一定期間毎に通信を行えば自動切断を回避できます。

 SSHサーバ側での対策

 SSHには「ClientAliveInterval」と「ClientAliveCountMax 」という設定値があります。
 設定された秒数ごとに応答確認を行い、応答が無い場合、自動的にタイムアウトします。
 この機能をSSHの自動切断回避に利用します。

 それぞれの機能の詳細です。

 「ClientAliveInterval」:ここで指定した秒数ごとに応答確認を行う。
 「ClientAliveCountMax」:応答確認を行う回数。

 デフォルト値は下記の通りです。

 「ClientAliveInterval」のデフォルト値:0(※0だと何もしない)
 「ClientAliveCountMax」のデフォルト値:3

 つまり、何も設定していない場合は応答確認を行わず、その結果SSHの接続が切れてしまいますので、下記の設定をSSHの設定ファイルに追加します。
# vi /etc/ssh/sshd_config
ClientAliveInterval 120
ClientAliveCountMax 3
 追加したらSSHを再起動します。
# systemctl restart sshd
 これでOKです。
 今後は120秒ごとに応答確認の通信を行います。
 クライアント側からSSHを切断しない限りタイムアウトにはならずに接続は維持されます。
 もし、何かしらの原因によりネットワークが切断されてしまった場合などでも、3回繰り返して応答が無ければ自動切断してくれるのでSSHの「ゴーストユーザー」が残る事もなく安心です。

 SSHクライアント側での対策

 SSH接続で利用するターミナルソフトの簡単な設定でSSHの自動切断を回避することができます。

 PuTTYでの設定方法

 メニューの「接続」をクリックします。
 「セッションをアクティブに保つための null パケットの送信」の「Keepalive の間隔(秒、0 でオフ)」の値をデフォルトの「0」から任意の値(120など)に変更後、「Open」をクリックして接続します。

ssh2_01.jpg

 Tera Termでの設定方法

 メニューの「設定」→「SSH」を開きます。

ssh2_02.jpg

 ハートビート(keep-alive)の秒数を設定して「OK」をクリックします。(デフォルト値:60)

ssh2_03.jpg

 メニューの「設定」→「設定の保存」をで設定した内容を保存します。

ssh2_04.jpg

 Linux Clientでの設定

 /etc/ssh/ssh_configまたは~/.ssh/configに下記を追記します。
ServerAliveInterval 15
 設定した時間に応答がないと、ServerAliveCountMax の回数(デフォルト値: 3)応答確認し、応答がないとタイムアウトする。
 例えば ServerAliveInterval 15 に設定すると15秒毎にサーバにメッセージを送り、ServerAliveCountMaxのデフォルト回数である3回まで繰り返します。
 つまり、サーバが応答しなくなった後45秒後に接続を切断します。