DropbearSSH - клиент ssh говорит: аутентификация прошла успешно (открытый ключ), но соединение закрыто удаленным хостом

Вопрос

Как настроить ssh без пароля (на основе ключей) от клиента Ubuntu16.04 к SSH-серверу Dropbear?

  • Мой закрытый ключ не защищен парольной фразой.
  • Я не могу подключиться по SSH от Ubuntu16.04 к DropbearSSH с аутентификацией на основе ключей, но я могу сделать это из PeppermintOS 11.
  • Одна и та же пара частного/открытого ключей на обоих клиентах (сгенерирована в Ubuntu16.04, затем скопирована в PeppermintOS 11).
  • (Обновление Ubuntu16.04 невозможно).
  • ssh с паролями работает с обоих клиентов

Сервер

Сервер представляет собой встроенную систему, на которой работает Dropbear SSH:

      root@server:# uname -a
Linux server 5.10.9-v2.15-rc2 #1 PREEMPT Thu Sep 15 01:16:32 EDT 2022 armv7l GNU/Linux

root@server:# /usr/sbin/dropbear -V
Dropbear v2020.80

Dropbear регистрирует, когда клиент1 пытается войти в систему:

      Sep 19 23:33:23 server authpriv.info dropbear[10329]: Child connection from 192.168.1.101:59206
Sep 19 23:33:23 server authpriv.info dropbear[10329]: Exit before auth from <192.168.1.101:59206>: (user 'root', 0 fails): Non-matching signing type

Dropbear регистрирует, когда клиент2 пытается войти в систему:

      Sep 19 23:36:42 server authpriv.info dropbear[10410]: Child connection from 192.168.1.102:59218
Sep 19 23:36:42 server authpriv.notice dropbear[10410]: Pubkey auth succeeded for 'root' with key sha1!! he:x_:va:lu:es:_r:em:ov:ed:_f:or:se:cu:ri:ty:__:__:__:_:__ from 192.168.1.102:59218

# Successful login

# Now, when client2 logs out:
Sep 19 23:39:25 server authpriv.info dropbear[10410]: Exit (root) from <192.168.1.102:59218>: Disconnect received

Клиент1

Клиент1 — Ubuntu16.04:

      user@client1:~$ uname -a
Linux client1 4.15.0-142-generic #146~16.04.1-Ubuntu SMP Tue Apr 13 09:27:15 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

user@client1:~$ ssh -V
OpenSSH_7.2p2 Ubuntu-4ubuntu2.10, OpenSSL 1.0.2g  1 Mar 2016

user@client1:~$ ssh -vvvv user@server

debug1: Authentication succeeded (publickey).
Authenticated to server ([192.168.1.1]:22).
debug1: channel 0: new [client-session]
debug3: ssh_session2_open: channel_new: 0
debug2: channel 0: send open
debug3: send packet: type 90
debug1: Entering interactive session.
debug1: pledge: network
debug3: send packet: type 1
debug1: channel 0: free: client-session, nchannels 1
debug3: channel 0: status: The following connections are open:
  #0 client-session (t3 r-1 i0/0 o0/0 fd 5/6 cc -1)

Connection to server closed by remote host.
Connection to server closed.
Transferred: sent 2536, received 1592 bytes, in 0.0 seconds
Bytes per second: sent 20815567.4, received 13067185.8
debug1: Exit status -1

Клиент2

Клиент2 — PeppermintOS 11:

      user@client2:~$ uname -a
Linux client2 5.10.0-15-amd64 #1 SMP Debian 5.10.120-1 (2022-06-09) x86_64 GNU/Linux

user@client2:~$ ssh -V
OpenSSH_8.4p1 Debian-5, OpenSSL 1.1.1n  15 Mar 2022

user@client2 ssh -vvvv user@server

debug1: Authentication succeeded (publickey).
Authenticated to server ([192.168.1.1]:22).
debug1: channel 0: new [client-session]
debug3: ssh_session2_open: channel_new: 0
debug2: channel 0: send open
debug3: send packet: type 90
debug1: Entering interactive session.
debug1: pledge: network
...
...
debug2: channel 0: request shell confirm 1
debug3: send packet: type 98
debug2: channel_input_open_confirmation: channel 0: callback done
debug2: channel 0: open confirm rwindow 24576 rmax 32759
debug3: receive packet: type 99
debug2: channel_input_status_confirm: type 99 id 0
debug2: PTY allocation request accepted on channel 0
debug3: receive packet: type 99
debug2: channel_input_status_confirm: type 99 id 0
debug2: shell request accepted on channel 0
root@server:~# echo Logged in successfully
Logged in successfully

1 ответ

Ключом к вашей проблеме с клиентом 1 является ошибка.

Когда клиент 2 подключается, вы получаете предупреждение.

Клиент 1 не поддерживает ни один из алгоритмов подписи подписи, которые поддерживает Dropbear. Поэтому соединение не удается.

Клиент 1 имеет ssh-клиент версии 7.2p2, который очень старый. Обновление клиента требует сборки клиента из исходного кода.

Самое простое решение — переключиться на другой тип ключа SSH, например Ed25519. Другие варианты — обновить SSH-клиент, что очень сложно в Ubuntu Xenial, или включитьв Dropbear (не думаю, что это возможно).

Примечание. Клиент 2 использует ssh версии 8.4p1, которая намного лучше, но тоже устарела. В OpenSSH 8.8 поддержка ssh-rsa (RSA+SHA1) отключена. Замена — rsa-sha2-256 и rsa-sha2-512.

Учитывая ошибку клиента 1 и предупреждение клиента 2, оба из которых требуют обновления для правильного исправления клиента, я рекомендую переключиться на тип ключа SSH Ed25519.

Другие вопросы по тегам