OpenSSH не принимает ключи ECDSA

9

Я только что сгенерировал ключ ECDSA с ssh-keygen:

ssh-keygen -t ecdsa -b 521 

Затем я скопировал этот ключ на мой сервер:

cat .ssh/id_ecdsa.pub | ssh myserver "tee -a .ssh/authorized_keys"

Я подтвердил, что мой ключ находится в файле.

Однако, когда я пытаюсь подключиться, мое соединение отклоняется:

ssh -v -i .ssh/id_ecdsa myserver

Журналы:

OpenSSH_5.9p1 Debian-5ubuntu1.1, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to myserver [192.168.1.1] port 22.
debug1: Connection established.
debug1: identity file .ssh/id_ecdsa type 3
debug1: Checking blacklist file /usr/share/ssh/blacklist.ECDSA-521
debug1: Checking blacklist file /etc/ssh/blacklist.ECDSA-521
debug1: identity file .ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.1
debug1: match: OpenSSH_6.1 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1.1
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA 10:27:b8:78:2c:e1:e3:42:8e:e3:66:c4:cc:4e:f1:c0
debug1: Host 'myserver' is known and matches the RSA host key.
debug1: Found key in /home/naftuli/.ssh/known_hosts:73
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering ECDSA public key: .ssh/id_ecdsa
debug1: Authentications that can continue: publickey
debug1: No more authentication methods to try.
Permission denied (publickey).

Нашел это в логах сервера:

auth.info sshd[13874]: userauth_pubkey: unsupported public key algorithm: ecdsa-sha2-nistp521 [preauth]

И мой клиент, и сервер используют OpenSSH. Версия сервера OpenSSH - OpenSSH 6.1, версия OpenSSH моего клиента - OpenSSH 5.9.

Как я могу определить, какие ключевые алгоритмы поддерживаются моим сервером?

Нафтули Кей
источник
OpenWRT 12.09 Регулировка ориентации. Я могу перекомпилировать сервер OpenSSH, если это будет необходимо. Есть ли способ хотя бы перечислить поддерживаемые алгоритмы?
Нафтули Кей

Ответы:

7

Как и многие другие встроенные системы, OpenWrt использует dropbear в качестве ssh-сервера, а не более тяжелый OpenSSH, который обычно наблюдается в системах Linux. Более старые версии dropbear поддерживают только ключи RSA и DSA; поддержка ECDSA не была добавлена ​​до версии 2013.62 (которая была выпущена всего несколько дней назад).

Это должно скоро появиться в Прерывателе Барьера (ствол); но вы не увидите его в настройке отношения.

Майкл Хэмптон
источник
Я фактически установил и настроил OpenSSH на моем маршрутизаторе OpenWRT. Вот почему я удивлен, что это не работает.
Нафтули Кей
То есть: я не использую dropbear, и он был удален.
Нафтули Кей
В этом случае вы (1) сами по себе и (2) явно находитесь за пределами того, что я ожидал бы в профессиональной среде.
Майкл Хэмптон
Я так полагаю. Я свяжусь с OpenWRT и посмотрю, что я могу сделать. OpenSSH предоставляется в виде пакета в OpenWRT, поэтому мне интересно, почему это поставило меня в тупик?
Нафтули Кей
0

ecdsaподдерживается openssh-сервером версии 5.7 . Какую версию openssh-сервера вы используете? запустить, dpkg -l | grep openssh-server | awk '{print $3}' | cut -d: -f2чтобы найти версию.

slayedbylucifer
источник
0

Если ваша система - Red Hat Enterprise Linux 6.4 (или старше) или Fedora 19 (или старше), обратите внимание, что ECDSA была удалена оттуда. У меня нет подробной информации, почему это произошло (возможно, по юридическим причинам): https://www.mail-archive.com/legal@lists.fedoraproject.org/msg00755.html

lzap
источник
ECDSA находится в RHEL 6.5. как часть openssl 1.0.1, а также обратите внимание, что OP разъясняет, что они используют OpenWRT 12.09
user9517
Ах да, отредактировано.
января
3
Да, это были юридические причины. Тем не менее, до сих пор не каждый дистрибьютор использует криптографию Elliptic Curve благодаря патентам; RedHat включил только некоторые кривые, не ECC в целом, после тщательного юридического рассмотрения, но те, которые они включили, были под влиянием NIST (и, следовательно, NSA). Возможно, вы захотите остаться в стороне от ECC, даже если уменьшенная вычислительная мощность обманчиво хороша.
Мирабилось
0

Оставив это здесь, потому что это случилось со мной:

День 1: Настроив новый компьютер, я скопировал ключи - сначала мой - и смог нормально войти в систему.

День 2: Я не могу войти с помощью своего ключа ed25519. А? Я добавляю ключ RSA; оно работает. Я генерирую новый ключ ed25519, и он работает ... но мой старый нет. WTF?

Оказывается, после тестирования я установил свой ключ в корневой каталог .ssh / authorized_keys в качестве резервной копии ... и забыл исправить права доступа к этому файлу. Таким образом, openssh внес в черный список мой ключ, и я не могу войти в систему. Исправление перми в /root/.ssh/authorized_keys позволило мне войти в систему как мой пользователь .

pjz
источник