2015-05-11 3 views
3

Я использую JSch с закрытым ключом FTP файлБезопасность JSch SFTP с session.setConfig («StrictHostKeyChecking», «no»);

  1. jsch.addIdentity (privatekeyfile);
  2. Session session = jsch.getSession («пользователь», «domain.com», 22);
  3. session.setConfig («StrictHostKeyChecking», «no»);

Линия 3 находится под вопросом. Без этой строки JSch не работает.

Мой вопрос: Будет ли линия 3 делать передачу SFTP небезопасной?

ответ

6

Отключение опции StrictHostKeyChecking сделает соединение менее безопасным, чем включение опции, поскольку оно позволит вам подключаться к удаленным серверам без проверки их ключей хоста SSH. Если опция включена, вы сможете подключаться только к серверам, ключи которых известны вашему SSH-клиенту.

Вам нужно будет решить, что это означает для вашего конкретного случая использования - серверы, которые вы подключаете в частной локальной сети или вы подключаетесь через Интернет? Является ли это тестовой или производственной средой?

Если вы сомневаетесь, лучше ошибиться на стороне большей безопасности. Я бы рекомендовал включить StricktHostKeyChecking и использовать setKnownHosts method для предоставления файла, который содержит удаленные ключи хоста.

+0

Спасибо krautmeyer и Мартин. setKnownHosts нужен файл. Где находится файл? I FTP для экземпляра AWS EC2 Linux. Когда я создал экземпляр, я получил свой privatekeyfile. Но что установить в методе setKnownHosts? Спасибо! – Tony

+0

Файл должен быть доступен на клиенте, который запускает вашу программу. Если у вас есть доступ к машине Linux, вы можете сами создать файл: 'ssh-keyscan -t rsa hostname> known_hosts' Имя хоста будет целевым сервером, к которому вы хотите подключиться в этом случае. Затем просто передайте файл методу 'setKnownHosts'. –

+0

Thanks.I вошел в систему Linux и запустил это: ssh-keyscan -t rsa abc.com>/home/known_hosts. Файл known_hosts создается в домашних условиях, но пуст. abc.com - это домен, который я использую для FTP на этом сервере. Благодарю. – Tony

1

Да, это сделает соединение (и передачу) незащищенным. В частности, это делает соединение открытым до Man-in-the-middle attacks.

Вы не должны устанавливать StrictHostKeyChecking в no, если только вам не нужна безопасность (например, при подключении в частной сети).

Это не так, что «Без этой линии JSch не работает». Вам просто нужно, чтобы ваш код принял ожидающий серверный ключ сервера. Или с помощью методов setKnownHosts или setHostKeyRepository.

Примеры см How to resolve Java UnknownHostKey, while using JSch SFTP library?


Вы можете прочитать мою статью о verifying the host key понять его важность. Речь идет о WinSCP SSH/SFTP-клиенте, но в целом это справедливо для любого SSH-клиента/библиотеки.