У меня проблемы с использованием авторизованных ключей для входа по SSH на удаленный сервер. Сообщения об ошибках, которые я получаю, выглядят так:
OpenSSH_5.2p1, OpenSSL 0.9.8r 8 Feb 2011
debug1: Reading configuration data /etc/ssh_config
debug1: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to xx.xx.xx [xxx.xx.xx.xx] port 22.
debug1: Connection established.
debug3: Not a RSA1 key file /Users/bfenker/.ssh/id_rsa.
debug2: key_type_from_name: unknown key type '-----BEGIN'
debug3: key_read: missing keytype
debug3: key_read: missing whitespace
...
debug2: key_type_from_name: unknown key type '-----END'
debug3: key_read: missing keytype
debug1: identity file /Users/bfenker/.ssh/id_rsa type 1
ssh_exchange_identification: Connection closed by remote host
Другие вопросы на этом сайте опубликовали аналогичные вопросы, и решение обычно заключалось в двойной проверке всех разрешений на стороне клиента, что я и сделал:
drwxr-xr-x+ 23 bfenker staff 782 May 8 11:02 bfenker
drwx------ 8 bfenker staff 272 May 8 10:05 .ssh
-rw------- 1 bfenker staff 1675 May 8 09:51 id_rsa
-rw-r--r-- 1 bfenker staff 418 May 8 09:51 id_rsa.pub
-rw------- 1 bfenker staff 999 May 8 09:46 identity
-rw-r--r-- 1 bfenker staff 663 May 8 09:46 identity.pub
-rw-r--r-- 1 bfenker staff 416 May 8 09:06 known_hosts
Я могу использовать авторизованный ключ для SSH на другой сервер и с этого сервера SSH на сервер, который я хочу. Это обходной путь, который я пытаюсь исправить, но я думаю, что он также показывает, что и мой клиент, и сервер настроены нормально.
Обратите внимание, что когда я успешно подключаюсь по SSH к другому серверу, я получаю те же сообщения об ошибках, но кажется, что восстановление начинается со строк:
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
Кто-нибудь знает, почему это работает в некоторых случаях, но не в том случае, если я хочу? Любые другие предложения будут высоко оценены!
/etc/hosts.allow
и/etc/hosts.deny
файлы?Ответы:
Necroquestion! Исходя из того, что вы можете использовать этот ключ для входа на другой сервер, @ michael-hampton находится на правильном пути: на конечном сервере есть что-то (firewall / tcp wrappers / sshd config), которое запрещает доступ. Все эти разговоры о неправильных форматах ключей - это красная сельдь, основанная на неправильной интерпретации отладочной информации. Линия
указывает, что ssh смог понять ключ.
источник
Ваш ключ SSH хранится в неправильном формате. OpenSSH использует ключи, которые помещаются в одну строку. Вам нужно
ssh-keygen
с-i
и-m
варианты смman ssh-keygen
. Вероятно, один из них:Используйте вывод как новый ключевой файл (
ssh-keygen ... >newkeyfile
).Изменить 1:
Пожалуйста, обратите внимание: «Эта опция будет читать незашифрованный файл закрытого (или открытого) ключа»
Поэтому, вероятно, файл должен быть изменен на файл без ключевой фразы программой, которая понимает этот формат.
источник
-m
опций, и попытка без него-m
выдает мне эту ошибку:buffer_get_string_ret: bad string length 813827235
key_from_blob: can't read key type
decode blob failed.
putty
Windows. Но очень приятно, чтоbuffer_get_string_ret: bad string length 813827235
. Первая строка моего ключевого файла,-----BEGIN RSA PRIVATE KEY-----
и начиная со следующей строки, это длинный список буквенно-цифровых символов. @ Hauke LagingЯ чувствую, что ответы здесь не очень ясны. Ответ Марка Вагнера действительно охватывает это, но не полностью объясняет ситуацию.
Строки в выходных данных имеют префикс с уровнями отладки, что также указывает на их значимость: но более низкие числа более значимы. Материал
debug3:
гораздо менее важен, чемdebug1:
Когда файл ключа считывается, ssh сначала пытается проанализировать его как устаревший ключ RSA (теперь называется «RSA1»), эти ключи начинаются с
SSH PRIVATE KEY FILE FORMAT
номера версии. Все новые ключи RSA запускаются-----BEGIN RSA PRIVATE KEY-----
. Вот попытка входа, гдеidentity
старый ключ стиля RSA1 иid_rsa
новый стиль.На данный момент он определил типы ключей в файлах
identity
какtype 0
иid_rsa
какtype 1
. Другие файлы, которые он проверяет, не существуют и, таким образом, существуютtype -1
.Поскольку это протокол 2, ключ RSA протокола 1
identity
будет игнорироваться во время обмена ключами.Здесь это напоминает нам о ключевых файлах, которые он хочет использовать. Не уверен, почему он не отклонил отсутствующие файлы, только файл протокола 1, но ...
И вот он предлагает
id_rsa
ключ, и это принято.Итак, короче говоря, проблема в названии вопроса - красная сельдь, возникающая из-за того, что ssh пытается несколькими способами проанализировать найденные ключи, а не настоящая проблема с ключом.
источник
Сначала вы должны проверить ваши логи sshd. т.е.
В зависимости от дистрибутива unix файл с журналом безопасности может отличаться. Но когда вы обнаружите, если это, следует указать причину, по которой вы не можете войти.
источник
Я также столкнулся с этой проблемой недавно. В моем случае все разрешения были правильными, включая .ssh, файл rsa, домашний каталог и все, что связано с пользователем. Проблема заключалась в том, что у меня был ранее сгенерированный открытый ключ в .ssh, который не соответствовал закрытому ключу, который я использовал для входа в систему. Удаление открытого ключа из .ssh решило проблему.
Я использовал ssh-keygen для создания каталога .ssh, что привело к этому ключу публикации и, следовательно, к проблеме.
источник
У меня была такая же проблема на моем MacBook Pro с MacOS 10.7.5. В моих ключах не было ничего плохого, просто они зашифрованы (с парольной фразой, как вы и должны делать) и не были правильно зашифрованы с помощью ssh. Кажется, что
ssh-agent
есть проблемы.В соответствии с этой статье , попробуйте это:
Положил
/usr/bin/ssh-agent
свои элементы входа в систему (Системные настройки -> Пользователи и группы -> выберите пользователя -> Элементы входа в систему). К нему очень трудно перейти/usr/bin
в диалоговом окне, поэтому в статье предлагается сделать ссылку в вашем домашнем каталоге (ln -s /usr/bin/ssh-agent
), которую вы можете удалить, поместив ее в элементы входа в систему.Выйти из Terminal.app
Перезагрузите машину.
Откройте терминал и повторите команду ssh.
У меня сработало (по крайней мере, так уже было).
источник