В данном 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 "your_mail@example.com"
Для идентификации ключа рекомендуется указывать свой адрес электронной почты в качестве комментария. Это поможет в дальнейшем администратору определять где чей ключ.
На следующем этапе у вас будет запрошен пароль для защиты личной части (private key). Придумайте и введите сложный пароль.
Генерирование SSH ключа в Windows
На операционных системах семейства Microsoft Windows сгенерировать SSH ключ можно бесплатной утилитой PuttyGen. Загрузите её и запустите.

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

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

Через несколько секунд вы увидите, что программа завершила генерирование 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) ключи, хранящиеся напрямую в конфиге программы в расшифрованном виде (без пароля).
Это категорически не рекомендуется, т.к. злоумышленнику будет достаточно похитить файл с настройками программы и получить полный доступ ко всем учётным записям.

Если хотите рискнуть, то для добавления SSH ключа, необходимо нажать кнопку Добавить файл с ключом и найти ключевой файл на диске. Ключи допускаются только в формате Putty без пароля. Если ключ защищён паролем, будет выдан запрос на его расшифровку. Ещё раз напоминаем о том, что так хранить ключи не следует.
В качестве рекомендуемой альтернативы, следует использовать утилиту Putty Agent (pageant). Далее мы подробно рассмотрим как их «подружить» с FileZilla.
Используем Putty Agent
Скачайте и запустите утилиту Putty Agent (pageant). Вы увидите его значок в системном лотке (около часов Windows). Нажмите по нему правой кнопкой мыши и в открывшемся контекстном меню выберите пункт View Keys.

Для добавления ключа необходимо нажать кнопку 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, добавьте новый сервер кнопкой Новый сайт, укажите его адрес (поле Хост) и порт (если работает на нестандартном).
В комбо-боксе Протокол укажите SFTP — SSH File Transfer Protocol, а Тип входа — Интерактивный. Далее укажите имя пользователя, под которым вы будете подключаться к серверу (можно не указывать, тогда потребуется вводить вручную при каждом входе; полезно при наличии нескольких учётных записей на сервере). Все остальные поля заполнять не требуется.
Нажмите OK и запустите подключение к серверу. Если утилита Putty Agent запущена с нужным закрытым ключом, то авторизация пройдёт в полностью автоматическом режиме и вы увидите файловую систему удалённого сервера, иначе будет выдана ошибка.
Окончание работы
Сразу после окончания работы с SFTP из соображений безопасности рекомендуется закрыть программу Putty Agent, нажав по её значку в системном трее правой кнопкой и выбрав пункт Exit.
Команда h-keygen генерит ключ который файлзилла не принимает! Как сгенерировать ключ то в убунту для файлзиллы?
Так и должно быть. Используйте ssh-agent.