Добавление открытого ключа в ~ / .ssh / authorized_keys не приводит меня к автоматическому входу в систему

Я добавил открытый ключ SSH в файл authorized_keys. ssh localhost должен войти в меня, не спрашивая пароль.

Я сделал это и попытался ввести ssh localhost, но он по-прежнему просит меня ввести пароль. Есть ли еще одна настройка, которую мне нужно пройти, чтобы она работала?

Я выполнил инструкции по изменению разрешений:

Ниже приведен результат, если я сделаю ssh -v localhost.

debug1: Reading configuration data /home/john/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to localhost [127.0.0.1] port 22.
debug1: Connection established.
debug1: identity file /home/john/.ssh/identity type 1
debug1: identity file /home/john/.ssh/id_rsa type -1
debug1: identity file /home/john/.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_4.7p1 Debian-8ubuntu3
debug1: match: OpenSSH_4.7p1 Debian-8ubuntu3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu3
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-cbc hmac-md5 none
debug1: kex: client->server aes128-cbc hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host 'localhost' is known and matches the RSA host key.
debug1: Found key in /home/john/.ssh/known_hosts:12
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering public key: /home/john/.ssh/identity
debug1: Server accepts key: pkalg ssh-rsa blen 149
debug1: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>

Затем он запрашивает пароль после указанного выше журнала. Почему он не выполняет вход без пароля?


person user482594    schedule 16.06.2011    source источник
comment
Хотя здесь это не так, но если вы пришли из Google и используете зашифрованный домашний каталог, sshd не сможет получить к нему доступ и, следовательно, не сможет прочитать ваш файл authorized_keys. Вот решение: bugs.launchpad.net/ubuntu/ + источник / openssh / + ошибка / 362427 / комментарии /   -  person Daniel Schaffer    schedule 26.05.2013


Ответы (30)


Вам необходимо проверить права доступа к authorized_keys файлу и папке / родительским папкам, в которых он находится.

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Для получения дополнительной информации см. эту страницу.

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

chmod go-w ~
person Teddy    schedule 16.06.2011
comment
Что-то из вышеперечисленного сработало, хотя разве chmod -R go-wrx foobar не слишком драматичен? Зачем нужен рекурсивный? - person joachim; 23.03.2012
comment
Для второй части не обязательно делать ее рекурсивной, достаточно просто выполнить chmod go-wrx foobar. Выполнение этого рекурсивно может серьезно повредить некоторым приложениям, если у вас есть группа или другой доступ к файлам, особенно если это веб-каталог. - person StingeyB; 18.07.2012
comment
Как упоминалось в FAQ по OpenSSH, для домашнего каталога пользователя и каталога .ssh требуется только разрешение на запись, удаленное для группы / другого (так что chmod go-w $HOME $HOME/.ssh подойдет). Таким образом, разрешения могут быть такими же «открытыми», как 755 для обоих каталогов, если вам так угодно. Самые простые / наименее инвазивные команды находятся в FAQ: openssh.org/faq.html#3.14 - person davidjb; 09.05.2013
comment
Почему у меня это не сработало, пока я не сделал chmod 700 ~/.ssh && chmod 644 ~/.ssh/authorized_keys? 600 не работал там, где 644 работал ... - person ficuscr; 09.01.2014
comment
Я заметил, что это не работает на ПК с Windows с Cygwin, потому что, когда я запускаю chmod 0600 .ssh/id_rsa*, команда идет, но по какой-то причине Windows не позволяет этого, и мой вопрос об этом был удален по какой-то причине в другом месте на сайте о это. - person FilBot3; 20.05.2014
comment
@Pred Я не знаю, как Cygwin. - person Teddy; 20.05.2014
comment
@Teddy Я не помню, где я его нашел, но мне пришлось изменить владельца папки .ssh в Cygwin, чтобы она принадлежала пользователям, тогда я мог chmod 0600 - person FilBot3; 20.05.2014
comment
Во всяком случае, это только усугубило ситуацию ... Я получал ошибку Agent admitted failure to sign using the key., пока не восстановил исходные разрешения (664) - person Wilf; 05.06.2014
comment
При принудительном применении SELinux правильных разрешений может быть недостаточно. Возможно, вам потребуется запустить sudo restorecon -FRvv ~username/.ssh - person Dmitri Chubarov; 21.10.2014
comment
Также обратите внимание, что я должен был сделать это как на стороне клиента, выполняющей программу ssh, так и на стороне сервера, выполняющую программу sshd. Не то и другое, а то и другое. - person enthusiasticgeek; 09.12.2014
comment
К вашему сведению, я создал небольшой скрипт по адресу github.com/centic9/generate-and- send-ssh-key, который выполняет необходимые шаги за один раз и дополнительно обеспечивает все разрешения для файлов / каталогов, которые всегда вызывали у меня головную боль ... - person centic; 07.10.2015
comment
Мне также нужно было sudo chown -R {$USER}:{$USER} ~/.ssh/, потому что я написал authorized_keys файл как root. - person Zane; 03.01.2016
comment
Удаление разрешения на запись группы спасло меня. Спасибо. - person jftsai; 26.01.2016
comment
Если у вас есть нестандартное имя файла закрытого ключа (например, любое другое, кроме id_rsa, id_dsa или id_ecdsa), вам может потребоваться указать -i path-to-private-key-file для вашей команды ssh. - person Rai; 08.02.2016
comment
Sonofab ... chmod в домашнем каталоге был для меня. Кто бы мог подумать об этом? Грр .. Спасибо за ответ! - person smendola; 20.04.2016
comment
вау ... в моем случае права доступа к полному каталогу / home / user были установлены на 777 ... (wtf) ... Мне пришлось удалить права на запись для группы и всего остального - теперь это работает как шарм, спасибо: ) - person Bohne; 27.04.2016
comment
@ficuscr - или другие, которые задаются вопросом, почему разрешения 644 работают, когда 600 не работают ... запросы туннелирования ssh могут требовать, чтобы этот файл имел 644 конкретно. Я всегда нормально подключался к 600 с помощью ключей ssh ​​с базовым терминальным подключением к моему серверу. Но для более изящных приложений, переадресации портов, ProxyCommand и т. Д. Вам могут потребоваться групповые или глобальные разрешения на чтение файла или удаленного файла ... или ... по мере необходимости. - person bellasys; 17.12.2016

SELinux также может привести к тому, что authorized_keys не будет работать. Специально для root в CentOS 6 и 7. Однако нет необходимости отключать его.

Убедившись, что ваши разрешения верны, вы можете исправить это следующим образом:

chmod 700 /root/.ssh
chmod 600 /root/.ssh/authorized_keys
restorecon -R -v /root/.ssh
person Cole Stanfield    schedule 07.02.2014
comment
restorecon - это то, что вам нужно после того, как вы скопировали файлы вручную, например на новый жесткий диск. (В этом случае вам, вероятно, следует запустить его для всех файлов. Может исправить другие странные проблемы.) - person ospalh; 24.09.2015
comment
Еще один счастливый турист здесь. Это была моя проблема в RHEL 6.5 - person Antonio Ortells; 19.12.2016
comment
9 из 10 раз, почему это не работает, проблема всегда работает - это проблема selinux. - person Andrew White; 11.04.2017
comment
исправил проблему для меня на сервере 1and1 (1und1) - person musicman; 10.12.2017

Настройка ssh authorized_keys кажется простой, но она скрывает некоторые ловушки, которые я пытаюсь понять.

- СЕРВЕР -

В / etc / ssh / sshd_config установите passwordAuthentication yes, чтобы сервер временно принимал аутентификацию по паролю.

- КЛИЕНТ -

рассмотрите Cygwin как эмуляцию Linux и установите и запустите OpenSSH

1. Создание закрытого и открытого ключей (на стороне клиента) # ssh-keygen

Здесь, нажав всего лишь Enter, вы получите default два файла, id_rsa и id_rsa.pub в ~ /.ssh/, но если вы укажете имя_для_ключа, сгенерированные файлы сохранятся в вашем текущем рабочем каталоге.

2. Перенесите файл your_key.pub на целевой компьютер, ssh-copy-id user_name@host_name

Если вы не создали ключ по умолчанию, это первый шаг, который может пойти не так ... вы должны использовать:

ssh-copy-id -i path/to/key_name.pub user_name@host_name

3. Ведение журнала ssh user_name@host_name будет работать только для файла id_rsa по умолчанию, поэтому здесь вторая ловушка. Вам нужно сделать ssh -i path/to/key_name user@host

(Используйте параметр ssh -v ..., чтобы узнать, что происходит.)

Если сервер по-прежнему запрашивает пароль, значит, вы что-то дали. Чтобы ввести кодовую фразу: когда вы создали ключи (это нормально).

Если ssh не прослушивает порт по умолчанию 22, вы должны использовать ssh -p port_nr.

- СЕРВЕР -----

4. Измените файл / etc / ssh / sshd_config, чтобы он имел

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  %h/.ssh/authorized_keys

(в случае необходимости раскомментируйте)

Это говорит ssh принять файл authorized_keys и искать в домашнем каталоге пользователя строку key_name, записанную в файле .ssh / authorized_keys.

5 Задайте разрешения на целевой машине.

chmod 755 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Также отключите проходную аутентификацию,

passwordAuthentication no

чтобы закрыть шлюз для всех попыток ssh root / admin /....@ your_domain.

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

chown -R ~ usernamehere
chgrp -R ~/.ssh/ user

===============================================

7. Рассмотрите отличный http://www.fail2ban.org

8. Дополнительный SSH туннель для доступа к MySQL (bind = 127.0.0.1) сервер

person bortunac    schedule 13.07.2014
comment
Обратите внимание, что всего 4 безопасности не только для безопасности! SSH проигнорирует файл, если у него нет ограничительных разрешений. - person Navin; 31.10.2014
comment
Обеспечение права собственности было бы отличным дополнением к этому списку - person steviesh; 06.03.2015
comment
Я понятия не имел о ssh-copy-id! Один только этот шаг стал бы отличным ответом. - person James Marble; 07.07.2016
comment
chmod 755 ~ / .ssh вместо 700, который я вижу в другом месте, похоже, сделал это - person Jim W says reinstate Monica; 03.12.2016
comment
ВАУ ... моя проблема заключалась в именовании по умолчанию (шаг 2). SSH не забирает файлы в .ssh? это стоило мне нескольких дней ... Большое спасибо! - person Sunchezz; 30.01.2021


Отчаявшиеся могут также убедиться, что у них нет лишних символов новой строки в файле authorized_keys из-за копирования текста файла id_rsa.pub из сбитого с толку терминала.

person Alexander Taylor    schedule 30.10.2014
comment
Именно это и случилось со мной! два терминала имеют одинаковую ширину, поэтому трудно понять, пока я не включил номера строк, чтобы увидеть две строки в файле authorized_keys. - person Shawn; 22.04.2015
comment
Этот. Я просто потратил час зря из-за этого. И это не в первый раз. В ответе @bortunac упоминается инструмент ssh-copy-id, который я буду использовать в будущем, чтобы избежать этого. - person xdhmoore; 11.07.2017
comment
Я получил содержимое id_rsa.pub, используя more вместо cat, что было фатальным из-за невидимых разрывов строк. - person Dan Halbert; 12.06.2020

Перечисление открытого ключа в .ssh / authorized_keys необходимо, но недостаточно для того, чтобы sshd (сервер) принял его. Если ваш закрытый ключ защищен парольной фразой, вам нужно будет каждый раз передавать парольную фразу ssh (клиенту). Или вы можете использовать ssh-agent или эквивалент GNOME.

Ваша обновленная трассировка соответствует закрытому ключу, защищенному парольной фразой. См. Ssh-agent или используйте ssh-keygen -p.

person fche    schedule 16.06.2011

Далее user - ваше имя пользователя.

mkdir -p /home/user/.ssh
ssh-keygen -t rsa
touch /home/user/.ssh/authorized_keys
touch /home/user/.ssh/known_hosts
chown -R user:user /home/user/.ssh
chmod 700 /home/user/.ssh
chmod 600 /home/user/.ssh/id*
chmod 644 /home/user/.ssh/id*.pub
chmod 644 /home/user/.ssh/authorized_keys
chmod 644 /home/user/.ssh/known_hosts
person wcc526    schedule 14.11.2015
comment
Лучше для root: mkdir -p /home/$USER/.ssh && chown -R $USER:$USER /home/$USER/.ssh && sudo -u $USER ssh-keygen -t rsa && touch /home/$USER/.ssh/authorized_keys && touch /home/$USER/.ssh/known_hosts && chmod 700 /home/$USER/.ssh && chmod 600 /home/$USER/.ssh/id* && chmod 644 /home/$USER/.ssh/id*.pub && chmod 644 /home/$USER/.ssh/authorized_keys && chmod 644 /home/$USER/.ssh/known_hosts && vim /home/$USER/.ssh/authorized_keys # paste keys here! - person Odysseus; 15.06.2016

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

person Nim    schedule 18.10.2013
comment
Вы можете видеть, как SELinux вмешивается в /var/log/audit/audit.log. restorecon -R -v /root/.ssh исправил мой конкретный случай. - person Dave Goodell; 21.02.2017

Попробуйте "ssh-add", который у меня сработал.

person h99    schedule 05.03.2014
comment
Ух ты! Это сработало для меня. OSX Catalina. Больше здесь ничего не работало. - person Sankalp; 13.05.2021
comment
То же самое. Также работает Каталина. - person Pete Forsyth; 26.05.2021

В конце концов, мне удалось помочь мне убедиться, что владелец / группа не был root, а user:

chown -R ~/.ssh/ user
chgrp -R ~/.ssh/ user
person Ulliroyal    schedule 08.11.2014
comment
chown: недопустимый пользователь: ‘/home/lsa/.ssh/’ - person Stepan Yakovenko; 16.02.2019
comment
@ Степан Яковенко: пользователь не буквально (?). Улучшенный ответ мог бы прояснить это. - person Peter Mortensen; 04.08.2020

Поищите в файле /var/log/auth.log на сервере sshd ошибки аутентификации.

Если ничего не помогает, запустите сервер sshd в режиме отладки:

sudo /usr/sbin/sshd -ddd -p 2200

Затем подключитесь с клиента:

ssh user@host -p 2200

В моем случае я нашел в конце раздел ошибок:

    debug1: userauth_pubkey: test whether pkalg/pkblob are acceptable for RSA SHA256:6bL+waAtghY5BOaY9i+pIX9wHJHvY4r/mOh2YaL9RvQ [preauth]
==> debug2: userauth_pubkey: disabled because of invalid user [preauth]
    debug2: userauth_pubkey: authenticated 0 pkalg ssh-rsa [preauth]
    debug3: userauth_finish: failure partial=0 next methods="publickey,password" [preauth]
    debug3: send packet: type 51 [preauth]
    debug3: receive packet: type 50 [preauth]

Обладая этой информацией, я понял, что мой sshd_config файл ограничивал вход в систему для членов группы ssh. Следующая команда исправила эту ошибку разрешения:

sudo usermod -a -G ssh NEW_USER
person cmcginty    schedule 21.10.2018
comment
Этот дополнительный журнал очень полезен, спасибо! Он показал мне, что один из моих ключей - скопированный и вставленный в authorized_keys - имел разрыв строки посередине! - person Quentin Stafford-Fraser; 24.04.2021

Выполните их в командной строке:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

После этого убедитесь, что ваш каталог выглядит следующим образом:

drwx------ 2 lab lab 4.0K Mar 13 08:33 .
drwx------ 8 lab lab 4.0K Mar 13 08:07 ..
-rw------- 1 lab lab  436 Mar 13 08:33 authorized_keys
-rw------- 1 lab lab 1.7K Mar 13 07:35 id_rsa
-rw-r--r-- 1 lab lab  413 Mar 13 07:35 id_rsa.pub
person Exsonic    schedule 13.03.2014
comment
чем ваш ответ отличается от принятого? Вы написали его 3 года спустя, используя команду Ctrl + C Ctrl-V? - person stinger; 08.02.2019

В моем случае мне нужно было поместить свой authorized_keys файл в .openssh.

Это местоположение указано в /etc/ssh/sshd_config в параметре AuthorizedKeysFile %h/.ssh/authorized_keys.

person Sean Bannister    schedule 22.02.2017
comment
Существует целый класс проблем, которые могут возникнуть на сервере (при попытке подключения с клиента), которые невозможно отладить без доступа к серверу ... Это сделано для того, чтобы скрыть информацию от злонамеренных клиентов, но усложняет задачу отлаживать. - person qneill; 15.12.2017

Еще один совет, который следует запомнить: начиная с версии 7.0 OpenSSH по умолчанию отключает ключи SSH DSS / DSA из-за их унаследованной слабости. Поэтому, если у вас OpenSSH v7.0 +, убедитесь, что ваш ключ не ssh-dss.

Если вы застряли с ключами DSA, вы можете повторно включить поддержку локально, обновив свои файлы sshd_config и ~/.ssh/config такими строками: PubkeyAcceptedKeyTypes=+ssh-dss

person user2683246    schedule 29.04.2016

Убедитесь, что у целевого пользователя установлен пароль. Запустите passwd username, чтобы установить его. Это было необходимо для меня, даже если пароль для входа в SSH был отключен.

person George    schedule 15.11.2014

Еще одна проблема, о которой вы должны позаботиться: если ваши сгенерированные имена файлов не соответствуют значениям по умолчанию id_rsa и id_rsa.pub.

Вам необходимо создать файл .ssh / config и вручную определить, какой файл id вы собираетесь использовать с подключением.

Пример здесь:

Host remote_host_name
    HostName 172.xx.xx.xx
    User my_user
    IdentityFile /home/my_user/.ssh/my_user_custom
person Kunthar    schedule 02.02.2017
comment
IdentityFile должен быть закрытым ключом - person Ken H; 14.08.2018
comment
@KenH да, конечно. это опечатка. простите за это. - person Kunthar; 25.11.2018

Просто посмотрите файл /var/log/auth.log на сервере. Установка дополнительной детализации с помощью -vv на стороне клиента не поможет, потому что сервер вряд ли предложит слишком много информации возможному злоумышленнику.

person Edward van Kuik    schedule 19.01.2018

Моя проблема заключалась в изменении AuthorizedKeysFile, когда автоматизация для заполнения / etc / ssh / authorized_keys еще не была запущена.

$sudo grep AuthorizedKeysFile /etc/ssh/sshd_config
#AuthorizedKeysFile .ssh/authorized_keys
AuthorizedKeysFile  /etc/ssh/authorized_keys/%u
person Mark    schedule 28.03.2016

Убедитесь, что вы скопировали весь открытый ключ в authorized_keys; префикс ssh rsa необходим для работы ключа.

person Willem    schedule 09.01.2018
comment
использовал ssh-copy-id - person vishnu; 28.06.2018

Я выполнил sudo chmod 700 ~/.ssh и chmod 600 ~/.ssh/authorized_keys и chmod go-w $HOME $HOME/.ssh из предыдущего ответа, и это устранило мою проблему на CentOS 7 ящик, в котором я испортил разрешения, пытаясь заставить работать общие ресурсы Samba .

person GJSmith3rd    schedule 01.05.2015

Похоже на проблему с разрешением. Обычно это происходит, если права доступа к какому-либо файлу / каталогу настроены неправильно. В большинстве случаев это ~/.ssh и ~/.ssh/*. В моем случае это /home/xxx.

Вы можете изменить уровень журнала sshd, изменив файл /etc/ssh/sshd_config (найдите LogLevel и установите для него значение DEBUG), а затем проверьте вывод в файле /var/log/auth.log, чтобы узнать, что именно произошло.

person Joey    schedule 08.05.2015
comment
Это выглядит практически идентично принятому ответу и, вероятно, должен был быть комментарием к нему, а не ответом. Если немного больше репутации, вы сможете публиковать комментарии. До тех пор, пожалуйста, не используйте ответы как временное решение. - person Nathan Tuggy; 08.05.2015
comment
Извините, я думал, что это способ решить все эти вопросы. Теперь я знаю, как это сделать, спасибо. - person Joey; 11.05.2015

Это решает мою проблему:

ssh-agent bash

ssh-add
person Julian    schedule 21.06.2015
comment
Объясните, пожалуйста, что это значит. - person lyuboslav kanev; 13.04.2018
comment
Ssh-agent хранит ваши ssh-ключи .. команда bash запускает новый экземпляр своей оболочки. и ssh-add разблокирует ваши ключи и загружает их - person Julian; 13.04.2018

Вам необходимо проверить свойства файлов.

Чтобы назначить необходимое свойство, используйте:

$ chmod 600 ~/.ssh/sshKey
$ chmod 644 ~/.ssh/sshKey.pub
person Manna    schedule 03.05.2018

Я так и использую.

cat ~/.ssh/id_rsa.pub| ssh user@remote-system 'umask 077; cat >>~/.ssh/authorized_keys'
person Zafer BAHADIR    schedule 22.06.2020
comment
Объяснение было бы в порядке. - person Peter Mortensen; 04.08.2020

В этой заметке убедитесь, что в вашей конфигурации sshd есть такая строка:

PermitRootLogin without-password

Установите, как указано выше, а затем перезапустите sshd (/etc/init.d/sshd restart).

Выйдите из системы и попробуйте войти снова!

Я считаю, что по умолчанию это:

PermitRootLogin no
person Edd Stance    schedule 03.02.2015

В моем случае это потому, что группа пользователя не указана в AllowGroups файла конфигурации / etc / ssh / sshd_config. После добавления все работает нормально.

person pppk520    schedule 26.01.2016

У меня домашний каталог находится в нестандартном месте, и в журналах sshd есть следующая строка, даже если все разрешения были в порядке (см. Другие ответы):

Не удалось открыть авторизованные ключи '/data/home/user1/.ssh/authorized_keys': в доступе отказано

Я нашел здесь решение: в RHEL 6.5

В моем конкретном случае:

  • В /etc/selinux/targeted/contexts/files/file_contexts.homedirs добавлена ​​новая строка:

  • Это исходная строка для обычных домашних каталогов:

    /home/[^/]*/\.ssh(/.*)? unconfined_u:object_r:ssh_home_t:s0

  • Это моя новая строка:

    /data/home/[^/]*/\.ssh(/.*)? unconfined_u:object_r:ssh_home_t:s0

  • Затем следует restorecon -r /data/ и sshd перезапуск.

person alexandrul    schedule 25.11.2016

У меня была эта проблема, и ни один из других ответов не решил ее, хотя, конечно, другие ответы были правильными.

В моем случае оказалось, что сам каталог /root (не например, /root/.ssh) имел неправильные разрешения. Мне было нужно:

chown root.root /root
chmod 700 /root

Конечно, эти разрешения должны быть примерно такими (может быть chmod 770) в любом случае. Однако это специально препятствовало работе sshd, хотя и /root/.ssh, и /root/.ssh/authorized_keys имели правильные разрешения и владельцев.

person Jason Cohen    schedule 02.09.2018

У меня возникла эта проблема, когда я добавил группу пользователя, вошедшего в систему, другому пользователю.

Допустим, есть пользователь с SSH-входом с именем userA и пользователь с именем userB, не входящий в SSH-вход. userA также имеет группу userA. Я изменил userB, чтобы также иметь группу userA. Это привело к описанному поведению, так что userA не смог войти в систему без приглашения.

После того, как я удалил группу userA из userB, логин без приглашения снова заработал.

person Bevor    schedule 27.05.2019

У меня были те же проблемы с тех пор, но сегодня мне пришлось настроить один новый сервер. Что я смог узнать за это время ...

Базовый процесс разрешения аутентификации без пароля выглядит следующим образом:

  1. На сервере проверьте, есть ли в вашей домашней папке .ssh папка. Если он не существует, вы можете создать его вручную с помощью команды mkdir, а затем назначить правильные разрешения с помощью chmod, или же вы можете использовать ту же утилиту ssh-keygen для создания частных / открытых ключей, но на сервере для вашего Пользователь. В результате будет создана необходимая папка .ssh.

  2. На локальном компьютере вам также необходимо создать закрытый / открытый ключи с помощью утилиты ssh-keygen.

  3. Вам нужно переместить свой открытый ключ в файл .ssh/authorized_keys на сервере. Для этого можно использовать служебную программу ssh-copy-id или сделать это вручную с помощью команд cat и scp.

  4. В лучшем случае это позволит подключиться к вашему серверу без пароля.

Хорошо, теперь проблемы, которые я обнаружил сегодня: сначала есть несколько алгоритмов генерации ключей: rsa, dsa, ecdsa и ed25519, и есть много выпусков OpenSSH (вы можете иметь одну версию на вашем локальном компьютере и старую версию на вашем сервере) :

Подсказка: Использование ssh -v помогает увидеть дополнительную информацию при подключении к серверу.

OpenSSH_8.2p1 Ubuntu-4, OpenSSL 1.1.1f 31 Mar 2020

debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3

Ошибка в моем сегодняшнем случае заключалась в том, что я пытался использовать ключ с алгоритмом нового поколения, который не поддерживался установленной версией OpenSSH на сервере. Когда я проверил поддерживаемые алгоритмы, я обнаружил еще одну ошибку: сервер отклонял мой алгоритм:

debug1: Skipping ssh-dss key /home/user/.ssh/id_dsa - not in PubkeyAcceptedKeyTypes

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

Примечания к выпуску OpenSSH: Ссылка

person Jairo Martínez    schedule 17.07.2020