Question regarding Host keys.

Mahoda Ratnayaka mahodardev at gmail.com
Wed Sep 14 09:39:10 AEST 2016


Hi,

Quick update, I did a bit of digging around and found when nothing added
to HostKeyAlgorithms the list will reorder:
 "debug3: order_hostkeyalgs: prefer hostkeyalgs:
ssh-rsa-cert-v01 at openssh.com,rsa-sha2-512,rsa-sha2-256,ssh-rsa".

This doesn't happen in the case when HostKeyAlgorithms has something
defined. Looking at the code I see that this is deliberate, just curious is
there a reason for implementing like this. Also, I forgot to mention I have
strict check on. Any helpful information will be much appreciated.

Thanks,
Mahoda

On 8 September 2016 at 09:47, Mahoda Ratnayaka <mahodardev at gmail.com> wrote:

> Thanks for the reply, the client is using 7.2 and the server is on 6.6
> version.  And, here are the debug files attached.
>
> Thanks,
> Mahoda
>
> With Change:
> ============================================================
> =============================
> OpenSSH_7.2p2, OpenSSL 1.0.2h  3 May 2016
> debug1: Reading configuration data /etc/ssh/ssh_config
> debug2: resolving "192.168.1.1" port 22
> debug2: ssh_connect_direct: needpriv 0
> debug1: Connecting to 192.168.1.1 [192.168.1.1] port 22.
> debug1: Connection established.
> debug1: permanently_set_uid: 0/0
> debug1: key_load_public: No such file or directory
> debug1: identity file /flash/.home/root/.ssh/identity type -1
> debug1: key_load_public: No such file or directory
> debug1: identity file /flash/.home/root/.ssh/identity-cert type -1
> debug1: key_load_public: No such file or directory
> debug1: identity file /flash/.home/root/.ssh/id_rsa type -1
> debug1: key_load_public: No such file or directory
> debug1: identity file /flash/.home/root/.ssh/id_rsa-cert type -1
> debug1: key_load_public: No such file or directory
> debug1: identity file /flash/.home/root/.ssh/id_dsa type -1
> debug1: key_load_public: No such file or directory
> debug1: identity file /flash/.home/root/.ssh/id_dsa-cert type -1
> debug1: key_load_public: No such file or directory
> debug1: identity file /flash/.home/root/.ssh/id_ecdsa type -1
> debug1: key_load_public: No such file or directory
> debug1: identity file /flash/.home/root/.ssh/id_ecdsa-cert type -1
> debug1: Enabling compatibility mode for protocol 2.0
> debug1: Local version string SSH-2.0-AtiSSH_2.0
> debug1: Remote protocol version 2.0, remote software version
> OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.8
> debug1: match: OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.8 pat OpenSSH_6.6.1* compat
> 0x04000000
> debug2: fd 3 setting O_NONBLOCK
> debug3: send packet: type 20
> debug1: SSH2_MSG_KEXINIT sent
> debug3: receive packet: type 20
> debug1: SSH2_MSG_KEXINIT received
> debug2: local client KEXINIT proposal
> debug2: KEX algorithms: curve25519-sha256 at libssh.org,
> ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,
> diffie-hellman-group-exchange-sha256,diffie-hellman-group-
> exchange-sha1,diffie-hellman-group14-sha1,ext-info-c
> debug2: host key algorithms: ecdsa-sha2-nistp256-cert-v01 at openssh.com,
> ecdsa-sha2-nistp384-cert-v01 at openssh.com,ecdsa-sha2-nistp521-cert-v01@
> openssh.com,ssh-ed25519-cert-v01 at openssh.com,ssh-rsa-cert-v01 at openssh.com
> ,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-
> ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa,ssh-dss
> debug2: ciphers ctos: chacha20-poly1305 at openssh.com,
> aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm at openssh.com,aes
> 256-gcm at openssh.com,aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc
> debug2: ciphers stoc: chacha20-poly1305 at openssh.com,
> aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm at openssh.com,aes
> 256-gcm at openssh.com,aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc
> debug2: MACs ctos: umac-64-etm at openssh.com,umac-128-etm at openssh.com,
> hmac-sha2-256-etm at openssh.com,hmac-sha2-512-etm at openssh.com,hmac-sha1-
> etm at openssh.com,umac-64 at openssh.com,umac-128 at openssh.com
> ,hmac-sha2-256,hmac-sha2-512,hmac-sha1
> debug2: MACs stoc: umac-64-etm at openssh.com,umac-128-etm at openssh.com,
> hmac-sha2-256-etm at openssh.com,hmac-sha2-512-etm at openssh.com,hmac-sha1-
> etm at openssh.com,umac-64 at openssh.com,umac-128 at openssh.com
> ,hmac-sha2-256,hmac-sha2-512,hmac-sha1
> debug2: compression ctos: none,zlib at openssh.com,zlib
> debug2: compression stoc: none,zlib at openssh.com,zlib
> debug2: languages ctos:
> debug2: languages stoc:
> debug2: first_kex_follows 0
> debug2: reserved 0
> debug2: peer server KEXINIT proposal
> debug2: KEX algorithms: curve25519-sha256 at libssh.org,
> ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,
> diffie-hellman-group-exchange-sha256,diffie-hellman-group-
> exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
> debug2: host key algorithms: ssh-rsa,ssh-dss,ecdsa-sha2-
> nistp256,ssh-ed25519
> debug2: ciphers ctos: aes128-ctr,aes192-ctr,aes256-
> ctr,arcfour256,arcfour128,aes128-gcm at openssh.com,aes256-gcm at openssh.com,
> chacha20-poly1305 at openssh.com,aes128-cbc,3des-
> cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,
> rijndael-cbc at lysator.liu.se
> debug2: ciphers stoc: aes128-ctr,aes192-ctr,aes256-
> ctr,arcfour256,arcfour128,aes128-gcm at openssh.com,aes256-gcm at openssh.com,
> chacha20-poly1305 at openssh.com,aes128-cbc,3des-
> cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,
> rijndael-cbc at lysator.liu.se
> debug2: MACs ctos: hmac-md5-etm at openssh.com,hmac-sha1-etm at openssh.com,
> umac-64-etm at openssh.com,umac-128-etm at openssh.com,hmac-sha2-256-etm@
> openssh.com,hmac-sha2-512-etm at openssh.com,hmac-ripemd160-etm at openssh.com,
> hmac-sha1-96-etm at openssh.com,hmac-md5-96-etm at openssh.com,hmac-md5,hmac-
> sha1,umac-64 at openssh.com,umac-128 at openssh.com,hmac-sha2-256,
> hmac-sha2-512,hmac-ripemd160,hmac-ripemd160 at openssh.com,
> hmac-sha1-96,hmac-md5-96
> debug2: MACs stoc: hmac-md5-etm at openssh.com,hmac-sha1-etm at openssh.com,
> umac-64-etm at openssh.com,umac-128-etm at openssh.com,hmac-sha2-256-etm@
> openssh.com,hmac-sha2-512-etm at openssh.com,hmac-ripemd160-etm at openssh.com,
> hmac-sha1-96-etm at openssh.com,hmac-md5-96-etm at openssh.com,hmac-md5,hmac-
> sha1,umac-64 at openssh.com,umac-128 at openssh.com,hmac-sha2-256,
> hmac-sha2-512,hmac-ripemd160,hmac-ripemd160 at openssh.com,
> hmac-sha1-96,hmac-md5-96
> debug2: compression ctos: none,zlib at openssh.com
> debug2: compression stoc: none,zlib at openssh.com
> debug2: languages ctos:
> debug2: languages stoc:
> debug2: first_kex_follows 0
> debug2: reserved 0
> debug1: kex: algorithm: curve25519-sha256 at libssh.org
> debug1: kex: host key algorithm: ecdsa-sha2-nistp256
> debug1: kex: server->client cipher: chacha20-poly1305 at openssh.com MAC:
> <implicit> compression: none
> debug1: kex: client->server cipher: chacha20-poly1305 at openssh.com MAC:
> <implicit> compression: none
> debug3: send packet: type 30
> debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
> debug3: receive packet: type 31
> debug1: Server host key: ecdsa-sha2-nistp256 SHA256:
> IwZ3AJCkBnQypTalkkezSSXShPg/+1eEDgHS65R8dN0
> debug3: hostkeys_foreach: reading file "/flash/.home/root/.ssh/known_
> hosts"
> debug3: hostkeys_foreach: reading file "/flash/.configs/ssh/ssh_
> known_hosts"
> debug3: record_hostkey: found key type RSA in file
> /flash/.configs/ssh/ssh_known_hosts:2
> debug3: load_hostkeys: loaded 1 keys from 192.168.1.1
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> @    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
> Someone could be eavesdropping on you right now (man-in-the-middle attack)!
> It is also possible that a host key has just been changed.
> The fingerprint for the ECDSA key sent by the remote host is
> SHA256:IwZ3AJCkBnQypTalkkezSSXShPg/+1eEDgHS65R8dN0.
> Please contact your system administrator.
> ECDSA host key for 192.168.1.1 has changed and you have requested strict
> checking.
> Host key verification failed.
> ============================================================
> ============================================================
> =====================
>
> Without change:
> ============================================================
> ============================================================
> =====================
> OpenSSH_7.2p2, OpenSSL 1.0.2h  3 May 2016
> debug1: Reading configuration data /etc/ssh/ssh_config
> debug2: resolving "192.168.1.1" port 22
> debug2: ssh_connect_direct: needpriv 0
> debug1: Connecting to 192.168.1.1 [192.168.1.1] port 22.
> debug1: Connection established.
> debug1: permanently_set_uid: 0/0
> debug1: key_load_public: No such file or directory
> debug1: identity file /flash/.home/root/.ssh/identity type -1
> debug1: key_load_public: No such file or directory
> debug1: identity file /flash/.home/root/.ssh/identity-cert type -1
> debug1: key_load_public: No such file or directory
> debug1: identity file /flash/.home/root/.ssh/id_rsa type -1
> debug1: key_load_public: No such file or directory
> debug1: identity file /flash/.home/root/.ssh/id_rsa-cert type -1
> debug1: key_load_public: No such file or directory
> debug1: identity file /flash/.home/root/.ssh/id_dsa type -1
> debug1: key_load_public: No such file or directory
> debug1: identity file /flash/.home/root/.ssh/id_dsa-cert type -1
> debug1: key_load_public: No such file or directory
> debug1: identity file /flash/.home/root/.ssh/id_ecdsa type -1
> debug1: key_load_public: No such file or directory
> debug1: identity file /flash/.home/root/.ssh/id_ecdsa-cert type -1
> debug1: Enabling compatibility mode for protocol 2.0
> debug1: Local version string SSH-2.0-AtiSSH_2.0
> debug1: Remote protocol version 2.0, remote software version
> OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.8
> debug1: match: OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.8 pat OpenSSH_6.6.1* compat
> 0x04000000
> debug2: fd 3 setting O_NONBLOCK
> debug3: hostkeys_foreach: reading file "/flash/.home/root/.ssh/known_
> hosts"
> debug3: hostkeys_foreach: reading file "/flash/.configs/ssh/ssh_
> known_hosts"
> debug3: record_hostkey: found key type RSA in file
> /flash/.configs/ssh/ssh_known_hosts:2
> debug3: load_hostkeys: loaded 1 keys from 192.168.1.1
> debug3: order_hostkeyalgs: prefer hostkeyalgs:
> ssh-rsa-cert-v01 at openssh.com,rsa-sha2-512,rsa-sha2-256,ssh-rsa
> debug3: send packet: type 20
> debug1: SSH2_MSG_KEXINIT sent
> debug3: receive packet: type 20
> debug1: SSH2_MSG_KEXINIT received
> debug2: local client KEXINIT proposal
> debug2: KEX algorithms: curve25519-sha256 at libssh.org,
> ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,
> diffie-hellman-group-exchange-sha256,diffie-hellman-group-
> exchange-sha1,diffie-hellman-group14-sha1,ext-info-c
> debug2: host key algorithms: ssh-rsa-cert-v01 at openssh.com,
> rsa-sha2-512,rsa-sha2-256,ssh-rsa,ecdsa-sha2-nistp256-cert-v01 at openssh.com
> ,ecdsa-sha2-nistp384-cert-v01 at openssh.com,ecdsa-sha2-nistp521-cert-v01@
> openssh.com,ssh-ed25519-cert-v01 at openssh.com,ecdsa-sha2-
> nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519
> debug2: ciphers ctos: chacha20-poly1305 at openssh.com,
> aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm at openssh.com,aes
> 256-gcm at openssh.com,aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc
> debug2: ciphers stoc: chacha20-poly1305 at openssh.com,
> aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm at openssh.com,aes
> 256-gcm at openssh.com,aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc
> debug2: MACs ctos: umac-64-etm at openssh.com,umac-128-etm at openssh.com,
> hmac-sha2-256-etm at openssh.com,hmac-sha2-512-etm at openssh.com,hmac-sha1-
> etm at openssh.com,umac-64 at openssh.com,umac-128 at openssh.com
> ,hmac-sha2-256,hmac-sha2-512,hmac-sha1
> debug2: MACs stoc: umac-64-etm at openssh.com,umac-128-etm at openssh.com,
> hmac-sha2-256-etm at openssh.com,hmac-sha2-512-etm at openssh.com,hmac-sha1-
> etm at openssh.com,umac-64 at openssh.com,umac-128 at openssh.com
> ,hmac-sha2-256,hmac-sha2-512,hmac-sha1
> debug2: compression ctos: none,zlib at openssh.com,zlib
> debug2: compression stoc: none,zlib at openssh.com,zlib
> debug2: languages ctos:
> debug2: languages stoc:
> debug2: first_kex_follows 0
> debug2: reserved 0
> debug2: peer server KEXINIT proposal
> debug2: KEX algorithms: curve25519-sha256 at libssh.org,
> ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,
> diffie-hellman-group-exchange-sha256,diffie-hellman-group-
> exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
> debug2: host key algorithms: ssh-rsa,ssh-dss,ecdsa-sha2-
> nistp256,ssh-ed25519
> debug2: ciphers ctos: aes128-ctr,aes192-ctr,aes256-
> ctr,arcfour256,arcfour128,aes128-gcm at openssh.com,aes256-gcm at openssh.com,
> chacha20-poly1305 at openssh.com,aes128-cbc,3des-
> cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,
> rijndael-cbc at lysator.liu.se
> debug2: ciphers stoc: aes128-ctr,aes192-ctr,aes256-
> ctr,arcfour256,arcfour128,aes128-gcm at openssh.com,aes256-gcm at openssh.com,
> chacha20-poly1305 at openssh.com,aes128-cbc,3des-
> cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,
> rijndael-cbc at lysator.liu.se
> debug2: MACs ctos: hmac-md5-etm at openssh.com,hmac-sha1-etm at openssh.com,
> umac-64-etm at openssh.com,umac-128-etm at openssh.com,hmac-sha2-256-etm@
> openssh.com,hmac-sha2-512-etm at openssh.com,hmac-ripemd160-etm at openssh.com,
> hmac-sha1-96-etm at openssh.com,hmac-md5-96-etm at openssh.com,hmac-md5,hmac-
> sha1,umac-64 at openssh.com,umac-128 at openssh.com,hmac-sha2-256,
> hmac-sha2-512,hmac-ripemd160,hmac-ripemd160 at openssh.com,
> hmac-sha1-96,hmac-md5-96
> debug2: MACs stoc: hmac-md5-etm at openssh.com,hmac-sha1-etm at openssh.com,
> umac-64-etm at openssh.com,umac-128-etm at openssh.com,hmac-sha2-256-etm@
> openssh.com,hmac-sha2-512-etm at openssh.com,hmac-ripemd160-etm at openssh.com,
> hmac-sha1-96-etm at openssh.com,hmac-md5-96-etm at openssh.com,hmac-md5,hmac-
> sha1,umac-64 at openssh.com,umac-128 at openssh.com,hmac-sha2-256,
> hmac-sha2-512,hmac-ripemd160,hmac-ripemd160 at openssh.com,
> hmac-sha1-96,hmac-md5-96
> debug2: compression ctos: none,zlib at openssh.com
> debug2: compression stoc: none,zlib at openssh.com
> debug2: languages ctos:
> debug2: languages stoc:
> debug2: first_kex_follows 0
> debug2: reserved 0
> debug1: kex: algorithm: curve25519-sha256 at libssh.org
> debug1: kex: host key algorithm: ssh-rsa
> debug1: kex: server->client cipher: chacha20-poly1305 at openssh.com MAC:
> <implicit> compression: none
> debug1: kex: client->server cipher: chacha20-poly1305 at openssh.com MAC:
> <implicit> compression: none
> debug3: send packet: type 30
> debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
> debug3: receive packet: type 31
> debug1: Server host key: ssh-rsa SHA256:UWb75G/
> DzMWOCH4KNR4As0lYcpI1POgD7TEX9iXYSLA
> debug3: hostkeys_foreach: reading file "/flash/.home/root/.ssh/known_
> hosts"
> debug3: hostkeys_foreach: reading file "/flash/.configs/ssh/ssh_
> known_hosts"
> debug3: record_hostkey: found key type RSA in file
> /flash/.configs/ssh/ssh_known_hosts:2
> debug3: load_hostkeys: loaded 1 keys from 192.168.1.1
> debug1: Host '192.168.1.1' is known and matches the RSA host key.
> debug1: Found key in /flash/.configs/ssh/ssh_known_hosts:2
> debug3: send packet: type 21
> debug2: set_newkeys: mode 1
> debug1: rekey after 134217728 blocks
> debug1: SSH2_MSG_NEWKEYS sent
> debug1: expecting SSH2_MSG_NEWKEYS
> debug3: receive packet: type 21
> debug2: set_newkeys: mode 0
> debug1: rekey after 134217728 blocks
> debug1: SSH2_MSG_NEWKEYS received
> debug2: key: /flash/.home/root/.ssh/identity ((nil))
> debug2: key: /flash/.home/root/.ssh/id_rsa ((nil))
> debug2: key: /flash/.home/root/.ssh/id_dsa ((nil))
> debug2: key: /flash/.home/root/.ssh/id_ecdsa ((nil))
> debug3: send packet: type 5
> debug3: receive packet: type 6
> debug2: service_accept: ssh-userauth
> debug1: SSH2_MSG_SERVICE_ACCEPT received
> debug3: send packet: type 50
> debug3: receive packet: type 51
> debug1: Authentications that can continue: publickey,password
> debug3: start over, passed a different list publickey,password
> debug3: preferred publickey,keyboard-interactive,password
> debug3: authmethod_lookup publickey
> debug3: remaining preferred: keyboard-interactive,password
> debug3: authmethod_is_enabled publickey
> debug1: Next authentication method: publickey
> debug1: Trying private key: /flash/.home/root/.ssh/identity
> debug3: no such identity: /flash/.home/root/.ssh/identity: No such file
> or directory
> debug1: Trying private key: /flash/.home/root/.ssh/id_rsa
> debug3: no such identity: /flash/.home/root/.ssh/id_rsa: No such file or
> directory
> debug1: Trying private key: /flash/.home/root/.ssh/id_dsa
> debug3: no such identity: /flash/.home/root/.ssh/id_dsa: No such file or
> directory
> debug1: Trying private key: /flash/.home/root/.ssh/id_ecdsa
> debug3: no such identity: /flash/.home/root/.ssh/id_ecdsa: No such file
> or directory
> debug2: we did not send a packet, disable method
> debug3: authmethod_lookup password
> debug3: remaining preferred: ,password
> debug3: authmethod_is_enabled password
> debug1: Next authentication method: password
> ============================================================
> ============================================================
> ===================
>
>
> On 7 September 2016 at 16:53, Darren Tucker <dtucker at zip.com.au> wrote:
>
>> On Wed, Sep 7, 2016 at 1:59 PM, Mahoda Ratnayaka <mahodardev at gmail.com>
>> wrote:
>> > I'm having a problem when I add "HostKeyAlgorithms +ssh-dss" to the
>> > ssh_config file the host key will always negotiate to a wrong one. In my
>> > case it will negotiate to "ecdsa-sha2-nistp256". The client was already
>> > configured with the servers rsa public key, before the change I added to
>> > the ssh_config file I could see from the debug that server and client
>> will
>> > negotiate to use ssh-rsa as expected. After change unfortunately the
>> client
>> > and server will negotiate to use ecdsa-sha2-nistp256, then later will
>> > complain "REMOTE HOST IDENTIFICATION HAS CHANGED" and fail. I got around
>> > this by adding the ecdsa public key to the know hosts.
>>
>> What version of OpenSSH is this?  Can you post debug output (ssh -vvv)
>> with and without the +ssh-dss option?
>>
>> --
>> Darren Tucker (dtucker at zip.com.au)
>> GPG key 11EAA6FA / A86E 3E07 5B19 5880 E860  37F4 9357 ECEF 11EA A6FA
>> (new)
>>     Good judgement comes with experience. Unfortunately, the experience
>> usually comes from bad judgement.
>>
>
>


More information about the openssh-unix-dev mailing list