Базирующийся вход в систему SSH ключа, который требует и ключа И пароля

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

Клиентское использование Ubuntu 16.04 и на борту настраивает Ubuntu.

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

ssh -i ~/.ssh/id_rsa user@board_ip //хорошо работает

Во второй раз:

ssh user@board_ip //никогда не спрашивайте пароль и открытый ключ - проблема

В первый раз:

ssh user@board_ip //не способный войти в систему без ключа - хорошо работает

Согласно моему пониманию, я сделал ошибку в sshd_config файле на плате. Я играл с ниже настроек, но привел все это к сбою время.

StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
#PasswordAuthentication yes                                            
PermitEmptyPasswords no

Проектное требование является безопасным входом в систему, главным образом на ssh. К achive больше безопасности SSH основанный на пароле вход в систему мы сместились к основанному на ключе входу в систему. Как объясняют выше после изменения вся конфигурация. Вход в систему SSH требует закрытого ключа и пароля также. После выхода из системы и после того, как когда-то вход в систему снова, ssh не требует, чтобы ключ или пароль, для проектного требования были нужны ключ и пароль каждый и каждый раз.

16
задан 22 May 2019 в 12:51

2 ответа

Есть два способа настроить ssh требовать как открытый ключ, так и пароль или парольную фразу.

Разница между паролем и парольной фразой:

Пароль в этом контексте - это пароль, назначенный пользователю на серверном компьютере (плате). Если на доске есть только одна учетная запись пользователя, то у нее будет только один пароль. Если на плате есть несколько учетных записей пользователей, они должны иметь свои уникальные пароли.

Парольная фраза связана с закрытым ключом на клиентском (локальном) компьютере, а не с удаленным сервером (бортовой) компьютером. Таким образом, если вы используете два разных клиентских компьютера или устройства для ssh, вам придется создать парольные фразы для закрытых ключей, хранящихся на каждом локальном компьютере. Точно так же, если двум различным пользователям необходимо подключиться к серверу (системной плате) по ssh со своих соответствующих локальных компьютеров, им потребуются их собственные пары закрытого и открытого ключей и собственная кодовая фраза, чтобы разблокировать соответствующие закрытые ключи.

Например, скажем, вы и мне нужно ssh на тот же серверный компьютер (доску) с наших собственных ноутбуков. У вас будет собственный закрытый ключ и кодовая фраза для этого закрытого ключа. У меня будет собственный закрытый ключ и его кодовая фраза. Результатом такой договоренности является то, что я могу изменить парольную фразу моего закрытого ключа в любое время, не сообщая вам и не изменяя ничего на сервере (плате). Я даже могу удалить парольную фразу из моего закрытого ключа, не сообщая вам.

Другой сценарий: если у меня есть несколько серверов для ssh, и если я использую один и тот же закрытый ключ для аутентификации на всех серверах, мне нужно будет используйте ту же парольную фразу для доступа к ssh на всех серверах, с которыми я работаю, а не только на вашей плате.

Метод 1. Открытый ключ с парольной фразой

Ссылка: https://help.ubuntu.com/community/ SSH / OpenSSH / Keys

Шаг 1. Добавьте парольную фразу к существующему публично-частному ключу для каждой комбинации клиента и пользователя

Для каждого пользователя на каждом клиентском компьютере или устройстве используйте следующую команду, чтобы сгенерировать парольную фразу для существующей публичной -private key pair:

ssh-keygen -p

Вам будет предложено указать место для хранения файлов. Нажмите Enter, чтобы принять местоположение по умолчанию.

Если у вас уже установлена ​​кодовая фраза, вам будет предложено ввести существующую парольную фразу. В этом случае вы уже выполнили этот шаг. Нажмите Ctrl + C , чтобы остановить процесс.

Затем вам будет предложено ввести новую кодовую фразу. Не нажимайте Enter! Введите длинную и трудно угадываемую парольную фразу, которую легко запомнить. Вам будет предложено повторно ввести кодовую фразу.

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

ssh-keygen -t rsa

Каждый раз, когда вы пытаетесь войти на сервер ssh, вам будет предложено ввести эту парольную фразу. Пароль пользователя ssh-сервера может отличаться. У каждого пользователя может быть своя кодовая фраза. Если пользователю необходимо войти в систему с разных клиентов (ноутбук, телефон и т. Д.), Он должен будет повторить этот процесс для каждого клиента. Она может выбрать другую парольную фразу для разных клиентов.

Шаг 2. Скопируйте открытый ключ на сервер, только если ключ новый.

Введите на клиентском компьютере:

ssh-copy-id -i ~/.ssh/id_rsa user@board_ip

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

Повторите для всех пользователей и всех клиентских устройств.

Шаг 3. Проверьте, работает ли он

Попробуйте войти на сервер, введя :

ssh user@board_ip 

Если все пойдет хорошо, вам будет предложено ввести кодовую фразу, которую вы создали на шаге 2. Это не тот пароль пользователя, который вы запрашивали на шаге 3.

Если вы видите запрос на ввод пароля пользователя, тогда что-то не так. Не переходите к следующему шагу, пока это не заработает.

Шаг 4. Отключите вход на основе пароля

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

#PasswordAuthentication yes

читать:

PasswordAuthentication no

Обратите внимание, что # отсутствует во второй строке, а да теперь нет .

Перезапустите ssh службы на сервере:

sudo service ssh restart

Если это не работает, перезагрузите плату.

Готово. Кодовая фраза кэшируется в клиенте, вероятно, Gnome-Keyring, пока пользователь не выйдет из системы на локальном компьютере. Таким образом, фазовая фраза задается только один раз за сеанс.

То, что будет дальше, является другой альтернативой. Вам нужно выполнить либо 1, либо 2.

Метод 2. Требуются открытый ключ и пароль пользователя

Ссылка: https://security.stackexchange.com/questions/17931/possible-to-use- both-private-key-and-password-authentication-for-ssh-login

Шаг 1. Удалите парольную фразу из закрытого ключа, если она есть, для каждой комбинации клиента и пользователя

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

ssh-keygen -p

Вам будет предложено указать место, где хранить файлы. Нажмите Enter, чтобы принять местоположение по умолчанию.

Если у вас есть существующая кодовая фраза, вам будет предложено ввести ее. Если вам не предлагается ввести существующую кодовую фразу, все готово. Нажмите Ctrl + C , чтобы остановить процесс.

В противном случае введите существующую кодовую фразу и продолжите.

Затем вам будет предложено ввести кодовую фразу. Нажмите Дважды введите , чтобы удалить существующую парольную фразу из закрытого ключа.

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

ssh-keygen -t rsa

Если пользователю необходимо войти в систему с разных клиентов (ноутбук, телефон и т. Д.), Ей придется повторить этот процесс для каждого клиента.

Шаг 2. Скопируйте открытый ключ на сервер, только если ключ новый.

Введите на клиентском компьютере:

ssh-copy-id -i ~/.ssh/id_rsa user@board_ip

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

Повторите для всех пользователей и всех клиентских устройств.

Шаг 3. Проверьте, используются ли открытые ключи.

Попробуйте войти в сервер, введя:

ssh user@board_ip 

Если все пойдет хорошо, вам не будет предложено ввести пароль или кодовую фразу. Это нормально. Это показывает, что открытый ключ правильно установлен на ssh-сервере (плате) и работает. Мы изменим настройку так, чтобы на следующем шаге он снова запрашивал пароль.

Шаг 4. Настройка и открытого ключа, и пароля

Войдите на сервер ssh (плата) и отредактируйте / и т.д. / ssh / sshd_config файл. Добавьте в файл следующую строку:

AuthenticationMethods publickey,password

Предупреждение: Убедитесь, что PasswordAuthentication выглядит так:

#PasswordAuthentication yes

Это поведение по умолчанию.Вы можете оставить или удалить # в начале. Однако, если этот параметр установлен на no вместе с только что добавленной строкой, то никто не сможет войти на сервер с помощью ssh . Если вас заблокируют, вам придется физически перейти на удаленный сервер, подключить его к клавиатуре, монитору и т. Д., Войти в систему локально и отредактировать этот файл, чтобы устранить проблему.

Конец предупреждения

Перезапустите ssh службы на сервере:

sudo service ssh restart

Если это не сработает, перезагрузите плату.

Шаг 5. Протестируйте взлом

Найдите новый компьютер или войдите на клиентский компьютер, используя новое имя пользователя, скажем user2. У этого пользователя не должно быть пар открытых и закрытых ключей в папке /home/$USER/.ssh/ . Мы представим, что user2 - это хакер, который каким-то образом узнал пароль пользователя @ board_ip, и попытаемся подключиться к этой системе по ssh.

Войдите как user2 с клиентского компьютера:

ssh user@board_ip

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

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

Надеюсь, это поможет

18
ответ дан 23 November 2019 в 06:26

Проблема в том, что ~ /.ssh/id_rsa - это домашний ключ по умолчанию для открытого ключа SSH в Ubuntu. Поэтому вам не нужно включать -i ~ / .ssh / id_rsa в вашу команду SSH после того, как произошел обмен ключами, чтобы использовать пару ключей id_rsa .

Чтобы избежать такого поведения, создайте пару ключей SSH с другим именем, тогда оно будет использоваться только тогда, когда вы укажете его с параметром -i .

Пример:
Если вы создадите ключ с именем user_ssh_rsa в домашнем каталоге пользователя:

ssh-keygen -t rsa -f ~/.ssh/user_ssh_rsa

Затем обменяйтесь ключом с удаленным сервером, вводя пароль для пользователя в удаленной системе при появлении запроса:

ssh-copy-id -i ~/.ssh/user_ssh_rsa user@board_ip

Вход с помощью:

ssh -i ~/.ssh/user_ssh_rsa user@board_ip

Будет выполнен вход без запроса пароля, поскольку используется вновь созданный ключ.

Использование:

ssh -user@board_ip

Будет запрашивать пароль, поскольку пара ключей не найдена автоматически.
Это зависит от удаления уже общего ключа в ~ / .ssh / id_rsa

0
ответ дан 23 November 2019 в 06:26

Другие вопросы по тегам:

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