Я пытаюсь подключиться к Linode (с Ubuntu 12.04 LTS) с моей локальной машины (также с Ubuntu 12.04 LTS)
Я создал закрытый и открытый ключ на своем локальном компьютере и скопировал мой открытый ключ в файл author_keys моего Linode. Тем не менее, всякий раз, когда я пытаюсь подключиться к моему Linode, я получаю сообщение об ошибке Permission denied (publickey)
.
Это не проблема с тем, как ssh настроен на моем Linode, потому что я могу подключиться к ssh с моего компьютера Windows с помощью аутентификации по ключу.
В моей .ssh
директории на моей локальной машине Ubuntu, у меня есть id_rsa
и id_rsa.pub
файлы. Нужно ли мне создавать файл author_keys на моей локальной машине?
РЕДАКТИРОВАТЬ: Это то, что я получаю, когда я бегу 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).
источник
/var/log/auth.log
) 2) Как вы передали открытый ключ на сервер? Всегда используйте,ssh-copy-id
чтобы быть уверенным в разрешениях. Ваш домашний каталог,.ssh
каталог иauthorized_keys
файл имеют строгие требования к разрешениям. (см. справочную страницуsshd
(8) в~/.ssh/authorized_keys
). 3) Вы сгенерировали новую пару ключей в Ubuntu? В случае, если вы повторно использовали ключ из Windows - вам придется сначала преобразовать его в формат OpenSSH.ssh -vvv -i .ssh/id_rsa ....
(обратите внимание на путь к id_rsa!) - пожалуйста, замените - старый журнал только показывает, что «мы» не имели pubKey для отправки.Ответы:
PubkeyAuthentication
Настройте своего клиента
ssh-keygen
vim ~/.ssh/config
ssh-copy-id -i /path/to/key.pub SERVERNAME
Ваш конфигурационный файл из шага 2 должен иметь что-то похожее на следующее:
Вы можете добавить,
IdentitiesOnly yes
чтобы гарантироватьssh
использованиеIdentityFile
и отсутствие других ключевых файлов во время аутентификации, что может вызвать проблемы и не является хорошей практикой.Поиск неисправностей
tail -f /var/log/auth.log
(на сервере) и отслеживать ошибки при попытке входаIdentitiesOnly yes
ограничить аутентификацию, чтобы использовать один указанный ключ.источник
IdentityFile
строка в ~ / .ssh / config должна указывать на ключ PRIVATE.Иногда проблема связана с разрешениями и правами собственности. Например, если вы хотите войти в систему как root
/root
,.ssh
иauthorized_keys
должны принадлежать root. В противном случае sshd не сможет их прочитать и, следовательно, не сможет определить, авторизован ли пользователь для входа в систему.В вашем домашнем каталоге:
Что касается прав, пойти с 700 для
.ssh
и 600 дляauthorized_keys
источник
authorized_keys
файл за пределы моего зашифрованного домашнего каталога. При этом я случайно сменил владельца наroot:root
.Тебе не нужен
authorized_keys
твой клиент.Вы должны указать ssh-клиенту использовать ключ, который вы сгенерировали. Есть несколько способов сделать это. Просто для тестирования типа
ssh -vvv -i .ssh/id_rsa [youruser]@[yourLinode]
. Вам нужно будет указывать пароль каждый раз, когда вы хотите подключиться к серверу.Если это работает вы можете добавить ключ к
ssh-agent
сssh-add .ssh/id_rsa
(вы должны будете предоставить ключевую фразу только один раз для этого и он должен работать до тех пор , пока вы не выйдите / перезагрузка)источник
~/.ssh/id_rsa
. Кроме того, использование ключевого агента совершенно необязательно и, насколько я вижу, не имеет отношения к проблеме.Также проверьте значение
PasswordAuthentication
in/etc/ssh/sshd_config
иno
измените ли оно наyes
. Не забудьте перезапустить службу ssh после этого.источник
У меня была проблема с использованием неправильных ключей на клиенте. Я переименовал id_rsa и id_rsa.pub в другое. Вы можете либо переименовать их обратно в значения по умолчанию, либо когда вы вводите команду ssh, используйте это следующим образом
источник
Также убедитесь, что домашний каталог пользователя (на сервере) действительно принадлежит пользователю ssh'ing (был установлен как root: root в моем случае).
Должно было:
источник
Я столкнулся с этой проблемой недавно с моим веб-сервером.
Обычно я храню список авторизованных ключей на всех моих серверах
~/.ssh/authorized_keys2
. По моему опытуsshd
буду искать~/.ssh/authorized_keys
или~/.ssh/authorized_keys2
по умолчанию.В случае моего веб-сервера
/etc/ssh/sshd_config
эта строкавместо
Я применил последнее, перезапустил мой демон ssh и решил мою проблему входа в систему с помощью ssh, используя мой pubkey.
источник
Другая возможная причина может быть с
AllowedUsers
конфигурацией в/etc/ssh/sshd_conf
. ПРИМЕЧАНИЕ: список разделен пробелами (не запятыми), как я понял сложным путем.источник
Если ничего не помогло, убедитесь, что ваш логин принадлежит к группе ssh AllowedGroup. То есть ваши пользователи являются членами группы, показанной в следующей строке
/etc/ssh/sshd_config
на сервере:источник
В моем случае клиент является Ubuntu 14.04lts, сервер был Win 2012 сервер работает под управлением Cygwin. Я использовал 'ssh administrator @ xxxx', когда каталог сервера 2012 в cygwin был / home / Administrator. Так что это было чувствительно к регистру, когда я попробовал 'ssh Administrator @ xxxx' (обратите внимание на заглавную A на Administrator), тогда он работал нормально.
Сообщение об ошибке типа «пользователь не найден» привело бы меня к решению намного быстрее, чем «Отказано в доступе (publickey, клавиатурно-интерактивный)».
источник
У меня была такая же проблема при копировании открытого ключа обычного пользователя (например, johndoe) из системы cPanel Centos на сервер Ubuntu в AWS. Как предложено gertvdijk выше, я проверил
/var/log/auth.log
и достаточно уверен, что он сказалAuthentication refused: bad ownership or modes for directory /home/johndoe
. Оказывается, я неправильно указал 777,/home/johndoe
когда пытался установить/home/johndoe/public_html
в качестве виртуального хоста Document Root по умолчанию для apache2 (в этой задаче это тоже не требуется).Смотрите также ответы здесь и здесь
Сервер должен иметь только открытый ключ,
.ssh/authorized_keys
а клиент (компьютер, на котором вы работаете) должен иметь закрытый ключ (.pem или, если используется SFTP с Filezilla, .ppk)источник
Для тех пользователей Putty, как я, которые пришли в эту ветку, вы также можете получить эту ошибку, если забыли добавить пользователя user @ Ip!
Другие разрешения на файл ключа chmod до 600)
источник
Это то, что сработало для меня, исправление не мое, но я бы предпочел записать его здесь на случай, если у кого-то еще возникнет такая же проблема.
Оригинальный автор разместил его здесь: digital-ocean-public-access-key-denied
Замени это
С этим
Сохраните файл и перезапустите ssh
SSH должен работать сейчас, спрашивая пароль
источник
У меня была такая же проблема, как описано в вопросе. Результат выполнения
ssh -vvv -i id_rsa [youruser]@[yourLinode]
на клиентской машине был аналогичен описанному в вопросе. Я проверил все права доступа к файлам и каталогам, как советовали в других ответах, и они были правильными.Оказалось, что при копировании сгенерированного файла
id_rsa.pub
на компьютере сервера, как файл~username/.ssh/authorized_keys
, я случайно опущено словоssh-rsa
с самого начала. Добавление его решило проблему.источник
Работает и на Ubuntu 16.04.
Проблема в
sshd_config
файлеВот окончательное решение:
Войдите в систему как пользователь root для вашего сервера Ubuntu
Теперь перейдите к самому низу и измените значение с «нет» на «да».
Это должно выглядеть так:
Измените на нет, чтобы отключить пароли в виде открытого текста.
вступить в силу.
Теперь вы можете просто ввести ключ, используя следующую команду с вашего локального компьютера (он же ноутбук и т. Д.)
Так что откройте новое окно терминала и НЕ входите на сервер, просто введите следующую команду:
ssh-copy-id john @ serverIPAddress
(Замените Джона своим именем пользователя).
ты должен идти идти
источник
Некоторые люди задаются вопросом, возможно, настроили ssh-доступ, чтобы он был ключом только для учетной записи root, затем создали нового пользователя и не поняли, что им нужно
ssh root@your-ip-address
rsync --archive --chown=[user]:[user] ~/.ssh /home/[user]
logout
Тогда попробуйте еще раз. Замените [user] вашей новой учетной записью.
Это часто встречается при настройке нового сервера в DigitalOcean, когда вы использовали ssh-ключи при настройке.
https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-18-04
источник
В моем случае проблема была вызвана копированием
.ssh
каталога со старой машины. Оказывается, что моя более старая конфигурация SSH использовала ключи DSA, которые с тех пор устарели . Переход на новую пару ключей, на этот раз основанный на RSA, решил проблему для меня.источник
Следующий метод может работать, если вы можете получить доступ к машине A и машине B независимо (например, от машины C).
Если ssh-copy-id не работает, аутентификация по паролю может быть отключена. Ниже приведен обходной путь .
Наличие открытого ключа machineA в авторизованных ключах machineB (т. Е. ~ / .Ssh / authorized_keys) позволит вам выполнить ssh с machineA. Это также относится к scp.
После генерации пар ключей с помощью:
ssh-keygen
На машине А выполнить
cat ~/.ssh/id_rsa.pub
Образец вывода:
Скопируйте напечатанный ключ ( ⌘ Command+ Cили CRTL+ C), затем добавьте его в файл ~ / .ssh / authorized_keys на machineB .
Например, выполните на машине B следующее :
источник