[ERROR] could not connect to ssh://x.x.x.x:22 - kex error : no match for method server host key algo

# はじめに

[ハッキング・ラボのつくりかた 仮想環境におけるハッカー体験学習 第２部ハッキングを体験する 第５章](https://www.shoeisha.co.jp/book/detail/9784798155302)で記事タイトルにあるエラーが発生しました。
備忘録として原因、対応内容をメモします。

## 事象

Metasploitableに対して、Hydraを使って辞書式攻撃を仕掛け、SSHアカウントを解析しようとしました。(クライアントはKali Linux)
実行コマンドと発生したエラーは以下の通りです。

```txt
┌──(kali㉿kali)-[~]
└─$ hydra -L user.lst -P pass.lst -t 4 10.0.0.5 ssh -v
Hydra v9.5 (c) 2023 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2023-10-29 19:45:53
[DATA] max 4 tasks per 1 server, overall 4 tasks, 80 login tries (l:8/p:10), ~20 tries per task
[DATA] attacking ssh://10.0.0.5:22/
[VERBOSE] Resolving addresses ... [VERBOSE] resolving done
[INFO] Testing if password authentication is supported by ssh://root@10.0.0.5:22
[ERROR] could not connect to ssh://10.0.0.5:22 - kex error : no match for method server host key algo: server [ssh-rsa,ssh-dss], client [ssh-ed25519,ecdsa-sha2-nistp521,ecdsa-sha2-nistp384,ecdsa-sha2-nistp256,sk-ssh-ed25519@openssh.com,sk-ecdsa-sha2-nistp256@openssh.com,rsa-sha2-512,rsa-sha2-256]
```

## 原因

エラーメッセージ`no match for method server host key algo`から、クライアント側とサーバ側で対応している暗号アルゴリズムが異なるためエラーになっているようです。
クライアント側は`client [ssh-ed25519,ecdsa-sha2-nistp521,ecdsa-sha2-nistp384,ecdsa-sha2-nistp256,sk-ssh-ed25519@openssh.com,sk-ecdsa-sha2-nistp256@openssh.com,rsa-sha2-512,rsa-sha2-256]`でした。
一方、サーバ側は`server [ssh-rsa,ssh-dss]`とSHA1の古いアルゴリズムしか対応していません。

## 対処方法

1. クライアント側が対応している鍵をサーバ側で作り直す
2. クライアント側でSHA1鍵を使えるよう設定する

１番目は学習として想定していないため、２番目を採用します。
KaliのSSh設定について調べたところ以下の記事が見つかりました。

https://www.kali.org/docs/general-use/ssh-configuration/

要約すると、Kaliの設定を変更するとSHA1などの古い暗号アルゴリズムを採用しているサーバに接続できるみたいです。
デフォルトではその設定が無効になっています。
設定は[`kali-tweaks`](https://www.kali.org/tools/kali-tweaks/)というツールで変更できるので、今回はそれで試してみます。

まず、パッケージリストの最新化およびインストールを行います。

```txt
┌──(kali㉿kali)-[~]
└─$ sudo apt update && sudo apt full-upgrade -y
Hit:1 http://ftp.ne.jp/Linux/packages/kali/kali kali-rolling InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
635 packages can be upgraded. Run 'apt list --upgradable' to see them.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
.
.
.
```

次に、`kali-tweaks`がインストールされたか確認します。

```txt
┌──(kali㉿kali)-[~]
└─$ dpkg -l | grep kali-tweaks 
ii  kali-tweaks                                    2023.3.2                              all          tool to adjust advanced configuration settings for Kali Linux
```

`kali-tweaks`を起動します。

```
kali-tweaks -h
```

以下GUI画面が表示されます。
`Hardening`を選択してください。

![スクリーンショット 2023-10-29 210640.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545707/cd0a283c-016a-2ab1-60e0-69c75f38d5f5.png)

`SSH client`を選択し、`Apply`を選択してください。

![スクリーンショット 2023-10-29 210709.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545707/17be2a77-93f8-93dd-2274-0a450ee61bff.png)

`OK`を選択してください。

![スクリーンショット 2023-10-29 210725.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545707/c68ce59f-4273-45d1-c74c-0b00a0697748.png)

ターミナルに戻ります。
パスワードが求められるので入力してください。

![スクリーンショット 2023-10-29 210740.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545707/eb3bc462-557f-2a35-c50c-abc03e3e2cc0.png)

そのままエンターキーを押してください。

![スクリーンショット 2023-10-29 210756.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545707/0767e889-9950-3eb8-f11d-fc84a0dbb078.png)

`Quit`を選択し、ツールを終了させてください。

![スクリーンショット 2023-10-29 210817.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545707/fc16bb67-6072-2cd9-9091-3a9bcf01c431.png)

![スクリーンショット 2023-10-29 210842.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545707/183ea782-1de3-955e-135f-b8563c1962bf.png)

エラーになっていたHydraのコマンドを再度実行し、SSHエラーにならないことを確認します。

```txt
┌──(kali㉿kali)-[~]
└─$ hydra -L user.lst -P pass.lst -t 4 10.0.0.5 ssh -v
Hydra v9.5 (c) 2023 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2023-10-29 21:08:52
[DATA] max 4 tasks per 1 server, overall 4 tasks, 80 login tries (l:8/p:10), ~20 tries per task
[DATA] attacking ssh://10.0.0.5:22/
[VERBOSE] Resolving addresses ... [VERBOSE] resolving done
[INFO] Testing if password authentication is supported by ssh://root@10.0.0.5:22
[INFO] Successful, password authentication is supported by ssh://10.0.0.5:22
[22][ssh] host: 10.0.0.5   login: sys   password: batman
[22][ssh] host: 10.0.0.5   login: msfadmin   password: msfadmin
[STATUS] 44.00 tries/min, 44 tries in 00:01h, 36 to do in 00:01h, 4 active
[22][ssh] host: 10.0.0.5   login: user   password: user
[STATUS] attack finished for 10.0.0.5 (waiting for children to complete tests)
1 of 1 target successfully completed, 3 valid passwords found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2023-10-29 21:10:52
```

## 参考

- https://qiita.com/ponsuke0531/items/6c522c56cce6b86e72ad
- https://orumin.blogspot.com/2020/05/ssh-rsa.html
- https://pyopyopyo.hatenablog.com/entry/2022/11/02/180000