Ключи SSH (Secure Shell) — это надёжный и безопасный способ аутентификации при подключении к удалённым системам без использования традиционных паролей. В отличие от паролей, которые часто уязвимы для атак методом перебора, ключи SSH — это криптографические ключи, которые обеспечивают дополнительный уровень безопасности и гораздо сложнее поддаются взлому. Это делает ключи SSH идеальным выбором для разработчиков, администраторов и всех, кто управляет конфиденциальными средами или средами с высоким уровнем доступа.
В этой статье описаны все основные этапы создания и настройки SSH-ключей в системе Ubuntu. Сначала мы создадим пару SSH-ключей, а затем рассмотрим способы передачи открытого ключа на удалённый сервер, в том числе автоматизированные и ручные. Кроме того, мы расскажем, как настроить вход по SSH без пароля для ещё более удобного доступа. К концу этого руководства у вас будет полностью настроенная система SSH, которая обеспечит безопасный, эффективный и беспарольный доступ к вашему серверу Ubuntu. Независимо от того, являетесь ли вы новичком в работе с SSH или просто хотите освежить свои знания, эти шаги упростят настройку и повысят безопасность вашего сервера.
Откройте терминал: на вашем локальном компьютере найдите и откройте приложение «Терминал». Если вы используете графический пользовательский интерфейс, терминал обычно можно найти в меню приложений или использовать сочетание клавиш (например, Ctrl + Alt + T во многих дистрибутивах Linux).
Создание пары ключей: в терминале введите приведенную ниже команду для создания новой пары ключей SSH:
ssh-keygen -t rsa -b 4096
Укажите расположение ключа: после ввода команды вам будет предложено выбрать место для сохранения новой пары ключей SSH. По умолчанию она будет сохранена в каталоге ~/.ssh/ с именем id_rsa для закрытого ключа и id_rsa.pub для открытого ключа. Если вы нажмете Enter, не введя другой путь, будут использованы эти значения по умолчанию. Если вы хотите использовать другое имя или расположение, вы можете указать его на этом этапе. Просто убедитесь, что вы помните, где сохранили ключи для дальнейшего использования.
Добавление парольной фразы (необязательно): Далее у вас будет возможность добавить парольную фразу к вашему закрытому ключу. Этот шаг является необязательным, но настоятельно рекомендуется для усиления защиты. Добавление парольной фразы означает, что даже если кто-то получит ваш закрытый ключ, ему также понадобится парольная фраза для его использования. Вам нужно будет вводить эту парольную фразу при каждом использовании ключа, если только вы не добавите ключ в SSH-агент, который запоминает вашу парольную фразу.
После выполнения этих действий вы создадите открытый ключ (id_rsa.pub) и закрытый ключ (id_rsa), которые будут храниться в каталоге .ssh на вашем локальном компьютере. Эти ключи являются основой для безопасной аутентификации SSH, обеспечивая зашифрованное подключение к удалённым серверам.
После создания пары ключей SSH следующим важным шагом будет копирование открытого ключа на ваш сервер Ubuntu. Это позволит вам устанавливать безопасные соединения без пароля. Для этого есть несколько способов, каждый из которых имеет свои преимущества.
Выполните команду ssh-copy-id: самый простой и эффективный способ скопировать ваш открытый ключ на сервер — использовать команду ssh-copy-id. Эта команда автоматизирует процесс, делая его менее подверженным ошибкам. Введите в терминале приведенную ниже команду:
ssh-copy-id имя_пользователя@server_ip
Замените имя_пользователя на своё реальное имя пользователя на сервере, а ip_сервера на IP-адрес сервера.
Аутентификация: после выполнения команды вам будет предложено ввести пароль для сервера. Этот шаг важен, так как он подтверждает ваше распознавание и обеспечивает доступ к серверу. После успешной аутентификации скрипт ssh-copy-id автоматически копирует ваш открытый ключ в файл ~/.ssh/authorized_keys на сервере. Это позволяет серверу распознавать ваш ключ и обеспечивает безопасное подключение без необходимости вводить пароль в будущем.
Если скрипт ssh-copy-id недоступен, вы всё равно можете скопировать свой открытый ключ вручную. Хотя этот процесс требует выполнения нескольких дополнительных шагов, он не менее эффективен.
Отображение содержимого открытого ключа: сначала вам нужно просмотреть содержимое вашего открытого ключа. Это можно сделать, введя в терминале приведенную ниже команду:
cat ~/.ssh/id_rsa.pub
Эта команда отобразит ваш открытый ключ на экране терминала.
Скопируйте вывод: внимательно выделите и скопируйте весь отображаемый текст ключа. Убедитесь, что в тексте нет лишних пробелов или новых строк, так как это может вызвать проблемы при добавлении ключа на сервер.
Войдите на сервер и создайте файл ключа: затем вам нужно войти на сервер, используя существующий метод аутентификации (имя пользователя и пароль). После входа проверьте, существует ли каталог ~/.ssh . Если нет, создайте его, выполнив команду:
mkdir -p ~/.ssh
Затем создайте или отредактируйте файл authorized_keys, чтобы добавить свой открытый ключ. Используйте следующую команду:
echo "your-public-key" >> ~/.ssh/authorized_keys
Не забудьте заменить ваш-открытый-ключ на фактический открытый ключ, который вы скопировали ранее.
Убедитесь, что установлены правильные разрешения: правильные разрешения имеют решающее значение для безопасности. Установите соответствующие разрешения для каталога .ssh и файла authorized_keys с помощью следующих команд:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
Это гарантирует, что только ваш пользователь будет иметь доступ к файлам конфигурации SSH, что помогает защитить их от несанкционированного доступа.
Другой эффективный способ копирования открытого ключа — сочетание команды cat с SSH. Этот подход позволяет перенести ключ за один шаг, что может быть особенно полезно для пользователей, предпочитающих упрощённые процессы. Введите приведённую ниже команду в своём локальном терминале:
cat ~/.ssh/id_rsa.pub | ssh username@server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
В этой команде часть cat ~/.ssh/id_rsa.pub считывает ваш открытый ключ, а | (канал) отправляет вывод в команду SSH. Команда SSH входит в систему на вашем сервере и создаёт каталог ~/.ssh, если он ещё не существует, а затем добавляет ваш открытый ключ в файл authorized_keys. Этот метод быстрый и позволяет избежать необходимости вручную копировать и вставлять содержимое ключа, что делает его отличным выбором для пользователей, которые хотят упростить процесс настройки.
После успешного копирования открытого ключа любым из этих способов вы сможете безопасно подключаться к серверу Ubuntu без необходимости каждый раз вводить пароль.
После успешного копирования открытого ключа на сервер вы сможете войти в систему без ввода пароля. Этот упрощённый метод повышает безопасность и упрощает рабочий процесс, особенно если вы часто обращаетесь к серверу.
Чтобы войти в систему, используйте команду SSH в вашем терминале:
ssh имя_пользователя@server_ip
Замените имя_пользователя на своё фактическое имя пользователя на сервере, а ip_сервера — на IP-адрес сервера. Эта команда инициирует SSH-соединение с удалённым сервером с использованием вашего открытого ключа для аутентификации.
Что происходит дальше:
Чтобы повысить удобство работы с SSH-сессиями, вы можете настроить систему так, чтобы она запоминала ваш закрытый ключ в памяти. Эта настройка позволяет входить на удалённый сервер без необходимости каждый раз вводить кодовую фразу. Это значительно упрощает рабочий процесс, особенно если вы регулярно подключаетесь к нескольким серверам.
Прежде чем добавлять закрытый ключ, необходимо запустить SSH-агент. SSH-агент — это фоновая программа, которая управляет вашими SSH-ключами и парольной фразой. Чтобы запустить агент, выполните в терминале следующую команду:
eval "$(ssh-agent -s)"
Эта команда запускает SSH-агент и устанавливает соответствующие переменные платформы для вашего сеанса. Вы должны увидеть подтверждающее сообщение с идентификатором процесса агента, указывающее на успешное выполнение.
Как только агент SSH запустится, вы добавите свой закрытый ключ в агент. Это позволит агенту хранить ваш ключ в памяти в течение всего сеанса. Чтобы добавить ключ, используйте приведённую ниже команду:
ssh-add ~/.ssh/id_rsa
Если вы сохранили закрытый ключ под другим именем или в другом месте, убедитесь, что вы правильно указали путь. После выполнения этой команды вам будет предложено ввести парольную фразу для закрытого ключа в последний раз. После ввода агент сохранит ваш ключ в памяти.
Для более удобной работы вы можете настроить SSH-агент так, чтобы он запускался автоматически при входе в систему. Если вы используете дистрибутив Linux с графическим интерфейсом, вы часто можете найти в настройках среды рабочего стола параметры для управления приложениями, запускаемыми при входе в систему. Вот общий подход:
1. Измените конфигурацию оболочки: откройте файл конфигурации оболочки (например, ~/.bashrc, ~/.bash_profile или ~/.zshrc) в текстовом редакторе.
2. Добавьте команду SSH-агента: добавьте следующие строки в конец файла, чтобы SSH-агент автоматически запускался при входе в систему:
# Запустить SSH-агент eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_rsa
3. Перезагрузите свою конфигурацию: после сохранения изменений перезагрузите конфигурацию оболочки, чтобы применить их.
source ~/.bashrc # или соответствующий файл, который вы редактировали
Использование SSH-ключей в Ubuntu — это не только вопрос безопасности, но и повышение эффективности рабочего процесса. С помощью пары SSH-ключей вы получаете мощный и безопасный способ подключения к удалённым серверам без необходимости запоминать или вводить пароли. Это особенно полезно для тех, кто часто подключается к нескольким серверам, так как это сводит к минимуму необходимость в повторном входе в систему и снижает риски, связанные с управлением паролями.
Следуя инструкциям в этом руководстве — от создания пары ключей SSH и передачи открытого ключа до настройки входа без пароля, — вы создадите безопасный и надёжный способ подключения к серверу Ubuntu. Эта настройка идеально подходит для повседневных задач, таких как разработка, развёртывание или плановое обслуживание сервера, где безопасность и простота доступа имеют решающее значение. С помощью аутентификации по ключам SSH вы используете надёжную меру безопасности, которая широко применяется в отрасли, повышая как свою личную продуктивность, так и общую защиту своих систем.