Генерация RSA, ECDSA, EdDSA ключей. Настройка доступа к серверу по SSH ключу
Настройка доступа к удаленному серверу по SSH ключам RSA, ECDSA, EdDSA.
Добавление алиаса в ~/.ssh/config для простого подключения к серверу по заданным настройкам.
Выбирая между RSA 2048/4096 и Ed25519 ключами - это компромисс между производительностью и совместимостью.
У RSA полная поддержка ssh-клиентами, в то время как EdDSA работает намного быстрее и обеспечивает тот же уровень безопасности с ключами значительно меньшего размера.
Пока стойкость ключа достаточно хороша, можно использовать ключ любого алгоритма.
Используйте ключи с новыми алгоритмами ECDSA, EdDSA (Ed25519)!
Ключи RSA/DSA устаревают. Github перестал поддерживать RSA/DSA ключи. Используйте ключи ECDSA, EdDSA.
Генерация своего основного ключа без пароля (no passphrase, опция: -N ""):
ssh-keygen -t ecdsa -b 521 -N "" -C "you@email"
ssh-keygen -t ed25519 -N "" -C "you@email"
Генерация дополнительного ключа для сервиса:
ssh-keygen -t ecdsa -b 521 -q -N "" -C "service,user" -f ~/.ssh/id_ecdsa_service_user
ssh-keygen -t ed25519 -q -N "" -C "service,user" -f ~/.ssh/id_ed25519_service_user
Генерация и настройка ssh ключей
Генерация ключей и настройка доступа к серверу по SSH:
- Генерируем пару RSA ключей (без ввода passphrase):Можете пропустить этот шаг и использовать уже существующие ключи.. Ключи нужно искать в каталоге
~/.ssh/
Обычно они называютсяid_rsa
и публичный (который можно показывать) -id_rsa.pub
.ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_servicename -C "key description" -q -N ""
- Отправляем публичный ключ на сервер:
ssh-copy-id -i ~/.ssh/id_rsa_servicename.pub -o PubkeyAuthentication=no '-p 22 user@X.X.X.X'
Если не получается скопировать публичный ключ по ssh-copy-id.
Копируем публичный ключ на сервер вручную, если не получается скопировать с помощью ssh-copy-id.
Заходим на сервер по паролю:
Добавляем строку с содержимым файла публичного ключа id_rsa_servicename.pub в файл /home/user/.ssh/authorized_keys:ssh -o PubkeyAuthentication=no user:password@X.X.X.X
mkdir ~/.ssh chmod -R 755 ~/.ssh/ nano .ssh/authorized_keys # добавьте свой .pub ключ и сохраните файл Ctrl+O, Ctrl+X chmod 644 .ssh/authorized_keys
ssh_config
Если у вас несколько ssh-ключей для авторизации на разных серверах/сервисах - можно связать ключи с хостами в файле ~/.ssh/config
Пример настройки конфига ~/.ssh/config:
host server-alias
Hostname X.X.X.X
Port 22
User USERNAME
IdentityFile ~/.ssh/id_rsa_servicename
#RemoteCommand cd /var/www/2ip.fun/; exec bash --login
RemoteCommand cd /var/www/; $SHELL -il
RequestTTY yes
Примечание
Удаления с локалки ранее принятого "серверного ключа" из файла ~/.ssh/known_hosts:
ssh-keygen -R server.domain
ssh-keygen -R X.X.X.X
Также нужно очистить и ключ для IP.
"Серверный ключ" хранится в /etc/ssh/ssh_host_rsa_key и /etc/ssh/ssh_host_rsa_key.pub.
Внимание!
Если настраиваете ssh-сервер - меняйте дефолтный 22 порт:
sed -Ei 's|^#?Port [0-9]+|Port XXXX|g' /etc/ssh/sshd_config; grep ^Port /etc/ssh/sshd_config; sudo systemctl restart sshd
#linux #ubuntu #ssh #lamp #ssh-keygen #rsa #dsa