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.
Перед тем, как отключить аутентификацию по паролю, вам необходимо настройте аутентификацию с открытым ключом и убедитесь, что вы его используете. Если вы еще этого не сделали, вы можете сгенерировать пару ключей с помощью 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-соединение, чтобы убедиться, что соединение работает должным образом. Этот шаг важен, поскольку оболочка, которую вы оставили открытой, дает вам последний шанс решить проблему, если вы случайно заблокировали доступ к корневой оболочке на сервере.
Проверьте права доступа к файлам и папкам на сервере, на который вы хотите войти. Если разрешение слишком свободное, оно не работает.
chmod 700 ~/.ssh
chmod 600 ~/.ssh/
На сервере отключите аутентификацию по паролю SSH, также отключите возможность входа в систему как root.
Примечание Перед тем как сделать это, убедитесь, что у вас есть пользователь на сервере с паролем, или вы будете заблокированы от сервера.
$ vim /etc/ssh/sshd_config
Отредактируйте / добавьте следующие строки
Выполните команду
$ 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