Библиотека сайта rus-linux.net
Организация доступа по SSH к удалённому серверу без пароля
Оригинал: Password less SSH login setup on Linux
Автор: Arnab Satapathi
Дата публикации: 19 сентября 2017 г.
Перевод: В.Костромин
Дата перевода: 24 сентября 2017 г.
Короткий пароль не безопасен, это просто кошмар с точки зрения безопасности, а длинный пароль для входа убивает производительность. В этой статье будет показано, как организовать доступ по 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 username@remote.host.name
Может быть более понятен будет следующий пример:
ssh-copy-id root@192.168.1.6
У вас будет запрошен текущий пароль для того, чтобы провести аутентификацию вас как законного пользователя, введите его. Вам будет предложено подтвердить подлинность удаленного сервера, просто введите yes.
Существует альтернативный вариант: вы можете залогиниться на удаленный сервер и создать
текстовый файл в каталоге the ~/.ssh
, например, выполнив следующую команду.
nano ~/.ssh/authorized_keys
Скопируйте в этот файл содержимое вашего файла ~/.ssh/id_rsa.pub
на вашей локальной
машине, сохраните файл и выйдите из текстового редактора.
3. Тестирование безпарольного доступа по SSH и замечания
Теперь вы уже должны иметь возможность подключиться к удаленному серверу не вводя пароля. И для достижения большей безопасности вы можете отключить возможность SSH-входа по паролю.
Замечание: Очень важно сохранять в тайне ваш секретный ключ. Никогда никому его не сообщайте и не теряйте его. Также никогда не перезаписывайте существующие ключи, если вы ранее использовали таковой. Вы просто-напросто потеряете беспарольный доступ по SSH к вашему серверу.
Надеюсь, что это краткое руководство по включению входа в систему без пароля достаточно простое, и вы все поняли. Если у вас есть какие-либо предложения или вопросы, задайте их в комментариях (прим.: имеются в виду комментарии к оригинальной статье).
Если вы не очень хорошо знакомы с SSH, вы можете почитать следующие статьи на нашем сайте:
- Администрирование систем Linux. Клиент и сервер ssh
- Приемы работы в Ubuntu. Совет # 95: Дистанционное администрирование вашего сервера
- Как сгенерировать открытый/закрытый SSH-ключ в Linux
- Как в Linux получить доступ через SSH с помощью одноразовых паролей
- Используем SSH из браузера