2015-09-14 3 views
0

«Сервер 1» считывает и записывает на «Сервер 2» с использованием SSH.addIdentity в JSch является закрытым ключом сервера вызывающей программы

  • «Сервер 1» имеет закрытый ключ «Сервер 1» и открытый ключ «Сервер 2».
  • «Сервер 2» имеет закрытый ключ «Сервер 2» и открытый ключ «Сервер 1».

В JSch, когда я использую Java-программу для связи с «Server 1» на «Server 2», программа использует метод addIdentity. Этот метод использует закрытый ключ «Сервер 1», и JSch не отправит его никому («Сервер 2»), правильно?

Am путать с упоминанием частного ключа в этом addIdentity метод. Если возможно, пожалуйста, дайте мне некоторый документ, связанный с JSch, который просветит меня больше.

ответ

3

Ваше понимание верности.

.addIdentity Используется для указания того, какой секретный ключ следует использовать для локального шифрования данных перед отправкой на удаленный сервер (и для дешифрования входящих данных). Частный ключ сам не отправляется нигде. Только открытый ключ.

Обратите внимание, что .addIdentity загружает пару ключей (как открытый, так и закрытый ключ). Даже если вы используете перегрузку, которая принимает только путь prvkey, JSch предполагает, что файл открытого ключа имеет то же имя, только .pub extension; или что файл «private key» фактически содержит как открытый, так и закрытый ключ.


Подробнее читайте о Public-key/asymmetric cryptography.


Хотя обратите внимание, что ключ является секретным ключом счета вы подключаетесь с к удаленному серверу. Это не (не должно быть) закрытый ключ локальной машины (даже если машина является сервером SSH).

+0

, Спасибо за ваш ответ. Но один закрытый ключ может использоваться многими пользователями на сервере. Если у них есть доступ к этому файлу, я прав? – sunleo

+0

Может, но это не обычное использование. Закрытый ключ должен быть закрытым. После того, как у многих пользователей есть доступ к ключу, никто не может быть уверен, что другие пользователи не поставили под угрозу ключ. Это так же небезопасно, как обмен паролем. –