SSH - "ネゴシエートできません...一致するホストキータイプが見つかりません。"

SSH -

私は組み込みシステム(32ビットARMelシステム)にシェルサーバーを持っています。ログインするときは、次を使用します。

$ ssh root@ip 
Unable to negotiate with ip port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss

次のオプションを使用して、予想されるパスワードタイプの1つを提供しようとしました-c

$ ssh -c ssh-dss root@ip 
Unknown cipher type 'ssh-dss'

または:

$ ssh -c ssh-rsa root@ip
Unknown cipher type 'ssh-rsa'

それで、次に何をすべきかわかりません。コマンドを送信できるUARTシリアルコンソールがありますが、SSHを使用したいと思います。サービスが実行されていることはわかりますが、ログインする方法がわかりません。

ベストアンサー1

ファームウェアを最新のSSH規格にアップグレードできなくなった古いCiscoエンベデッドシステムでは、この現象が頻繁に発生します。

ホスト鍵アルゴリズムに加えて、古い鍵交換アルゴリズムおよび/またはパスワード仕様を使用する必要があるかもしれません。

大きな打撃の例:

ssh -oKexAlgorithms=+diffie-hellman-group1-sha1\
 -oHostKeyAlgorithms=+ssh-rsa\
 -oCiphers=+aes256-cbc\
 <user>@asa5505

良いニュースは、私が使用しているOpenSSHが一般にどのアルゴリズムまたはパスワードが提供されているかを知らせることです。そうしないと、多くの試行錯誤を受ける必要があります。

これにより、利用可能なプロトコルがOpenSSHに一覧表示されます。

ssh -Q [ciphers|hostkeyalgorithms|kexalgorithms|...]

修正する: これを行うためにssh_configを使用することに興味があるようです(Bob、Zなどのおかげで)、このアプローチの例を提供します。

############################################
# ~/.ssh/config
Host 'asa5505*'
        KexAlgorithms +diffie-hellman-group1-sha1
        HostKeyAlgorithms +ssh-rsa
        Ciphers +aes128-cbc

これらのプロトコルはセキュリティ上の理由で使用されなくなったため、「ホスト」または「一致」の資格を使用して、そのプロトコルが必要な従来のターゲットにのみ使用されるようにデフォルトの使用法を制限する必要があります。

同様に、これらの例外/etc/ssh/ssh_configまたは下/etc/ssh/ssh_config.d/現在と将来のすべてのユーザーがデフォルトでそれを使用することを意図しない限り。

詳細については、次を参照してください。

man ssh_config

おすすめ記事