Как мы можем подключиться к 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.