Ключи ssh
Создание и работа с ключами ssh.
Содержание
1 Алгоритмы шифрования ssh
1.1 Аутентификация
В SSH поддерживается четыре алгоритма аутентификации по открытым ключам:
- DSA,
- размер ключей DSA не может превышать 1024, его следует отключить
- RSA
- следует создавать ключ большого размера: 4096 бит
- ECDSA
- ECDSA завязан на технологиях NIST, его следует отключить
- Ed25519
- используется пока не везде
1.1.1 Отключение ключей у сервера sshd
- Ключи отключаются у сервера.
- Если просто удалить ключ, он будет повторно создан при перезапуске демона.
- Можно воспользоваться обходным путём с создать заведомо нерабочую символическую ссылку, которая помешает создать и использовать ключ:
1.1.2 Создание серверных ключей
- Для RSA следует создать ключ большего размера:
1.1.3 Создание клиентских ключей
- Для создания клиентских ключей лучше использовать команды:
1.2 Симметричные шифры
- Из 15 поддерживаемых в SSH алгоритмов симметричного шифрования, безопасными можно считать:
chacha20-poly1305
;aes*-ctr
;aes*-gcm
.
- Шифры
3des-cbc
иarcfour
потенциально уязвимы в силу использования DES и RC4. - Шифр
cast128-cbc
применяет слишком короткий размер блока (64 бит).
1.2.1 Конфигурация сервера
- В
/etc/ssh/sshd_config
рекомендуется добавить:1Ciphers aes256-gcm@openssh.com,aes128-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr
1.2.2 Конфигурация для клиентов
- В
/etc/ssh/ssh_config
рекомендуется добавить:
1.3 Обмен ключами
- Применяемые в SSH методы обмена ключей DH (Diffie-Hellman) и ECDH (Elliptic Curve Diffie-Hellman) можно считать безопасными.
- Из 8 поддерживаемых в SSH протоколов обмена ключами вызывают подозрения три, основанные на рекомендациях NIST:
ecdh-sha2-nistp256
;ecdh-sha2-nistp384
;ecdh-sha2-nistp521
.
- Не стоит использовать протоколы, основанные на SHA1.
1.3.1 Настройка сервера
- В
/etc/ssh/sshd_config
рекомендуется указать:1KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256
1.3.2 Настройка клиента
- В
/etc/ssh/ssh_config
рекомендуется добавить
2 Файлы ssh-ключей
По умолчанию пользовательские ssh-ключи сохраняются в каталоге
~/.ssh
в домашнем каталоге пользователя.Убедитесь, что у вас ещё нет ключа.
Файлы закрытых ключей имеют названия типа
id_<алгоритм>
(например,id_dsa
,id_rsa
).- По умолчанию закрытые ключи имеют имена:
Открытые ключи имеют дополнительные расширения
.pub
.- По умолчанию публичные ключи имеют имена:
3 Создание ключа ssh
- Ключ ssh создаётся командой:
1ssh-keygen -t <алгоритм>
- Создайте ключи:
- При создании ключа команда попросит ввести любую ключевую фразу для более надёжной защиты вашего пароля. Можно пропустить этот этап, нажав
Enter
. - Сменить пароль на ключ можно с помощью команды:
1ssh-keygen -p
4 Добавление SSH-ключа в учётную запись GitHub
- Скопируйте созданный SSH-ключ в буфер обмена командой:
1xclip -i < ~/.ssh/id_ed25519.pub
- Откройте настройки своего аккаунта на GitHub и перейдем в раздел
SSH and GPC keys
. - Нажмите кнопку
New SSH key
. - Добавьте в поле
Title
название этого ключа, например,ed25519@<hostname>
. - Вставьте из буфера обмена в поле
Key
ключ. - Нажмите кнопку
Add SSH key
.
5 Аутентификации на базе ключей SSH
- При аутентификации по ключу можно войти на удалённый хост без пароля учетной записи для удаленного хоста.
- На удалённом хосте для сервера ssh долен быть настроен вход по ключу:
5.1 Копирование открытого ключа на удалённый хост с использованием ssh-copy-id
- Скопируйте на удалённый хост открытый ключ:
1ssh-copy-id username@remote_host
5.2 Копирование открытого ключа с помощью SSH
- Можно загрузить на удалённый хост ключи с помощью стандартного метода SSH:
1cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
6 Настройка ключей
- Для совместимости необходимо настроить разные типы ключей (см. Тип ключа ssh).