Я хотел бы отключить аутентификацию по паролю для 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
Отредактируйте / добавьте следующие строки
Выполнить команду
$ 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