Как мы можем подключиться к SFTP-серверу с компьютера под управлением Windows к Linux-серверу SFTP с помощью ключа DSA?

Как пользователь Windows, я сгенерировал пару ключей DSA из CoreFTP Lite и отправил их третьему лицу, работающему с сервером SFTP.

Они сказали мне, что действительный ключ DSA должен иметь ssh-dsa в начале и имя пользователя @systemname в конце.

CoreFTP не генерирует ни заголовок ssh-dsa, ни нижний колонтитул username@systemname. Я пробовал с WinSCP, и он тоже не генерировал их.

Есть ли разница между тем, как SFTP работает между Windows и Linux?

Если я поставлю useraccount@systemname в конце текста, это будет работать? Как система Linux проверит, что моя система называется "системное имя"? Если это не может подтвердить, какова цель добавления этого?

2 ответа

Решение

Есть ли разница между тем, как SFTP работает между Windows и Linux?

Нет. Единственное отличие - ключевые форматы хранения, используемые различными программами. Большинство систем Linux используют OpenSSH в качестве сервера SSH/SFTP, и ваша третья сторона запрашивает открытый ключ, совместимый с OpenSSH.

  • CoreFTP хранит закрытые ключи в формате OpenSSH, а открытые ключи аналогичны OpenSSH.

    Вы можете использовать PuTTYgen или ssh-keygen -yf для извлечения открытого ключа, так как "закрытый" файл всегда содержит всю пару ключей.

    Или вы можете просто добавить ssh-dss "перед данными открытого ключа CoreFTP, чтобы сделать его OpenSSH-совместимым. Пример:

    ssh-dss AAAAB3NzaC1kc3M...
    

    (Почему CoreFTP забывает заголовок? Возможно, разработчики посчитали это ненужным, поскольку данные в кодировке Base64 уже ssh-dss в начале. И кроме того, кому когда-нибудь понадобится совместимость с самым популярным программным обеспечением SFTP?)

  • PuTTY использует свой собственный формат ключа "PPK".

    Когда вы открываете ключ в PuTTYgen (или генерируете новый), открытый ключ OpenSSH отображается в большом поле вверху.

    Закрытый ключ можно экспортировать в формат OpenSSH через меню.

  • WinSCP не имеет программы генерации ключей. Он связывает PuTTYgen от PuTTY.

Для полноты:

  • OpenSSH (ssh, ssh-keygen) хранит закрытые ключи в формате "PEM", используемом OpenSSL, и открытые ключи в своем собственном однострочном формате. (Как упоминалось выше, файл "закрытого" ключа содержит как закрытый, так и открытый ключи.)

Они сказали мне, что действительный ключ DSA должен иметь [...] имя пользователя @systemname в конце.

[...] Если я поставлю useraccount@systemname в конце текста, это будет работать? Как система Linux проверит, что моя система называется "системное имя"? Если это не может подтвердить, какова цель добавления этого?

username@systemname part - это комментарий, используемый для идентификации ключа (например, когда у вас есть 10 ключей в authorized_keys), но он полностью игнорируется программным обеспечением.

Открытые ключи OpenSSH без комментариев являются абсолютно действительными.

Вам необходимо предоставить открытую часть вашей пары ключей в формате, который может распознавать сторонний SFTP-сервер - и в этом случае, похоже, что они хотят формат openssh.

Я не специалист по формату ключей CoreFTP Lite dsa, но из некоторых случайных обращений к Google похоже, что вы можете использовать PuttyGen, чтобы открыть ключ, сгенерированный CoreFTP, а затем экспортировать его как открытый ключ OpenSSH.

Другие вопросы по тегам