Почему я получаю «отказ от публикации (публикация)» при попытке SSH от локального Ubuntu до сервера Amazon EC2?

У меня есть экземпляр приложения, запущенного в облаке на экземпляре Amazon EC2, и мне нужно подключить его из моего локального Ubuntu. Он отлично работает на одном из местных ubuntu и ноутбуков. Я получил сообщение «Permission denied (publickey)» при попытке доступа к SSH к EC2 на другом локальном Ubuntu. Это так странно для меня.

Я думаю, что некоторые проблемы с настройками безопасности на Amazon EC2, которые имеют ограниченный доступ к IP-адресам для одного экземпляра или сертификата, могут нуждаться в регенерации.

Кто-нибудь знает решение?

208 голосов | спросил Vorleak Chy 13 J000000Monday09 2009, 11:38:23

15 ответов


139

Первое, что нужно сделать в этой ситуации, - это использовать параметр -v для ssh, чтобы вы могли видеть, какие типы проверки подлинности проверяются и каков результат. , Помогает ли это просветить ситуацию?

В своем обновлении к вашему вопросу вы указываете «на другом локальном Ubuntu». Вы скопировали секретный ключ ssh на другой компьютер?

ответил Greg Hewgill 13 J000000Monday09 2009, 11:44:01
73

Как не было явно указано, sshd по умолчанию очень строг в отношении разрешений для файлов authorized_keys. Таким образом, если authorized_keys доступен для записи для кого-либо, кроме пользователя, или может быть доступен для записи кем-либо, кроме пользователя, он откажется authenticate (если sshd не настроен с помощью StrictModes no)

То, что я подразумеваю под «можно сделать доступным для записи», заключается в том, что если какой-либо из родительских каталогов доступен для записи для кого-либо, кроме пользователя, пользователи, которым разрешено изменять эти каталоги, могут начать изменять разрешения таким образом, чтобы они могли изменять /заменять authorized_keys.

Это не будет отображаться с помощью ssh -v, оно будет отображаться в журналах, испускаемых sshd (обычно помещается в /var/log/secure или /var/log/auth.log, зависит от конфигурации distro и /var/log/auth.log).

От человека sshd (8):

syslogd
ответил Kjetil Joergensen 5 Jpm1000000pmWed, 05 Jan 2011 17:38:40 +030011 2011, 17:38:40
37

Я получил эту ошибку, потому что забыл добавить опцию -l. Мое локальное имя пользователя не было таким же, как в удаленной системе.

Это не отвечает на ваш вопрос, но я нашел здесь ответ на мою проблему.

ответил pkmk 2 AMpFri, 02 Apr 2010 01:51:49 +040051Friday 2010, 01:51:49
19

Я получил это сообщение в новом экземпляре, основанном на AMI Ubuntu. Я использовал параметр -i для предоставления PEM, но он все еще показывал «Permission denied (publickey)».

Моя проблема заключалась в том, что я не использовал правильного пользователя. Запустив ssh с помощью ubuntu @ ec2 ... он работал как обычно.

ответил 17 32010vEurope/Moscow11bEurope/MoscowWed, 17 Nov 2010 19:29:56 +0300 2010, 19:29:56
16

Что-то, что легче читать, чем ssh -i (на мой взгляд, конечно), это tail -f /var/log/auth.log. Это должно выполняться на сервере, к которому вы пытаетесь подключиться, при попытке подключения. Он будет показывать ошибки в виде обычного текста.

Это помогло мне решить мою проблему:

  

Пользователь [имя пользователя] из xx.yy.com не разрешен, потому что ни одна из групп пользователя не указана в AllowGroups

ответил Znarkus 1 FebruaryEurope/MoscowbTue, 01 Feb 2011 17:07:18 +0300000000pmTue, 01 Feb 2011 17:07:18 +030011 2011, 17:07:18
10

Проверьте файл /etc /ssh /sshd_config . Там найдите строку, в которой говорится

PasswordAuthentication no

Эта строка должна быть изменена, чтобы сказать «да» вместо «нет». Кроме того, перезапустите сервер sshd.

sudo /etc/init.d/ssh restart
ответил Sudipta Chatterjee 10 FriEurope/Moscow2010-12-10T09:15:33+03:00Europe/Moscow12bEurope/MoscowFri, 10 Dec 2010 09:15:33 +0300 2010, 09:15:33
6

Возможно, это не относится к текущему плакату, но может помочь другим, кто находит это при поиске ответов на подобные ситуации. Вместо того, чтобы позволить Amazon генерировать ssh keypair, я рекомендую загрузить свой собственный стандартный стандартный ssh-ключ для Amazon и указать, что при запуске экземпляра EC2.

Это позволяет отбросить синтаксис типа «-i» в ssh, использовать rsync со стандартными параметрами, а также использовать один и тот же ключ ssh во всех регионах EC2.

Я написал статью об этом процессе:

  

Загрузка личных ключей ssh ​​в Amazon EC2
http://alestic.com /2010/10 /EC2-SSH-ключи

ответил Eric Hammond 30 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 30 Sep 2011 01:15:16 +0400 2011, 01:15:16
5

Странно, моя проблема оказалась в том, что сервер был перезапущен, и было выпущено новое DNS-имя. Я использовал старое DNS-имя. Я знаю, что это звучит глупо, но мне потребовалось некоторое время, чтобы понять это.

ответил Patrick Collins 9 AM00000010000004231 2011, 01:00:42
1

Ответ Грега объясняет, как устранить проблему лучше, однако фактическая проблема заключается в том, что у вас есть ключ ssh, установленный на одной стороне транзакции (клиент), которая пытается аутентифицировать открытый ключ, а не проверку на основе пароля. Поскольку у вас нет соответствующего открытого ключа в экземпляре EC2, это не сработает.

ответил Cian 13 J000000Monday09 2009, 12:11:40
1

У меня была такая же проблема, и после проверки множества решений, которые не работали, я открыл порт SSH на брандмауэре моего маршрутизатора (панель управления брандмауэром моего маршрутизатора - беспорядок, так что трудно сказать, что происходит). Во всяком случае, это зафиксировало это:)

Super чертовски раздражает, что ошибка, которую вы получаете, это Permission Denied, подразумевая, что было какое-то соединение, grr.

ответил chichilatte 29 J0000006Europe/Moscow 2011, 22:16:53
1

У меня была такая же проблема, хотя я предположительно следовал всем шагам в том числе

$ ec2-authorize default -p 22

Однако, я начал свой экземпляр в регионе us-west-1. Таким образом, указанная команда должна также укажите это.

$ ec2-authorize default -p 22 --region us-west-1

После этой команды я смог выполнить ssh в экземпляр. Я провел немного раньше Я понял проблему и надеюсь, что эта должность поможет другим.

ответил Ajit Verma 16 MaramWed, 16 Mar 2011 01:45:42 +03002011-03-16T01:45:42+03:0001 2011, 01:45:42
1

Если вы пытаетесь подключиться к телефону CyanogenMod с Dropbear, вы должны запустить следующие строки, чтобы убедиться, что все права разрешены:

chmod 600 /data/dropbear/.ssh/authorized_keys

или

chmod 700 /data/dropbear/.ssh/authorized_keys # In case of MacOS X 10.6-10.8

и

chmod 755 /data/dropbear/ /data/dropbear/.ssh

Это исправлено для меня, иначе ничего не может соединить.

ответил Naftuli Kay 16 FebruaryEurope/MoscowbWed, 16 Feb 2011 21:50:21 +0300000000pmWed, 16 Feb 2011 21:50:21 +030011 2011, 21:50:21
1

Если вы используете CentOS 5, вы можете установить StrictModes no в /etc/ssh/sshd_config. Я использую NIS /NFS для совместного использования /домашнего каталога, и я правильно установил все разрешения, но всегда запрашивал у меня пароль. После того, как я установил StrictModes no, проблема исчезла!

ответил uichin 10 J000000Sunday11 2011, 08:58:22
0

Это редкий случай, но если у вас включен selinux и вы используете nfs для каталога с авторизованными ключами (например, общие домашние каталоги), вам нужно либо отключить selinux (не рекомендуется по соображениям безопасности, но вы можете временно отключите его, чтобы увидеть, вызывает ли это проблему) или разрешить selinux использовать домашние каталоги nfs. Я не знаю подробностей, но это сработало для меня setsebool -P use_nfs_home_dirs 1

ответил Reese 5 Jpm1000000pmTue, 05 Jan 2016 22:45:39 +030016 2016, 22:45:39
0

Я только что испытал ту же проблему после непреднамеренного добавления разрешений на запись в домашнюю директорию пользователей.

Я обнаружил, что это было причиной, запустив на компьютере tail -f /var/log/secure и увидев ошибку Authentication refused: bad ownership or modes for directory /home/<username>

ответил Jacob Tomlinson 15 Jpm1000000pmFri, 15 Jan 2016 12:04:52 +030016 2016, 12:04:52

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132