Мы покажем вам, как настроить SSH-ключи на Ubuntu 16.04. SSH или Secure SHELL – самый популярный и надежный криптографический сетевой протокол на базе UNIX. Он может использоваться для безопасной передачи данных, удаленных серверов, удаленного выполнения команд и многих других безопасных сетевых сервисов между двумя сетевыми серверами. Обычно аутентификация с паролем используется для подключения к удаленному серверу через SSH, но в этой статье мы покажем вам, как войти в ваш Ubuntu 16.04 VPS с помощью SSH-ключей. Мы создадим пару ключей (частный и открытый ключ), поместим закрытый ключ на ваш сервер, а затем воспользуемся локально сохраненным личным ключом, чтобы получить доступ к вашему серверу. Этот метод обеспечивает более безопасный способ подключения к вашему серверу, а не просто использование пароля.
Во время этого урока мы также объясним, как создать пару ключей SSH как на Linux, так и на операционной системе Windows.
1. Создание SSH-ключей на Ubuntu 16.04
Чтобы создать пару ключей SSH, просто запустите следующую команду с терминала на локальном компьютере под управлением Ubuntu 16.04:
ssh-keygen
Вы можете просто нажать Enter, чтобы оставить значения по умолчанию для всех вопросов. При желании вы также можете установить кодовую фразу, чтобы добавить дополнительный уровень безопасности, или просто нажмите Enter еще раз, если вы этого не хотите.
Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:2QB/eJ39/4N7Q3PRSghNJmglX6hh2pSqQ3uGHhfd7Og root@rosehosting The key's randomart image is: +---[RSA 2048]----+ | . .+o++ | | oB+o=.o | | O+=+.o.. .| | . + +*o . .o.| | . + .So. . .o| | * + . . .oo| | . * . o +| | . E . +.| | .o +| +----[SHA256]-----+
Это создаст закрытый и открытый 2048 битовый ключ (id_rsa и id_rsa.pub) в каталоге /root/.ssh/ в вашей локальной системе.
Загрузка открытого ключа на сервер Ubuntu 16.04 с идентификатором ssh-copy-id
Следующий шаг требует, чтобы вы загружали сгенерированный открытый ключ на ваш удаленный сервер Ubuntu.
Самый простой способ – использовать утилиту ssh-copy-id. Чтобы это работало, вы должны иметь возможность подключаться к вашему серверу через SSH с использованием аутентификации по паролю.
Затем вы можете использовать следующую команду для загрузки открытого ключа на ваш удаленный сервер:
ssh-copy-id root@remote_server
Вам будет предложено ввести пароль пользователя (в нашем примере это пароль root) и нажмите Enter. После установления соединения содержимое id_rsa.pub (открытого ключа) будет скопировано в файл /root/ssh/authorized_keys на удаленном сервере.
Должен отображаться следующий вывод:
Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'root@remote-host'" and check to make sure that only the key(s) you wanted were added.
Теперь вы должны иметь возможность аутентифицироваться на своем сервере Ubuntu, используя ваши SSH-ключи.
Загрузка открытого ключа на сервер Ubuntu вручную
Если инструмент ssh-copy-id недоступен в вашей системе, вы можете войти на свой сервер и сделать это вручную.
Сначала подключите свой сервер через SSH с помощью:
ssh root@remote_server
После подключения вам нужно будет создать новый .ssh-каталог на удаленном сервере с помощью следующей команды:
mkdir /root/.ssh
Затем вам нужно скопировать открытый ключ в файл authorized_keys на удаленном сервере. Вы можете создать и затем добавить содержимое открытого ключа с помощью текстового редактора:
nano /root/.ssh/authorized_keys
Вам также необходимо открыть файл конфигурации SSH:
nano /etc/ssh/sshd_config
и убедитесь, что существуют следующие строки и не комментируются:
RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile %h/.ssh/authorized_keys
Сохраните изменения и перезапустите службу SSH:
systemctl restart ssh
Вот и все. С этого момента вы будете использовать SSH-ключи каждый раз, когда пытаетесь подключиться к удаленному серверу.
2. Создание ключей SSH в системе на базе Windows с PuTTY и PuTTYGen
Если вы используете операционную систему Windows на своем локальном компьютере, вам понадобится PuTTY для подключения к вашему серверу через SSH и PuTTYgen для генерации ваших SSH-ключей. Вы можете скачать их здесь (https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html).
Чтобы сгенерировать SSH-ключи, запустите PuTTYGen на своем компьютере.
Внизу вы можете выбрать количество бит для сгенерированного ключа. Введите 4096 и нажмите «Создать». Начните перемещать мышь вокруг пустой области на экране PuTTYgen, чтобы создать уникальный ключ, основанный на вводе движения мыши.
Когда зеленый индикатор прогресса заполнится, откроется открытый ключ. Вы можете скопировать их ключ и сохранить его внутри .txt-файла на вашем компьютере.
Чтобы сохранить закрытый ключ, вам нужно нажать кнопку Сохранить закрытый ключ. Кроме того, вы также можете задать ключевую фразу для своего закрытого ключа.
Теперь вы можете открыть PuTTY и назначить местоположение своего закрытого ключа, нажать SSH в меню Connection и затем нажать Auth. Нажмите кнопку обзора и введите местоположение сохраненного файла закрытого ключа.
Затем нам нужно загрузить открытый ключ на ваш сервер. Для этого нажмите «Сессия», введите свой IP-адрес и номер порта SSH вашего сервера, выберите SSH для типа подключения и нажмите «Открыть».
Вам будет предложено ввести имя пользователя и пароль. Вы можете войти в систему как пользователь root, используя свой пароль root.
После входа на ваш сервер сначала создайте каталог .ssh:
mkdir /root/.ssh
Затем создайте файл authorized_keys внутри каталога .ssh и добавьте содержимое своего открытого ключа внутри этого файла:
nano /root/.ssh/authorized_keys
Вы также можете открыть файл конфигурации SSH на своем сервере с помощью:
nano /etc/ssh/sshd_config
и убедитесь, что существуют следующие строки и не комментируются:
RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile %h/.ssh/authorized_keys
Если какие-либо изменения были внесены, не забудьте перезапустить службу sshd:
systemctl restart ssh
При этом ключи SSH были успешно сконфигурированы. Теперь вы можете отключиться от своего сервера и выйти из PuTTY. В следующий раз, когда вы попытаетесь подключиться к вашему серверу, PuTTY будет использовать открытый ключ, который вы настроили для установления соединения.
3. Отключить аутентификацию паролей
После того, как вы успешно настроили SSH-ключи, используя любой из указанных выше способов, и убедитесь, что вы можете войти на свой сервер с использованием аутентификации на основе SSH-ключа, вы можете отключить аутентификацию на основе пароля на своем сервере. Это добавит дополнительный уровень безопасности и предотвратит все атаки грубой силы на ваш сервер.
Чтобы отключить аутентификацию на основе пароля, откройте файл конфигурации SSH с помощью:
nano /etc/ssh/sshd_config
И раскомментируйте следующую строку и установите ее значение на «no»:
PasswordAuthentication no
Перезапустите службу sshd с помощью:
systemctl restart ssh That’s it. You have successfully set up SSH keys on your Ubuntu 16.04 VPS.