Настройка входа на SFTP сервер по ключам в FileZilla

В данном HOWTO мы подробно рассмотрим как настроить вход на SFTP (over SSH) сервер с использованием ключей в популярном FTP/SFTP клиенте FileZilla.

Введение

SSH ключи используются в качестве наиболее безопасной замены паролей для входа в учётные записи на UNIX системах. SSH ключ имеет открытую и закрытую части. Открытая часть (public key) помещается на сервер в файл ~/.ssh/authorized_keys (по умолчанию), а закрытая (private key) должна храниться у пользователя в надёжном месте.

Закрытая часть SSH ключа может быть защищена паролем. В таком случае для авторизации с использованием данного ключа потребуется его указать. Настоятельно рекомендуется всегда защищать SSH ключи сложным паролем, т.к. в случае хранения его в открытом виде и утечки, злоумышленник получит полный доступ над учётной записью, вход в которую возможен с помощью данного ключа.

Генерирование SSH ключа в UNIX

Если у вас нет личного SSH ключа, то вы должны его сгенерировать. Для UNIX систем это делается штатно утилитой командной строки:

ssh-keygen -t rsa -C "[email protected]"

Для идентификации ключа рекомендуется указывать свой адрес электронной почты в качестве комментария. Это поможет в дальнейшем администратору определять где чей ключ.

На следующем этапе у вас будет запрошен пароль для защиты личной части (private key). Придумайте и введите сложный пароль.

Генерирование SSH ключа в Windows

На операционных системах семейства Microsoft Windows сгенерировать SSH ключ можно бесплатной утилитой PuttyGen. Загрузите её и запустите.

Главное окно PuttyGen
Главное окно PuttyGen

Для начала процесса проверьте переключатели в самом низу окна. Параметры должны быть установлены как на нашем скриншоте, а именно: Type of key to generate -> SSH-2 RSA, Number of bits in a generated key -> 1024 (допускаются варианты 2048 и 4096).

Сбор энтропии PuttyAgent
Сбор энтропии PuttyAgent

После проверки нажмите кнопку Generate и начинайте перемещать курсор мыши в области с прогресс-баром для сбора энтропии до его полного заполнения.

Результат работы PuttyGen
Результат работы PuttyGen

Через несколько секунд вы увидите, что программа завершила генерирование SSH ключа. Вам будет предложено заполнить некоторые поля и сохранить обе его части. Рассмотрим подробнее.

В разделе Public key for pasting into OpenSSH authorized_keys file находится открытая часть ключа. Её следует прописывать в файл ~/.ssh/authorized_keys на сервере.

Key fingerprint содержит уникальный отпечаток ключа, который служит для его идентификации и проверки.

В поле Key comment следует указать свой адрес электронной почты. Это поможет в дальнейшем определять где чей ключ.

Обязательно защитите закрытый ключ паролем, для этого укажите его в Key passphrase и Confirm passphrase (они должны совпадать).

Чтобы сохранить SSH ключ, нажмите кнопку Save private key. Ключ будет сохранён в формате Putty (*.ppk), пригодном для использования в Putty Agent и самом Putty (данный формат содержит связку открытый + закрытый ключ).

Если вы не сохранили публичную часть ключа через Save public key, то всегда можете снова загрузить свой ранее сохранённый закрытый ключ (файл *.ppk) кнопкой Load и скопировать открытую часть из верхней части окна.

SSH ключи и FileZilla

Штатно FileZilla поддерживает только личные (private) ключи, хранящиеся напрямую в конфиге программы в расшифрованном виде (без пароля).

Это категорически не рекомендуется, т.к. злоумышленнику будет достаточно похитить файл с настройками программы и получить полный доступ ко всем учётным записям.

FileZilla - настройки SSH ключей
FileZilla — настройки SSH ключей

Если хотите рискнуть, то для добавления SSH ключа, необходимо нажать кнопку Добавить файл с ключом и найти ключевой файл на диске. Ключи допускаются только в формате Putty без пароля. Если ключ защищён паролем, будет выдан запрос на его расшифровку. Ещё раз напоминаем о том, что так хранить ключи не следует.

В качестве рекомендуемой альтернативы, следует использовать утилиту Putty Agent (pageant). Далее мы подробно рассмотрим как их «подружить» с FileZilla.

Используем Putty Agent

Скачайте и запустите утилиту Putty Agent (pageant). Вы увидите его значок в системном лотке (около часов Windows). Нажмите по нему правой кнопкой мыши и в открывшемся контекстном меню выберите пункт View Keys.

Главное окно Putty Agent
Главное окно Putty Agent

Для добавления ключа необходимо нажать кнопку Add Key и найти файл с закрытым ключом в формате Putty (*.ppk) на диске, после чего ввести пароль (если он защищён паролем).

Вы можете автоматизировать все действия по добавлению ключа в утилиту Putty Agent, создав батник или ярлык с таким содержанием:

"C:\Putty\pageant.exe" "C:\mykeys\mykey.ppk"

 

Здесь C:\Putty\ — путь, в который вы скопировали утилиту Putty Agent, а C:\mykeys\mykey.ppk — полный путь к закрытому ключу.

Если в путях имеются пробелы, то необходимо использовать кавычки (как на нашем примере).

Putty Agent и FileZilla

Как мы уже писали выше, FileZilla может использовать Putty Agent для авторизации на SFTP-серверах. Для этого нужно сначала запустить Putty Agent с нужным закрытым ключом (как это сделать указано выше).

Добавление сервера в FileZilla
Добавление сервера в FileZilla

Откройте менеджер серверов FileZilla, добавьте новый сервер кнопкой Новый сайт, укажите его адрес (поле Хост) и порт (если работает на нестандартном).

В комбо-боксе Протокол укажите SFTP — SSH File Transfer Protocol, а Тип входаИнтерактивный. Далее укажите имя пользователя, под которым вы будете подключаться к серверу (можно не указывать, тогда потребуется вводить вручную при каждом входе; полезно при наличии нескольких учётных записей на сервере). Все остальные поля заполнять не требуется.

Нажмите OK и запустите подключение к серверу. Если утилита Putty Agent запущена с нужным закрытым ключом, то авторизация пройдёт в полностью автоматическом режиме и вы увидите файловую систему удалённого сервера, иначе будет выдана ошибка.

Окончание работы

Сразу после окончания работы с SFTP из соображений безопасности рекомендуется закрыть программу Putty Agent, нажав по её значку в системном трее правой кнопкой и выбрав пункт Exit.

2 commentary to post

  1. Команда h-keygen генерит ключ который файлзилла не принимает! Как сгенерировать ключ то в убунту для файлзиллы?

Обсуждение закрыто.