JSch использует формат ключевого файла OpenSSH (как для открытых, так и для закрытых ключей). Я не нашел спецификацию этого формата, но вы можете использовать OpenSSH ssh- keygen для преобразования ключей из/в другие форматы (и Google покажет другие инструменты для преобразования из/в еще большее количество форматов).
Обновление: после запроса в списке рассылки OpenSSH и прочтения некоторых RFC оказалось, что файл открытого ключа OpenSSH содержит (для ключей версии 2) открытый ключ, как указано в RFC 4253 (раздел 6.6), только с оберткой base64 вокруг него (и тип ключа в виде префикса, и поле комментария в виде постфикса). Я все еще не нашел спецификацию файла закрытого ключа.
К сожалению, официальной документации для JSch почти не существует, но я написал для него несколько Javadocs. (Хотя кажется, что не упоминается формат файла ключа... Придется это исправить.) Также есть Руководство в JSch Wiki, содержащее страницу об аутентификации с открытым ключом. (в котором также еще не упоминается формат ключа :-/).
Файл известных хостов также имеет тот же формат, что и соответствующий файл клиента OpenSSH. Его формат описан на справочной странице OpenSSH по sshd, раздел SSH ИЗВЕСТЕН. ФОРМАТ ФАЙЛА HOSTS:
Каждая строка в этих файлах содержит следующие поля: маркеры (необязательно), имена хостов, биты, показатель степени, модуль, комментарий. Поля разделены пробелами.
На самом деле это правильно только для ключей SSH 1 RSA. Для ключей SSH 2 у вас есть идентификатор типа (ecdsa-sha2-nistp256
,ecdsa-sha2-nistp384
, ecdsa-sha2-nistp521
, ssh-dss
или ssh-rsa
), а затем ключ в кодировке base-64. (См. немного выше на той же странице руководства для файла авторизованных ключей). (Я думаю, что JSch поддерживает только форматы ключей DSA и RSA, а не ECDSA.)
Обратите внимание, что строки в этих файлах обычно состоят из сотен символов, и вы определенно не хотите вводить ключи хоста вручную. Вместо этого сгенерируйте их с помощью скрипта, ssh-keyscan(1) или взяв файл /etc/ssh/ssh_host_key.pub и добавив имена хостов впереди. ssh-keygen(1) также предлагает базовое автоматическое редактирование ~/.ssh/known_hosts, включая удаление хостов, соответствующих имени хоста, и преобразование всех имен хостов в их хешированные представления.
person
Paŭlo Ebermann
schedule
13.11.2011