Назад | Перейти на главную страницу

Как отключить аутентификацию по паролю для SSH

Я хотел бы отключить аутентификацию по паролю для SSH (для всех пользователей) в Linux. Я устанавливаю PasswordAuthentication to no - это файл sshd_config, но тогда я больше не могу входить в систему, используя свой закрытый ключ.

p.s. Я указываю свой файл закрытого ключа при входе в систему.

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

Пара ключей состоит из закрытого и открытого ключей с .pub в конце имени файла. Открытый ключ состоит из одной строки с типом, открытым ключом и комментарием. Я считаю полезным отредактировать комментарий, включив дату создания пары ключей, поскольку она не включена в комментарий по умолчанию.

Вам нужно вставить эту строку в .ssh/authorized_keys в учетной записи, в которую вы входите.

При подключении к серверу с помощью ssh в будущем у вас не будет запрашиваться пароль для входа в систему. Возможно, вам будет предложено ввести кодовую фразу для ключа, если вы ввели ее при создании. Если вы не хотите, чтобы вас спрашивали парольную фразу при каждом входе в систему, используйте ssh-agent.

На сервере вы можете редактировать /etc/ssh/sshd_config Найти PasswordAuthentication line и сделайте это:

PasswordAuthentication no

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

Чтобы изменения вступили в силу, запустите

service ssh reload

как root на сервере. Эта команда в Ubuntu, она может немного отличаться в зависимости от дистрибутива. Я рекомендую запустить команду в screen сеанс такой, что reload завершится, даже если вы потеряете соединение с сервером во время его запуска.

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

Проверьте права доступа к файлам и папкам на сервере, на который вы хотите войти. Если разрешение слишком слабое, оно не работает.

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

На сервере отключите аутентификацию по паролю SSH, также отключите возможность входа в систему как root.

Заметка Перед тем как сделать это, убедитесь, что у вас есть пользователь на сервере с паролем, иначе вы будете заблокированы от сервера.

$ vim /etc/ssh/sshd_config

Отредактируйте / добавьте следующие строки

  • PermitRootLogin нет
  • Пароль Аутентификация нет
  • UsePAM нет
  • UseLogin нет

Выполнить команду

$ service ssh restart

Создайте новый ключ SSH на клиенте (пример)

cd ~/.ssh    
ssh-keygen -t rsa -b 4096 -C server1 -f server1

Скопируйте SSH-ключ на сервер

ssh-copy-id -i server1.pub username@server-ip

Используйте новый ключ для подключения к серверу

vim ~/.ssh/config

Добавьте следующие строки

Host ip-of-server
  User yourUsername
  IdentifyFile /home/yourUsername/.ssh/server1

Подключиться к серверу

ssh server-ip