Соберите команду ssh-keygen
Выберите нужный ключ — Ed25519, ключ на аппаратном токене FIDO, ECDSA или RSA, — и страница напишет точную команду ssh-keygen, объяснит каждый флаг в ней и даст блок для ~/.ssh/config, который этим ключом пользуется. Для macOS и Linux каждый вариант ключа Ed25519, ECDSA и RSA, который она предлагает, прогнан через ssh-keygen 10.2, и получившийся ключ сверен с тем, что обещает страница. У команд для аппаратных ключей проверено только то, что ssh-keygen принимает их параметры: без токена ключ не создать.
Парольную фразу страница не спрашивает никогда. Её спросит ssh-keygen в вашем терминале — единственном месте, где её стоит набирать.
Выберите ключ
Команды
- Установите OpenSSH из Homebrew —
ssh-keygenиssh, которые идут с macOS, с аппаратным ключом не работают:brew install openssh - Убедитесь, что
~/.sshсуществует:mkdir -p -m 700 ~/.ssh - Создайте ключ:
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519Скопировано.
- Добавьте это в
~/.ssh/config:Заполните хост выше, чтобы получить блок для
~/.ssh/config.Сначала — эта строка, в самое начало файла, выше всех строк
HostиMatch.UseKeychain— собственная настройка Apple; стоя первой, эта строка велит любому другому OpenSSH — от Homebrew или тому же файлу в Linux — пропустить её, а не отвергнуть весь файл. Ниже она действовала бы только внутри блока над ней. Если файл уже начинается со строкиIgnoreUnknown, допишитеUseKeychainв неё через запятую: считается только первая такая строка.IgnoreUnknown UseKeychainСкопировано.
Затем этот блок — где угодно ниже, например в конец файла:
Скопировано.
- Положите публичный ключ на сервер:
ssh-copy-id -i ~/.ssh/id_ed25519.pub server.example.com - Проверьте отпечаток — ту же строку sshd пишет в журнал сервера, когда этим ключом входят, и её же печатает инструмент отпечатков:
ssh-keygen -lf ~/.ssh/id_ed25519.pub
Что делает каждый флаг
-t ed25519— тип ключа. Ed25519 ssh-keygen делает по умолчанию с OpenSSH 9.5: публичный ключ в 68 символов, быстрая подпись, настраивать нечего.-f— куда записать приватный ключ. Публичный ляжет рядом, с .pub на конце.
Что стоит знать
- Если файл уже есть, ssh-keygen спросит, перезаписать ли его. Отвечайте n, если не собирались менять этот ключ.
Какой тип ключа
Ed25519, если ничто не мешает. Это умолчание ssh-keygen с OpenSSH 9.5, OpenSSH принимает его с версии 6.5 от января 2014 года, и выбирать в нём нечего. RSA на 3072 бита и больше — для серверов и сетевых устройств старше него; ECDSA — для политик, которые требуют кривых NIST.
Ключ на аппаратном токене — ed25519-sk или ecdsa-sk — держит приватную половину на устройстве: файл в ~/.ssh без токена бесполезен, и каждое использование требует касания. Нужен OpenSSH 8.2 или новее на обеих сторонах. ecdsa-sk работает с большим числом токенов; для ed25519-sk нужен токен, умеющий Ed25519. На Mac у системных ssh-keygen и ssh поддержки FIDO нет, поэтому страница собирает команду для OpenSSH от Homebrew.
Парольная фраза и круги KDF
Фраза шифрует файл приватного ключа, и скопированный файл — из резервной копии, из синхронизируемой папки, с потерянного ноутбука — ключом не становится. ssh-keygen превращает фразу в ключ шифрования через bcrypt_pbkdf, повторённый -a раз. Умолчание — 24 с OpenSSH 9.4, хотя страница руководства до сих пор пишет 16; ssh-keygen 10.2 пишет 24.
Больше кругов — медленнее каждая попытка у того, у кого файл, и медленнее каждая разблокировка у вас. Замер 24 сентября 2026 года на Apple M5 Pro с ssh-keygen 10.2: 24 круга открываются примерно за 0,2 секунды, 100 — за 0,75, 200 — за 1,5. У старого формата PEM (-m PEM) кругов нет вовсе: фраза проходит один круг MD5, так что берите его только для программ, которые не читают собственный формат OpenSSH.
Когда ключ создан
ssh-copy-id дописывает публичный ключ в ~/.ssh/authorized_keys на сервере и создаёт файл с правами, которых ждёт sshd. В Windows ssh-copy-id нет, поэтому вариант для PowerShell передаёт ключ через сам ssh.
IdentitiesOnly yes в блоке конфига заставляет ssh предлагать этому хосту только этот ключ, а не все, какие найдёт. Сервер считает каждый предложенный ключ попыткой, и лишние несколько заканчиваются «Too many authentication failures» раньше, чем дойдёт до нужного.
Вопросы, которые задают на самом деле
Эта страница видит мою парольную фразу?
Нет, и не может: поля для неё нет. Если фраза выбрана, в команде нет -N, и ssh-keygen спросит её у вас в терминале. Сама страница ничего никуда не отправляет — ни fetch, ни XMLHttpRequest, ни отправки формы, ни счётчиков.
Ed25519 или RSA?
Ed25519, если сервер или устройство его принимает. Это умолчание ssh-keygen с OpenSSH 9.5, публичный ключ — 68 символов, выбирать длину не нужно. Если нужен RSA, берите 3072 бита и больше.
Что делает -a в ssh-keygen?
Задаёт, сколько кругов bcrypt_pbkdf превращают парольную фразу в ключ, которым шифруется файл приватного ключа. Чем больше кругов, тем медленнее подбор у того, кто украл файл. Умолчание — 24 с OpenSSH 9.4, и важно оно только для ключа с фразой.
Что такое резидентный ключ FIDO?
-O resident хранит дескриптор ключа на самом токене, и на другом компьютере ssh-keygen -K скачает его снова — копировать файл не придётся. То же сможет любой, у кого токен и его PIN, поэтому сначала задайте PIN.
Почему в команде для PowerShell нет -N?
Потому что пустой аргумент PowerShell передаёт по-разному до и после версии 7.3, и написания пустого -N, которое работало бы в обеих, нет. Нажмите Enter дважды, когда ssh-keygen спросит фразу, — результат тот же.
Сможет ли Conchshell пользоваться таким ключом?
Да, ключами Ed25519, ECDSA и RSA в собственном формате OpenSSH — его ssh-keygen пишет, если не добавить -m PEM, — с парольной фразой и без: он читает файл приватного ключа напрямую. Ключ RSA, записанный с -m PEM, тоже подойдёт, а ключ ECDSA с -m PEM версия 2.16.0 прочитать не может; ssh-keygen -p -f по этому файлу перезапишет его в формате OpenSSH. Ключи на аппаратных токенах (-sk) он использовать не умеет и с ssh-agent не работает.
Откуда это взялось
Если ssh-keygen под рукой нет — старая Windows, чужая машина, — Conchshell может сделать ключ сам: кнопка Создать… рядом с полем ключа в окне подключения создаёт ключ Ed25519, RSA (2048, 3072 или 4096 бит) или ECDSA, по желанию с парольной фразой. Обе половины он пишет по выбранному вами пути, показывает публичную строку и её отпечаток SHA256, а приватную половину не показывает никогда. Ключи на аппаратных токенах (-sk) он не создаёт.
При импорте вашего ~/.ssh/config он берёт из каждой записи Host поля HostName, User, Port, IdentityFile и первый узел ProxyJump — так что блок, собранный здесь, приезжает уже с ключом.
Что почитать дальше
- Отпечатки SSH-ключей — SHA256 и MD5, known_hosts и хэшированные хосты
- Проверка публичного SSH-ключа — алгоритм, длина и оценка от A до D
- Проверка ~/.ssh/config — шифры, MAC и проверка ключа хоста
- Все инструменты сайта