Авторизация на сервере по ключам SSH
Переосмысление подключения к серверу: отказ от FTP и парольной аутентификации в пользу SSH-ключей


Что куда положить
На вашем компьютере
~/.ssh/rish_ed25519- приватный ключ. Его нельзя отправлять в чат, вставлять на сайт или передавать другому человеку.~/.ssh/rish_ed25519.pub- публичный ключ. Его можно копировать на сервер.~/.ssh/config- локальный файл с удобными короткими именами серверов.
На сервере
/root/.ssh/authorized_keys- список публичных ключей, которым разрешен вход подroot./home/<user>/.ssh/authorized_keys- список публичных ключей для входа под обычным пользователем.
authorized_keys, приватный ключ оставляем у себя на компьютере, а в локальном ~/.ssh/config записываем, каким ключом и к какому серверу подключаться.Как создать ключ
ssh-keygen -t ed25519 -C "ivan-macbook" -f ~/.ssh/rish_ed25519-C добавляет комментарий в конец публичного ключа. Вместо ivan-macbook лучше указать понятный для себя идентификатор: имя человека, устройство или назначение ключа, например ivan-macbook, admin-office или client-site-access. Потом по этому комментарию проще понять, чей ключ лежит в authorized_keys, удалить старый ключ или отозвать доступ человеку, которому он больше не нужен.~/.ssh/rish_ed25519 и ~/.ssh/rish_ed25519.pub. Первый - приватный, второй - публичный. На сервер добавляют содержимое файла с расширением .pub.ssh-keygen спросит passphrase. Можно просто нажать Enter и оставить ключ без дополнительного пароля. Можно задать пароль на сам ключ, но тогда его нужно будет помнить и вводить при использовании ключа.cat ~/.ssh/rish_ed25519.pubssh-ed25519, дальше идет длинная часть ключа, а в конце обычно комментарий, например ivan-macbook.Как создать ключ через PuTTY
Вообще я не рекомендую использовать Putty как для подключения к серверу, так и для генерирования ключей – он просто не нужен, а еще хранит ключи в своем внутреннем формате из-за чего происходит вечная путаница. Но существует просто невероятное количество руководств в интернете, которые советуют Putty как "удобную" и "простую" программу для подключения к серверу.
Конечно что же она такой не является. Интерфейс очень странный и далек от интуитивно понятного, настройки хранит в реестре и плохо подходит для переноса между компьютерами.
Но уж что есть, то есть. Кто я такой, чтобы отговаривать вас от привычного инструмента?
Вместо Putty лучше использовать родной терминал Windows или на других компьютерах те терминалы, которые вам больше нравятся (на MacOS могу посоветовать iTerm2).
Если у вас putty еще не скачан, то вот официальный адрес для скачивания (да, я знаю что они могли бы и получше подобрать домен, но уж что есть то есть):
Скачайте подходящий для вашей архитектуры вариант.
После скачивания на вашем компьютере должны появиться несколько программ, включая сам PuTTY и PuTTYgen. Для манипулирования ключами (создание и преобразование из одного формата в другой) вам понадобится именно PuTTYgen.

Вначале обязательно выберите тип ключа внизу – EdDSA. Будет выбран параметр Ed25519 – именно он вам и нужен.
После этого можно начать создание ключа с помощью кнопки Generate. От вас потребуется случайным образом дергать мышкой в этом окне, чтобы при создании ключа использовались реальные случайные числа.
Как добавить ключ на сервер
authorized_keys на сервере. Для входа под root это обычно файл /root/.ssh/authorized_keys. Для пользователя сайта - /home/<user>/.ssh/authorized_keys.ssh-copy-id:ssh-copy-id -i ~/.ssh/rish_ed25519.pub root@SERVER_IPauthorized_keys и вставьте туда публичный ключ. Публичный ключ должен занимать одну строку целиком: от ssh-ed25519 до комментария в конце. Важно не переносить строку ключа посередине и не добавлять лишние символы. Каждый ключ в authorized_keys пишется с новой строки. После последнего ключа тоже лучше нажать Enter, чтобы файл заканчивался переводом строки. Тогда, если позже кто-то добавит следующий ключ, он начнется с новой строки, а не приклеится к вашему ключу и не сломает обе записи.authorized_keys через Midnight Commander. Подключитесь к серверу, запустите mc, найдите нужный файл в папке /root/.ssh и нажмите F4 для редактирования. F2 и выйдите из редактора.Как подключаться
config подключение выглядит так:ssh -i ~/.ssh/rish_ed25519 root@SERVER_IP-i указывает, какой приватный ключ использовать для подключения. В примере SSH берет ключ из файла ~/.ssh/rish_ed25519 и пытается войти на сервер под пользователем root.Файл ~/.ssh/config
~/.ssh/config нужен, чтобы один раз описать подключение и потом входить короткой командой. Например, вместо длинной команды с IP и ключом вы пишете просто:ssh my-rish-server~/.ssh/config:Host my-rish-server
HostName 203.0.113.10
User root
Port 22
IdentityFile ~/.ssh/rish_ed25519
IdentitiesOnly yesHost- короткое имя, которое вы придумываете сами.HostName- IP-адрес или домен сервера.User- пользователь, под которым входите.Port- порт SSH, обычно22.IdentityFile- путь к приватному ключу.IdentitiesOnly yes- заставляет SSH использовать указанный ключ и не перебирать лишние ключи из агента.
ssh, но и для scp и sftp:ssh my-rish-server
sftp my-rish-server
scp ./file.txt my-rish-server:/root/RishTools делает это проще
config, в сообществе RISH появились утилиты RishMacOSTools и RishWinTools. Они помогают создавать SSH-ключи и вести файл ~/.ssh/config без ручного редактирования каждой строки.Почему мы используем SFTP вместо FTP
FTP не подходит для современной работы с сервером. В классическом FTP логин, пароль и данные могут передаваться без шифрования, поэтому его нельзя считать безопасным способом работы с сервером. Поэтому RISH не строит рабочий процесс вокруг FTP.SFTP. Несмотря на похожее название, это не "улучшенный FTP", а передача файлов поверх SSH. То есть используется тот же защищенный вход, те же пользователи и те же ключи.FTP лучше не использовать. Для файлов на сервере используйте SFTP, потому что он работает через SSH и нормально сочетается с авторизацией по ключам.Если не подключается
- Проверьте, что на сервер добавлен именно публичный ключ, файл с расширением
.pub. - Проверьте, что приватный ключ остался на вашем компьютере и путь к нему правильно указан в
IdentityFile. - Проверьте пользователя: ключ для
rootне дает автоматический вход под другим пользователем. - Проверьте права: каталог
.sshобычно должен иметь режим700, файлauthorized_keys-600. - Проверьте, что домашний каталог пользователя не доступен на запись посторонним пользователям.
- Запустите подключение с подробным выводом:
ssh -v my-rish-server. По выводу часто видно, какой ключ SSH пытается использовать.
- Руководство по установке RISH
- Резервное копирование (бэкапы)
- Установка/управление CMS/PMA
- Клонирование сайтов
- Авторизация на сервере по ключам SSH
- Что представляет собой RISH?
- Midnight Commander (MC) – курс выживания для владельцев веб-серверов
- Системные требования
- Статистика сайтов сервера
- У вас проблемы со входом на сервер?
- Почему мы не строим RISH на Ubuntu















