Я работаю с URL, который я нашел здесь:
Мой ssh-клиент - Ubuntu 64 bit 11.10 desktop, а мой сервер - Centos 6.2 64 bit. Я следовал инструкциям. Я все еще получаю запрос пароля на SSH.
Я не уверен, что делать дальше.
Я работаю с URL, который я нашел здесь:
Мой ssh-клиент - Ubuntu 64 bit 11.10 desktop, а мой сервер - Centos 6.2 64 bit. Я следовал инструкциям. Я все еще получаю запрос пароля на SSH.
Я не уверен, что делать дальше.
chmod 700
/var/log/auth.log
вы узнаете, почему не удается войти в систему./var/log/secure
.0700
был ответом, но когда я сделалssh -v
на стороне клиента, это не указывало на ошибку, связанную с тем, почему ключ не был принят, он просто сказал, что пытается следующий пароль, хотя мой клиент отправил открытый ключ. Как они ожидают, что мы диагностируем проблемы без информации об ошибках с сервера?Ответы:
Убедитесь, что разрешения для
~/.ssh
каталога и его содержимого являются правильными. Когда я впервые настроил свою аутентификацию по ssh-ключу, у меня не было~/.ssh
должным образом настроенной папки, и она кричала на меня.~
, ваш~/.ssh
каталог и~/.ssh/authorized_keys
файл на удаленной машине должны быть доступны для записи только вам:rwx------
иrwxr-xr-x
все в порядке, ноrwxrwx---
это нехорошо¹, даже если вы являетесь единственным пользователем в вашей группе (если вы предпочитаете числовые режимы:700
или755
нет775
) ,Если
~/.ssh
илиauthorized_keys
является символической ссылкой, проверяется канонический путь (с расширенными символическими ссылками) .~/.ssh/authorized_keys
файл (на удаленном компьютере) должен быть доступен для чтения (не менее 400), но он также должен быть доступен для записи (600), если вы добавите к нему дополнительные ключи.rw-------
, то есть600
.restorecon -R -v ~/.ssh
(см., Например, ошибку Ubuntu 965663 и отчет об ошибке Debian # 658675 ; это исправлено в CentOS 6 ).Cept За исключением некоторых дистрибутивов (Debian и производных), которые исправили код для обеспечения возможности записи в группе, если вы являетесь единственным пользователем в вашей группе.
источник
/home/USER
должно быть700
или755
ssh -v user@host
,chmod -R 700 ~/.ssh
работал для меня, чтобы встретить ограничения этого ответа (RHEL 7)Если у вас есть root-доступ к серверу, простой способ решить такие проблемы - запустить sshd в режиме отладки, выполнив что-то вроде
/usr/sbin/sshd -d -p 2222
на сервере (требуется полный путь к исполняемому файлу sshd,which sshd
может помочь), а затем подключиться с клиентаssh -p 2222 user@host
. Это заставит демон SSH оставаться на переднем плане и отображать отладочную информацию о каждом соединении. Искать что-то вродеЕсли невозможно использовать альтернативный порт, вы можете временно остановить демон SSH и заменить его на один в режиме отладки. Остановка демона SSH не уничтожает существующие соединения, поэтому это можно сделать через удаленный терминал, но это несколько рискованно - если соединение каким-то образом прерывается в то время, когда замена отладки не выполняется, вы заблокированы на машине пока вы не можете перезапустить его. Требуемые команды:
(В зависимости от вашего дистрибутива Linux первая / последняя строка может быть
systemctl stop sshd.service
/systemctl start sshd.service
вместо.)источник
sshd -d
, но терпит неудачу , когда я на самом деле работатьservice sshd start
. Я уверен, что это просто, но я не гуру Linux. есть идеи?Ваш домашний каталог зашифрован? Если это так, для вашего первого сеанса SSH вы должны будете предоставить пароль. Второй сеанс SSH на том же сервере работает с ключом авторизации. Если это так, вы можете переместить ваш
authorized_keys
в незашифрованный каталог и изменить путь в~/.ssh/config
.Я закончил тем, что создал
/etc/ssh/username
папку с именем пользователя с правильными правами доступа и поместилauthorized_keys
туда файл. Затем изменил директиву AuthorizedKeysFile/etc/ssh/config
на:Это позволяет нескольким пользователям иметь доступ по SSH без ущерба для прав доступа.
источник
После копирования ключей на удаленный компьютер и помещения их внутрь
authorized_keys
вы должны сделать что-то вроде этого:источник
ssh-add -L
Просто попробуйте следующие команды
ssh-keygen
Нажмите клавишу Enter, пока не получите приглашение
ssh-copy-id -i root@ip_address
(Однажды будет запрошен пароль от хост-системы)
ssh root@ip_address
Теперь вы сможете войти без пароля
источник
Я столкнулся с проблемами, когда домашний каталог на удаленном компьютере не имеет правильных привилегий. В моем случае пользователь изменил домашний каталог на 777 для локального доступа в команде. Аппарат больше не может подключаться с помощью ключей ssh. Я изменил разрешение на 744, и оно снова заработало.
источник
SELinux в RedHat / CentOS 6 имеет проблему с аутентификацией pubkey , вероятно, когда некоторые файлы создаются selinux неправильно устанавливает свои ACL.
Чтобы вручную исправить списки управления доступом SElinux для пользователя root:
источник
ssh root@mymachine
войти в CentOS6mymachine
, но у меня есть пользователь с более низким уровнем привилегий, который я бы предпочел использовать, ноssh regularUser@mymachine
все равно запрашивает у меня пароль. мысли?Мы столкнулись с той же проблемой, и мы следовали за шагами в ответе. Но это все еще не работает для нас. Наша проблема заключалась в том, что вход в систему работал с одного клиента, а не с другого (каталог .ssh был смонтирован по NFS, и оба клиента использовали одинаковые ключи).
Таким образом, мы должны были пойти еще дальше. Запустив команду ssh в подробном режиме, вы получите много информации.
Мы обнаружили, что ключ по умолчанию (id_rsa) не был принят, и вместо этого клиент ssh предложил ключ, соответствующий имени хоста клиента:
Очевидно, что это не будет работать от любого другого клиента.
Таким образом, решение в нашем случае состояло в том, чтобы переключить ключ rsa по умолчанию на тот, который содержал user @ myclient. Когда ключ используется по умолчанию, проверка имени клиента не производится.
Затем мы столкнулись с другой проблемой, после переключения. Очевидно, что ключи кэшируются в локальном агенте ssh, и мы получили следующую ошибку в журнале отладки:
Это было решено перезагрузкой ключей к агенту ssh:
источник
Это будет конфигурация пропуска SSH на стороне сервера. Файл sshd_config на стороне сервера должен быть отредактирован. Расположен в
/etc/ssh/sshd_config
. В этом файле измените переменные«да» - «нет» для ChallengeResponseAuthentication, PasswordAuthentication, UsePAM
от «нет» до «да» для PubkeyAuthentication
Основано на http://kaotickreation.com/2008/05/21/disable-ssh-password-authentication-for-added-security/
источник
vi /etc/ssh/sshd_config
, добавьте пользователя xxx в список AllowUsers,service sshd restart
*** ОСТОРОЖНО, перезапуск службы sshd с ошибкой sshd_config может заблокировать вас из коробки !? ***. Это сработало.Убедитесь, что
AuthorizedKeysFile
указывает на правильное местоположение, используйте%u
в качестве заполнителя для имени пользователя:Возможно, вам просто нужно раскомментировать строку:
AuthorizedKeysFile .ssh / authorized_keys
Помните, что вы должны перезагрузить службу ssh, чтобы изменения произошли:
источник
Два комментария: это перезапишет оригинальный файл. Я просто скопировал сгенерированный открытый ключ и сделал бы что-то вроде:
Это добавит ключ, который вы хотите использовать, к уже существующему списку ключей. Кроме того, некоторые системы используют файл
authorized_keys2
, поэтому рекомендуется создать жесткую ссылку, указывающую междуauthorized_keys
иauthorized_keys2
, на всякий случай.источник
Мое решение состояло в том, что учетная запись была заблокирована. Сообщение найдено в / var / log / secure: пользователь не разрешен, поскольку учетная запись заблокирована. Решение: дайте пользователю новый пароль.
источник
/etc/shadow
для этого пользователя с!
на*
. После этого аутентификация по паролю все еще невозможна, но пользователь больше не заблокирован.Я столкнулся с подобной проблемой и следовал за шагами, используя режим отладки.
Это показало следующий результат
Это было действительно запутанно
Он показал, что корневой каталог имеет разрешения для каждого. Мы изменили это так, чтобы у других не было разрешений.
Ключ аутентификации начал работать.
источник
rsync -av ./root/ root@THE_HOST:/root
команду на загрузку некоторых файлов из моего локального рабочего каталога, затем эта проблема возникает (на самом деле, сначала я не заметил этого. После того, как задания cron на других хостах перестали работать на следующее утро, я начал копать причину) , Командаrsync -av ./root/ root@THE_HOST:/root
изменила владельца и права доступа к/root
каталогу удаленного хоста. Исправлено разрешение, проблема решена.Failed publickey for root from 135.250.24.32 port 54553 ssh2
Я получаю то же сообщение и выдаю сообщение, когда забыл добавить pubkey к хостуauthorized_keys
. Добавляя этот комментарий, как и в моем случае, я обычно осознаю свою ошибку после того, как проверил отладку и все разрешения, а также файлы конфигурации #: o <В файле / etc / selinux / config изменение SELINUX на отключение принудительно заставляет ssh работать без пароля успешно.
Раньше я мог сделать это по-одному. Теперь с обеих сторон я могу делать ssh без пароля.
источник
Одна вещь, которую я ошибся, это владение моим домашним каталогом в системе сервера. Система сервера была установлена по умолчанию: по умолчанию, поэтому я:
И это сработало. Другой дешевый обходной путь - отключить StrictModes: StirctModes no. в sshd_config. Это по крайней мере скажет вам, если обмен ключами и протоколы соединения хороши. Тогда вы можете пойти на охоту за плохими разрешениями.
источник
Для меня решение было противоположным Войтеку Жепале : я не заметил, что я все еще использую
authorized_keys2
, что является устаревшим . Моя настройка ssh перестала работать в какой-то момент, предположительно, когда сервер был обновлен. Переименование.ssh/authorized_keys2
как.ssh/authorized_keys
исправило проблему.D'о!
источник
В прошлом я сталкивался с некоторыми учебными пособиями, в которых описывается, как выполнить настройку ssh без пароля, но некоторые, к сожалению, ошибочны.
Давайте начнем все сначала и проверим каждый шаг:
ssh-keygen -t rsa
Открытый и закрытый ключ (
id_rsa.pub
иid_rsa
) будет автоматически сохранен в~/.ssh/
каталоге.Настройка будет проще, если вы используете пустую фразу-пароль. Если вы не хотите этого делать, продолжайте следовать этому руководству, но также проверьте пункт ниже.
ssh-copy-id user@server
открытый ключ клиента будет скопирован в расположение сервера
~/.ssh/authorized_keys
.ssh user@server
Теперь, если после описанных 3 шагов он все еще не работает, давайте попробуем следующее:
~/ssh
права доступа к папке на компьютере клиента и сервера ./etc/ssh/sshd_config
в сервере , чтобы обеспечитьRSAAuthentication
,PubkeyAuthentication
иUsePAM
варианты не отключены, они могут быть включены по умолчанию сyes
.ssh-agent
иssh-add
добиться беспарольной связи в сеансе./var/log/auth.log
на сервере, чтобы выяснить, почему проверка подлинности ключа вообще пропускается.источник
У меня была точно такая же проблема с подключением PuTTY к машине с Ubuntu 16.04. Это было загадочно, потому что программа PuTTY pscp работала нормально с тем же ключом (и тот же ключ работал в PuTTY для подключения к другому хосту).
Благодаря ценному комментарию @UtahJarhead я проверил свой файл /var/log/auth.log и обнаружил следующее:
Оказывается, что более новые версии OpenSSH по умолчанию не принимают ключи DSA. Как только я переключился с DSA на ключ RSA, все заработало нормально.
Другой подход: в этом вопросе обсуждается, как настроить сервер SSH для приема ключей DSA: https://superuser.com/questions/1016989/ssh-dsa-keys-no-longer-work-for-password-less-authentication?lq = 1
источник
Эти шаги должны помочь вам. Я использую это регулярно среди многих 64-битных машин Ubuntu 10.04.
Вы можете поместить это в сценарий с некоторыми подсказками и вызвать его как
источник
ssh-copy-id
что делает последние два шага автоматически.mkdir
выchmod 700 .ssh
тоже должны добавить туда, и, кстати, вам не нужно быть настолько многословным~/.ssh
,.ssh
достаточно просто , поскольку команды все равно выполняются в домашнем каталогеУ меня была похожая проблема с ssh. В моем случае проблема заключалась в том, что я установил hadoop cloudera (из rpm на centos 6), и он создал пользовательские hdfs с домашним каталогом.
/var/lib/hadoop-hdfs
(не стандартно/home/hdfs
).Я перешел в / etc / passwd
/var/lib/hadoop-hdfs
на/home/hdfs
, переместил домашний каталог в новое место и теперь могу подключиться с помощью аутентификации с открытым ключом.источник
У меня просто была такая же проблема, и для меня решение было установить
UsePAM
наno
. Видите, даже сPasswordAuthentication
установленным значениемno
вы все равно получитеkeyboard-interactive
, и в моем случае моя локальная программа ssh по какой-то причине продолжала по умолчанию.Дополнительный фон, чтобы помочь любому в той же ситуации: я подключаюсь с хоста, на котором работает Dropbear, к хосту, на котором работает OpenSSH. С
PasswordAuthentication
иUsePAM
как установитьno
на удаленной машине, я получаю следующее сообщение , если я ввожуssh user@server
:Предоставляя файл идентификации
-i
, все работает, как ожидалось.Здесь может быть немного больше информации.
источник
Проверив разрешения и попробовав несколько других решений, перечисленных здесь, я наконец удалил каталог ssh на сервере, снова установив мой открытый ключ.
Команды сервера:
Локальные команды:
источник
На сервере:
Это было
directory permission issue
. Это было 777 на сервере, такI changed it back to 700
. Этоfixed
моя проблемаssh password less login failure
даже после копирования$USER/.ssh/id_rsa.pub
на сервер$USER/.ssh/authorized_keys
.источник
Еще одним вариантом является вариант @Jagadish «s ответ : к
strace
SSH - демон.Это имеет существенное преимущество: нам не нужно останавливать sshd, что может привести к полной блокировке, если что-то пойдет не так.
Сначала мы находим pid основного процесса sshd. Здесь мы можем увидеть его выполнение
pstree -pa|less
.Узнав, что pid - 633, мы можем
strace
, следуя его детям:В результате все, что сделал этот sshd и его дочерние процессы, будет помещено в файл с именем
sux
в локальном каталоге.Тогда воспроизведите проблему.
У него будет огромный список журнала вызовов ядра, который в основном непонятен / не важен для нас, но не везде. В моем случае, важно было следующее:
Это означало, что sshd попытался записать в журнал сообщение User cica, не разрешенное, потому что учетная запись заблокирована - он только не смог, потому что для этого недостаточно подробного ведения журнала. Но мы уже знаем, что pubkey был отклонен, потому что аккаунт был заблокирован.
Это еще не решение - теперь нам нужно гуглить, что означает «заблокированный аккаунт» в случае с sshd. Это будет , скорее всего , некоторое тривиальное
/etc/passwd
,/etc/shadow
колдовство, но главное сделано - проблема не загадочная, но легко отладка / googlable один.источник
В моем случае у меня были все права, и даже при запуске ssh с флагом -vvv я не мог понять, в чем проблема.
Поэтому я сгенерировал новый сертификат на удаленном хосте
и скопировал сгенерированные ключи на локальный компьютер и добавил новый открытый ключ в ~ / .ssh / authorized_keys на удаленном хосте
Использование сгенерированных ключей от удаленного хост-компьютера теперь работает. Так что, если другие решения не удаются, это еще одна вещь, чтобы попробовать.
источник
Мой сценарий состоял в том, что у меня есть сервер NAS, на котором я создал
backupbot
пользователя после создания моей основной учетной записи, которая смогла войти в систему, чтобы первоначально создатьbackupbot
пользователя. После того, как вы поигралиsudo vim /etc/ssh/sshd_config
и создалиbackupbot
пользователя,vim
можете создать, по крайней мере, в Ubuntu 16.04, и, основываясь на вашей~/.vimrc
конфигурации, файл подкачки, оставшийся от редактирования вашей сессии vim/etc/ssh/sshd_config
.Проверьте, если:
/etc/ssh/.sshd_config.swp
существует, и если он действительно удаляет его и перезапуститеsshd
демон:Это волшебным образом решило мою проблему. Ранее я проверил все свои разрешения и даже отпечатки пальцев открытого и закрытого ключей RSA. Это странно и, вероятно, ошибка
sshd
, особенно в этой версии:источник