TeratermでlinuxユーザーがSSH接続で認証失敗したため、いろいろ試してみた

# はじめに
TeraTeramで登録したlinuxユーザーでログイン出来ない事象が起きたため、この記事に調査した内容をまとめました。
同じ事象が起きた方は良かったら参考にしてください。


# 動作条件
OS CentOS7
VirtualBoxでゲストOSを作成しました。
端末　Windows 11
TeraTerm ver 4.106

# ユーザー登録
以下の手順に従いユーザーホームディレクトリを/home以外でユーザー登録をしました。
https://qiita.com/gama1234/items/9dde01ea507cac003cfa

# TeraTerm 秘密鍵認証でログインできない事象

TeraTermの画面でユーザー名と秘密鍵を指定した後、
誤ったパスワードを入力すると、以下のメッセージが出ますが、正しいパスワードを入れるとメッセージのポップアップは何も出ませんが、認証失敗になります。認証失敗時にログ「/var/log/secure」にエラーが出力されないため、原因は不明です。

例)誤ったパスワードを入れた場合のメッセージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2599002/e4eaa0c4-0818-e71c-8b86-8434eac1cf52.png)

SSH接続失敗時のTeraTermの画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2599002/fe3d6a06-f17e-588d-9c59-78c787a08b67.png)


linuxユーザーを何度か登録しましたが、事象発生する頻度としてはユーザーホームディレクトリが/homeのユーザーは本事象が発生しずらく、主に/home以外のユーザーで本事象が発生しやすいと感じました。

# 試したこと

### 鍵の権限と所有ユーザーを確認した
ログイン出来ないユーザーの鍵の権限を確認したが、問題なし
```
#.ssh配下の権限を確認した。
[root@localhost test]# ls -ltr /test/test_user1/.ssh
合計 16
-rw-------. 1 test_user1 test 1766 12月  3 09:46 test_user1.pem
-rw-------. 1 test_user1 test  414 12月  3 09:46 authorized_keys
-rw-r--r--. 1 test_user1 test  414 12月  3 23:30 id_rsa.pub
-rw-------. 1 test_user1 test 1766 12月  3 23:30 id_rsa
```
念のため、.sshのフォルダの所有ユーザーと権限を確認したが問題なし
```
[root@localhost test]# ls -tlra /test/test_user1
合計 16
-rw-r--r--. 1 test_user1 test 231  4月  1  2020 .bashrc
-rw-r--r--. 1 test_user1 test 193  4月  1  2020 .bash_profile
-rw-r--r--. 1 test_user1 test  18  4月  1  2020 .bash_logout
drwx------. 3 test_user1 test  95 12月  3 10:42 .
drwxr-xr-x. 4 root       root  42 12月  3 23:28 ..
drwx------. 2 test_user1 test  83 12月  3 23:30 .ssh
-rw-------. 1 test_user1 test  93 12月  3 23:31 .bash_history
```

ユーザーも問題なく登録されている
```
[root@localhost test]# cat /etc/passwd | grep test_user1
test_user1:x:<ユーザーID>:<グループID>::/test/test_user1:/bin/bash
```

### パスワード認証
パスワード認証でログインを試すと問題なくログイン出来ました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2599002/625219e9-bf73-d3c5-4fd3-2fcee3398b06.png)
ログイン成功した。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2599002/2884fbca-7902-28ed-ddd7-2023b788383f.png)
ログは正常に出力された。
```
[root@localhost ~]# tail -n 2 /var/log/secure
※パスワード認証のログ
Dec  4 21:15:12 localhost sshd[1422]: pam_unix(sshd:session): session opened for user test_user1 by (uid=0)
```
### sshdのコンフィグファイルにssh-rsaを設定
今回のケースはSSH接続出来るユーザーもあれば、出来ないユーザーもあるため、以下の設定をしても改善しない可能性はありますが、試してみました。

https://help.arena.ne.jp/hc/ja/articles/7134065589271-Tera-Term%E3%81%A7%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E3%81%B8SSH%E6%8E%A5%E7%B6%9A-%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93-

CentOS7で上記を試しましたが、コンフィグのエラーが出て設定出来ませんでした。
```
※SSHのバージョンは以下です。
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017
[root@localhost ssh]# sed -i '1s/^/PubkeyAcceptedAlgorithms=+ssh-rsa\n/' /etc/ssh/sshd_config
[root@localhost ssh]#
[root@localhost ssh]# head /etc/ssh/sshd_config
PubkeyAcceptedAlgorithms=+ssh-rsa
#       $OpenBSD: sshd_config,v 1.100 2016/08/15 12:32:04 naddy Exp $

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.
```
sshdのサービスを再起動したらエラーが出ました。
```
[root@localhost ssh]# systemctl restart sshd
Job for sshd.service failed because the control process exited with error code. See "systemctl status sshd.service" and "journalctl -xe" for details.

[root@localhost ssh]# journalctl -xe
-- Unit sshd.service has begun starting up.
12月 03 11:53:35 localhost.localdomain systemd[1]: sshd.service: main process exited, code=exited, status=255/n/a
12月 03 11:53:35 localhost.localdomain sshd[1989]: /etc/ssh/sshd_config: line 1: Bad configuration option: PubkeyAcceptedAlgorithms
12月 03 11:53:35 localhost.localdomain sshd[1989]: /etc/ssh/sshd_config: terminating, 1 bad configuration options
12月 03 11:53:35 localhost.localdomain systemd[1]: Failed to start OpenSSH server daemon.

```
### Puttyでログインを試した
SSH接続失敗しました。
サーバーのIPアドレスを入れました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2599002/77fc82ca-dad2-cbec-c139-2b5297625ac3.png)
秘密鍵を指定しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2599002/8e3a5f66-251f-9c97-2787-4460f1200eef.png)

鍵の読み込みに失敗しました
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2599002/199bf770-a7d7-2473-9553-1d94b42f99ec.png)


### WSLでログインを試した
SSH接続が成功しました。
```
test@DESKTOP-0S2U0NI:~$ ssh -i test_user1.pem test_user1@192.168.40.118
Enter passphrase for key 'test_user1.pem':
Enter passphrase for key 'test_user1.pem':
test_user1@192.168.40.118's password:
Last login: Sat Dec  3 12:05:11 2022 from 192.168.40.113
[test_user1@localhost ~]$
```

### MSYS2でログインを試した
SSH接続成功しました。
最初にOpenSSHをインストールしました
```
$ pacman -S openssh
resolving dependencies...
looking for conflicting packages...

Packages (4) heimdal-7.7.0-4  libcbor-0.9.0-1  libfido2-1.12.0-1  openssh-8.9p1-3

Total Download Size:   1.43 MiB
Total Installed Size:  7.93 MiB

:: Proceed with installation? [Y/n] y
:: Retrieving packages...
 libcbor-0.9.0-1-x86_64                                                                     18.0 KiB  8.49 KiB/s 00:02 [######################################################################] 100%
 libfido2-1.12.0-1-x86_64                                                                   76.7 KiB  32.3 KiB/s 00:02 [######################################################################] 100%
 heimdal-7.7.0-4-x86_64                                                                    434.7 KiB   153 KiB/s 00:03 [######################################################################] 100%
 openssh-8.9p1-3-x86_64                                                                    937.5 KiB   321 KiB/s 00:03 [######################################################################] 100%
 Total (4/4)                                                                              1466.8 KiB   439 KiB/s 00:03 [######################################################################] 100%
(4/4) checking keys in keyring                                                                                         [######################################################################] 100%
(4/4) checking package integrity                                                                                       [######################################################################] 100%
(4/4) loading package files                                                                                            [######################################################################] 100%
(4/4) checking for file conflicts                                                                                      [######################################################################] 100%
(4/4) checking available disk space                                                                                    [######################################################################] 100%
:: Processing package changes...
(1/4) installing heimdal                                                                                               [######################################################################] 100%
(2/4) installing libcbor                                                                                               [######################################################################] 100%
(3/4) installing libfido2                                                                                              [######################################################################] 100%
(4/4) installing openssh                                                                                               [######################################################################] 100%

```
SSH接続がうまく行きました
```
$ ssh -i test_user1.pem test_user1@192.168.40.118
Enter passphrase for key 'test_user1.pem':
test_user1@192.168.40.118's password:
Last login: Sat Dec  3 12:08:40 2022 from 192.168.40.113
[test_user1@localhost ~]$
```
### WinSCPで接続を試しました
接続が成功しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2599002/02b8062d-06a3-56ee-6897-96a171368d62.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2599002/92d6c73b-88b3-1cc0-3043-796152376e00.png)
# まとめ
調査した結果、TeraTermとPuttyでSSH接続に失敗し、WSLとMSYS2の様にSSHコマンドを使用した場合はSSH接続出来たため、
上記からGUIのターミナルがSSH接続出来ない事象が起きる可能性があると理解しました。

TeraTermのパスワード認証はログイン出来たため、TeraTermで何らかの理由により、鍵の読み込みが上手く行かずに、SSH接続が実行されていないのが原因で、認証失敗がログに出力されていない可能性があると思いました。

私の周りでも、TeraTeramのターミナルだとSSH接続出来ずに、SSHコマンドだとログイン出来るという事象が起きたことがあると伺いました。原因は不明ですが、最近のディストリビューションでは、SSHするサーバ側の何らかのポリシーに、TeraTermが対応していない可能性もあるそうです

回避策として、GUIのターミナルでSSH接続が出来ない際は、SSHコマンドでSSH接続できるCUIのターミナルを使用することを検討した方が良いです。