Короткий пароль не безопасен, это просто кошмар с точки зрения безопасности, а длинный пароль для входа убивает производительность. В этой статье будет показано, как организовать доступ по SSH к вашим серверам или любому компьютеру без ввода пароля.
Я обнаружил, что при этом экономится куча времени. Так что стоит применить этот способ, если вы имеете дело с множеством серверов или, например, используете SSHFS.
Мы будем предполагать, ваш сервер уже использует службу SSH и она запущена. При этом мы не будем запускать SSH-сервер на клиентской стороне, будем использовать беспарольный SSH.
1. Генерируем ключ SSH
Снова предполагаем, что у вас на клиентской машине установлен SSH-клиент, например openssh-client
. Первым делом нужно сгенерировать ключ SSH.
Для этого будем использовать команду ssh-keygen
, которая имеется в составе пакета openssh-client в Ubuntu, как и в любом другом дистрибутиве, основанном на Debian.
ssh-keygen -t rsa
Вам не нужно при этом вводить какую-то парольную фразу, просто держите нажатой клавишу Enter. Эта команда создаст 2048-битовый ключ RSA, который по умолчанию будет сохранен в каталоге ~/.ssh
.
Если вы хотите получить ключ другого типа, например DSA или ECDSA, добавьте соответствующий параметр после аргумента -t
к команде ssh-keygen
.
ssh-keygen -t dsa
Я полагаю, что 2048-битный ключ RSA достаточно надежен для использования в некритичных случаях. Однако, если вы хотите сгенерировать более длинный ключ, используйте в команде аргумент -b
.
ssh-keygen -t rsa -b 4096
2. Копируем публичный ключ SSH на удаленный сервер
Существует два типа SSH-ключей для организации беспарольного доступа по SSH: несекретный публичный ключ (a public key) и секретный ключ (private key). id_rsa — это секретный ключ, а id_rsa.pub — это ваш публичный ключ.
На удаленный сервер вам нужно скопировать публичный ключ, либо с помощью команды ssh-copy-id
, либо вручную каким-то другим способом.
Типичный синтаксис команды копирования публичного ключа SSH выглядит следующим образом.
ssh-copy-id [email protected]
Может быть более понятен будет следующий пример:
ssh-copy-id [email protected]
У вас будет запрошен текущий пароль для того, чтобы провести аутентификацию вас как законного пользователя, введите его. Вам будет предложено подтвердить подлинность удаленного сервера, просто введите yes.
Существует альтернативный вариант: вы можете залогиниться на удаленный сервер и создать текстовый файл в каталоге the ~/.ssh
, например, выполнив следующую команду.
nano ~/.ssh/authorized_keys
Скопируйте в этот файл содержимое вашего файла ~/.ssh/id_rsa.pub
на вашей локальной машине, сохраните файл и выйдите из текстового редактора.
3. Тестирование беспарольного доступа по SSH и замечания
Теперь вы уже должны иметь возможность подключиться к удаленному серверу не вводя пароля. И для достижения большей безопасности вы можете отключить возможность SSH-входа по паролю.
Замечание: Очень важно сохранять в тайне ваш секретный ключ. Никогда никому его не сообщайте и не теряйте его. Также никогда не перезаписывайте существующие ключи, если вы ранее использовали таковой. Вы просто-напросто потеряете беспарольный доступ по SSH к вашему серверу.
Надеюсь, что это краткое руководство по включению входа в систему без пароля достаточно простое, и вы все поняли.