SSH Разрешение отклонено (публикация)

59

Я попытался найти предыдущие вопросы для ответов на мой вопрос, но все ответы, которые были предложены ранее, не сработали для меня.

Я пытаюсь подключиться к linode (работает ubuntu 12.04 LTS) с моей локальной машины (также работает ubnutu 12.04 LTS)

Я создал закрытый и открытый ключ на своей локальной машине и скопировал свой открытый ключ в файл authorized_keys моего linode. Однако всякий раз, когда я пытаюсь использовать ssh для моего linode, я получаю сообщение об ошибке «Permission denied (publickey).

Это не проблема с тем, как ssh настроен на моем linode, потому что я могу ssh к нему с моей машины Windows с помощью проверки подлинности ключа.

В моем каталоге .ssh на моем локальном компьютере ubuntu у меня есть файлы id_rsa и id_rsa.pub. Мне нужно создать файл authorized_keys на моем локальном компьютере?

EDIT: Это то, что я получаю, когда запускаю ssh -vvv -i id_rsa [youruser] @ [yourLinode]

debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
Permission denied (publickey).
    
задан Pattle 22.06.2013 в 23:20
источник

15 ответов

53

PubkeyAuthentication

Настройте свой клиент

  1. Создайте свой ключ
    • ssh-keygen
  2. Настройте ssh для использования ключа
    • vim ~/.ssh/config
  3. Скопируйте свой ключ на свой сервер
    • ssh-copy-id -i /path/to/key.pub SERVERNAME

Ваш конфигурационный файл с шаг 2 должен иметь что-то похожее на следующее:

Host SERVERNAME
Hostname ip-or-domain-of-server
User USERNAME
PubKeyAuthentication yes
IdentityFile ./path/to/key

Устранение неполадок

  1. использовать опцию -vvv
  2. Убедитесь, что у сервера есть PUBLIC-ключ (.pub).
  3. Убедитесь, что IdentityFile указывает на ваш ключ PRIVATE.
  4. Убедитесь, что ваш .ssh-каталог имеет 700, а ваши файлы - 700 разрешений (rwx ------).
  5. tail -f /var/log/auth.log (на сервере) и отслеживать ошибки при попытке входа в систему.
ответ дан earthmeLon 23.06.2013 в 23:04
31

Иногда проблема возникает из-за прав доступа и прав собственности. Например, если вы хотите войти в систему с правами root, /root , .ssh и authorized_keys должны принадлежать root. В противном случае sshd не сможет их прочитать и, следовательно, не сможет определить, разрешено ли пользователю войти в систему.

В вашем домашнем каталоге:

chown -R your_user:your_user .ssh

Что касается прав, перейдите с 700 для .ssh и 600 для authorized_keys

chmod 700 .ssh
chmod 600 .ssh/authorized_keys
    
ответ дан Buzut 15.03.2016 в 12:50
6

Вам не нужно authorized_keys на вашем клиенте.

Вы должны сообщить ssh-клиенту, что на самом деле используете созданный вами ключ. Существует несколько способов сделать это. Просто для тестирования типа ssh -vvv -i .ssh/id_rsa [youruser]@[yourLinode] . Вы должны будете предоставить свою кодовую фразу каждый раз, когда хотите подключиться к серверу.

Если это сработало, вы можете добавить ключ к ssh-agent с ssh-add .ssh/id_rsa (вам нужно будет предоставить кодовую фразу только один раз для этого, и он должен работать до тех пор, пока вы не выходите из системы / перезагружаетесь)

    
ответ дан guntbert 22.06.2013 в 23:42
5

Также убедитесь, что домашний каталог пользователя (на сервере) на самом деле принадлежит пользователю ssh'ing (в моем случае был установлен root: root).

Должно быть:

sudo chown username:username /home/username;
    
ответ дан canoodle 20.04.2015 в 21:07
4

Также проверьте значение PasswordAuthentication в /etc/ssh/sshd_config , и если оно no изменит его на yes . Не забудьте перезапустить службу ssh после этого.

    
ответ дан iman 09.02.2017 в 11:11
3

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

ssh -i ~/.ssh/private_key [email protected]
    
ответ дан Todd 04.02.2017 в 23:28
2

Недавно я столкнулся с этой проблемой с моим веб-сервером.

Я обычно храню список авторизованных ключей на всех моих серверах в ~/.ssh/authorized_keys2 . По моему опыту, sshd по умолчанию будет искать ~/.ssh/authorized_keys или ~/.ssh/authorized_keys2 .

В случае моего веб-сервера /etc/ssh/sshd_config имела эту строку

AuthorizedKeysFile    %h/.ssh/authorized_keys

вместо

AuthorizedKeysFile    %h/.ssh/authorized_keys2

Я применил последнее, перезапустил мой демон ssh и решил проблему с входом ssh с помощью моей панели.

    
ответ дан Justin C 24.11.2013 в 06:55
1

В моем случае клиент ubuntu 14.04lts, сервер выиграл сервер 2012, на котором запущен cygwin. Я использовал «ssh [email protected]», когда каталог сервера 2012 года в cygwin был / home / Administrator. Так что это было чувствительно к регистру, когда я попробовал «ssh [email protected]» (обратите внимание на капитал A на Администраторе), тогда он работал нормально.

Сообщение об ошибке, подобное «user not found», привело бы меня к решению намного быстрее, чем «Permission denied (publickey, keyboard-interactive)».

    
ответ дан Kent 12.07.2016 в 04:41
1

У меня была такая же проблема при копировании открытого ключа обычного пользователя (например, johndoe) из системы cPanel Centos на сервер Ubuntu на AWS. Как было предложено gertvdijk выше, я проверил /var/log/auth.log и, конечно же, сказал, что Authentication refused: bad ownership or modes for directory /home/johndoe . Оказывается, я ошибочно использовал 777'ed /home/johndoe при попытке установить /home/johndoe/public_html в качестве стандартного корня документа Virtualhost для Apache2 (это тоже не нужно для этой задачи).

См. также ответы здесь и here

Серверу должен быть только открытый ключ в .ssh/authorized_keys , а клиент (компьютер, на котором вы работаете) должен иметь закрытый ключ (.pem или использовать SFTP с Filezilla, .ppk)

    
ответ дан site80443 07.01.2017 в 22:54
1

Для тех пользователей Putty, как я, которые пришли в эту ветку, вы также можете получить эту ошибку, если забыли добавить пользователя user @ Ip!

Другие - это разрешение на файл ключа chmod до 600)

ssh 1.1.1.1 -i /path/to/.pem file 
Permission denied (publickey).'

ssh [email protected] -i /path/to/.pem file 
    
ответ дан Alex Punnen 28.03.2017 в 13:06
1

У меня была та же проблема, что и в вопросе. Результат выполнения ssh -vvv -i id_rsa [youruser]@[yourLinode] на клиентской машине был аналогичен результату, описанному в вопросе. Я проверил все разрешения файлов и каталогов, как было сказано в других ответах, и они были правильными.

Оказалось, что при копировании сгенерированного файла id_rsa.pub на серверный компьютер, как файл ~username/.ssh/authorized_keys , я случайно пропустил слово ssh-rsa с самого начала. Добавление решения проблема.

    
ответ дан Teemu Leisti 16.05.2017 в 11:41
0

Если все остальное не удалось, проверьте, принадлежит ли ваш пользователь входа в разрешенную группу ssh. То есть ваши пользователи являются членами группы, указанной в следующей строке в /etc/ssh/sshd_config на сервере:

AllowGroups ssh #Here only users of 'ssh' group can login
    
ответ дан biocyberman 17.10.2014 в 08:21
0

Другая возможная причина может заключаться в конфигурации AllowedUsers в /etc/ssh/sshd_conf . ПРИМЕЧАНИЕ: список пробел ограничен (не разделен запятой), поскольку я усвоил трудный путь.

AllowUsers user1 user2 user3
    
ответ дан cmbind55 03.09.2015 в 19:07
0

Это то, что сработало для меня, исправление не мое, но я бы предпочел записать его здесь, если у кого-то другая проблема.

Оригинальный автор разместил его здесь: digital-ocean -публичный доступ ключ-отказано

sudo nano /etc/ssh/sshd_config

Замените это

UsePAM yes
IgnoreUserKnownHosts no
PasswordAuthentication no

С помощью этого

UsePAM no
IgnoreUserKnownHosts no
PasswordAuthentication yes

Сохраните файл и перезапустите ssh

reload ssh

ssh теперь должен работать с запросом пароля

    
ответ дан mau 08.04.2017 в 03:25
0

В моем случае проблема была вызвана копированием каталога .ssh с более старой машины. Оказывается, в моей старой конфигурации SSH использовались ключи DSA, которые с тех пор были устарели . Переключение на новую пару ключей, на этот раз RSA, решило проблему для меня.

    
ответ дан Glutanimate 01.10.2017 в 22:16