How to disable password authentication for SSH

I'd like to disable password authentication for SSH (for all the users) in Linux. I'm setting the PasswordAuthentication to no is the sshd_config file but then I'm no longer to log in using my private key.

p.s. I'm specifying my private key file when trying to log in.

2
задан 28 April 2018 в 19:30
3 ответа

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

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

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

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

На сервере вы можете отредактировать / etc / ssh / sshd_config find строку PasswordAuthentication и введите:

PasswordAuthentication no

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

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

service ssh reload

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

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

3
ответ дан 3 December 2019 в 10:33

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

chmod 700 ~/.ssh
chmod 600 ~/.ssh/
0
ответ дан 3 December 2019 в 10:33

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

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

$ vim /etc/ssh/sshd_config

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

  • PermitRootLogin no
  • PasswordAuthentication no
  • UsePAM no
  • UseLogin no

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

$ 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
0
ответ дан 3 December 2019 в 10:33

Теги

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