Published: Sat 23 November 2024
By pp
In python .
tags: pp ssh
статья про создание ключа ssh, добавление его на удаленный сервер и профил ssh для этого
Создание SSH-ключа, добавление его на удалённый сервер и настройка SSH-профиля — базовая практика для безопасного и удобного удалённого доступа. Ниже подробная инструкция в виде статьи.
Создание SSH-ключа, добавление на сервер и настройка профиля SSH
1. Генерация SSH-ключа
SSH-ключ позволяет аутентифицироваться на сервере без пароля, используя криптографию.
Открой терминал на локальной машине и выполни команду:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
-t rsa — тип ключа RSA (можно использовать также ed25519 при поддержке).
-b 4096 — длина ключа (чем больше, тем безопаснее).
-C — комментарий для идентификации (обычно email).
При выполнении команда спросит, куда сохранить ключ (по умолчанию ~/.ssh/id_rsa), можешь принять значение по умолчанию нажатием Enter.
По желанию введи парольную фразу (passphrase) для повышения безопасности — при каждом использовании ключа потребуется ввод этого пароля.
После генерации в папке ~/.ssh/ появятся два файла:
id_rsa — приватный ключ (хранить в секрете!).
id_rsa.pub — публичный ключ, который нужно добавить на сервер.
2. Добавление публичного ключа на удалённый сервер
Для того чтобы разрешить доступ с помощью ключа, публичный ключ нужно добавить в файл ~/.ssh/authorized_keys пользователя на сервере.
Есть удобная команда:
ssh-copy-id user@remote-server
Она автоматически скопирует содержимое ~/.ssh/id_rsa.pub на сервер и добавит в ~/.ssh/authorized_keys.
Если ssh-copy-id недоступна, сделай это вручную:
Если папки .ssh нет, создай её:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "вставь_сюда_содержимое_id_rsa.pub" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
3. Настройка профиля SSH клиента (~/.ssh/config)
Чтобы не писать каждый раз полный адрес, пользователя и путь к ключу, создай или отредактируй файл ~/.ssh/config:
Host myserver
HostName remote-server.example.com
User user
Port 22
IdentityFile ~/.ssh/id_rsa
ForwardAgent yes
Host myserver — псевдоним для подключения.
HostName — реальный адрес сервера.
User — имя пользователя на сервере.
Port — порт SSH (22 по умолчанию).
IdentityFile — путь к приватному ключу.
ForwardAgent — позволяет агенту передавать ключ при ssh-переходах (опционально).
Теперь подключиться можно командой:
без указания пользователя, адреса и ключа.
Итоги и безопасность
Приватный ключ надо хранить в безопасности — он даёт полный доступ.
Пользуйся паролем для ключа, если опасаешься кражи.
Если потерял ключ или подозреваешь компрометацию — удаляй соответствующую строку из authorized_keys на сервере.
Рекомендуется использовать современный тип ключа ed25519: ssh-keygen -t ed25519 -C "email"
Эта процедура — базис для безопасной работы с серверами и автоматизации, например, деплоя сайтов с помощью rsync и других средств по SSH.
Если нужен пример скрипта или помощь с конкретной системой — обращайтесь.