Короткий ответ
SSH-доступ настраивают в три шага: создать пару ключей на своём компьютере, скопировать открытый ключ на VPS и проверить вход без пароля. Только после этого имеет смысл менять sshd_config. Любую правку конфигурации проверяйте командой sudo sshd -t и держите вторую открытую сессию.
Что такое SSH и зачем он на VPS
OpenSSH заменяет небезопасные telnet и rcp, которые передают пароль открытым текстом. Сервер sshd принимает подключения клиентов ssh и scp, поэтому через один сервис вы получаете и консоль, и копирование файлов.
Аутентификация может идти по паролю, по открытому ключу или по билетам Kerberos. Для VPS обычно выбирают ключи: их сложнее подобрать, чем пароль.
Подготовка: клиент и сервер
Клиент и сервер OpenSSH на Ubuntu ставятся пакетами openssh-client и openssh-server: sudo apt install openssh-server. На большинстве VPS сервер уже установлен, а провайдер присылает адрес и первичный доступ.
Aeza предлагает Ubuntu, Debian, AlmaLinux, Rocky Linux, CentOS, Arch Linux, Alpine и Windows Server, у Timeweb Cloud тоже есть серверы с Linux. Какой сервер взять, поможет материал как выбрать VPS для сайта.
Пошаговая настройка входа по ключу
- На своём компьютере выполните ssh-keygen -t ed25519 и задайте парольную фразу.
- Проверьте, что в каталоге ~/.ssh появились файл закрытого ключа и файл открытого ключа с расширением .pub.
- Отправьте открытый ключ на сервер командой ssh-copy-id username@target_machine, подставив своего пользователя и адрес сервера.
- Убедитесь, что права на authorized_keys позволяют запись только владельцу: chmod go-w .ssh/authorized_keys.
- Подключитесь командой ssh username@target_machine и проверьте, что пароль сервера больше не запрашивается.
Ubuntu рекомендует ed25519 из-за короткого ключа и небольших вычислительных затрат. Альтернатива: RSA с ключом 4096 бит, команда ssh-keygen -t rsa -b 4096.
Подключение из Windows, macOS и Linux
На Linux и macOS подключение идёт из обычного терминала: ssh username@адрес_сервера. Ключ создаётся той же командой ssh-keygen -t ed25519, а открытый ключ добавляется через ssh-copy-id, которая входит в OpenSSH-клиент.
В Windows есть клиент OpenSSH: команды ssh и ssh-keygen работают в PowerShell и Windows Terminal. Ключ создают командой ssh-keygen, затем запускают службу ssh-agent и добавляют ключ командой ssh-add. Открытый ключ копируют в файл authorized_keys в каталоге .ssh пользователя на сервере.
Несколько ключей и файл config
Если у вас несколько серверов, разные ключи для них задают в файле ~/.ssh/config. Так вы не вводите путь к ключу вручную при каждом подключении.
Для нестабильного соединения используйте tmux или screen: сессия продолжает работать на сервере после обрыва, и вы подключаетесь к ней снова.
Конфигурация sshd и проверка перед перезапуском
Настройки сервера лежат в /etc/ssh/sshd_config и в фрагментах /etc/ssh/sshd_config.d/*.conf. В Ubuntu файлы из sshd_config.d переопределяют основной файл, потому что OpenSSH использует первое заданное значение.
Перед правкой сделайте копию: sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original. После правки проверьте файл командой sudo sshd -t и только затем выполните sudo systemctl restart ssh.service.
Запрет пароля и root в sshd_config
По умолчанию PasswordAuthentication равен yes, то есть вход по паролю разрешён. В современных версиях OpenSSH PermitRootLogin по умолчанию равен prohibit-password: root может войти по ключу, но не по паролю. Значение no полностью запрещает вход root.
Чтобы отключить вход по паролю, задают PasswordAuthentication no. Делайте это только после того, как убедились, что вход по ключу работает: иначе вы закроете себе доступ. Проверьте файл командой sudo sshd -t и перезапустите службу.
Для защиты от подбора пароля можно поставить Fail2ban: он следит за журналами, находит повторяющиеся неудачные попытки входа и блокирует адрес нарушителя на заданное время. Свои настройки хранят в /etc/fail2ban/jail.local, а для SSH включают секцию [sshd].
Таблица: способы входа
| Способ | Что нужно | Чем хорош | На что обратить внимание |
|---|---|---|---|
| Пароль | Логин и пароль от провайдера | Работает сразу после выдачи сервера | Пароль можно подобрать |
| Ключ ed25519 | ssh-keygen, ssh-copy-id | Короткий ключ, вход без пароля | Закрытый ключ нужно хранить |
| Ключ RSA 4096 | ssh-keygen -t rsa -b 4096 | Совместим со старым ПО | Ключ длиннее |
Копирование файлов и проверка после настройки
Сервер sshd принимает не только консольные подключения, но и копирование файлов через scp: после аутентификации он запускает защищённую передачу между сервером и вашим компьютером. Поэтому отдельный FTP-сервис для служебных файлов не нужен.
Когда вход по ключу заработал, пройдите короткий список проверок. Проверьте права на authorized_keys. Убедитесь, что вторая сессия открывается без пароля.
Сохраните копию sshd_config.original. Запомните, где лежит закрытый ключ.
Что делать, если вход не работает
Если вход по ключу не заработал, посмотрите журнал службы на сервере: sudo journalctl -fu ssh.service. Чаще всего причина в правах на authorized_keys или в ошибке конфигурации.
Если вы меняли sshd_config и потеряли доступ, откройте консоль в панели провайдера и верните файл sshd_config.original. Поэтому копию всегда делают заранее.
Где держать сервер и как это связано с 152-ФЗ
Персональные данные граждан РФ при сборе должны записываться и храниться в базах данных на территории России (ч. 5 ст. 18 152-ФЗ).
Если на VPS будет форма заявок или база клиентов, выбирайте локацию в России. Подробности: хостинг в России и 152-ФЗ.
Timeweb Cloud указывает локации Москва, Санкт-Петербург, Новосибирск, Казахстан, Нидерланды, Германия и Нью-Йорк. У Aeza в списке есть Москва и Санкт-Петербург, а также Варшава, Франкфурт, Париж, Амстердам и другие. Сравнение провайдеров: Timeweb или Aeza.
Партнёрские ссылки
Ссылки на Timeweb Cloud и Aeza на этом сайте партнёрские: сайт получает вознаграждение, цена для пользователя не меняется.
Читайте также: