服务器1正在使用SSH对服务器2进行读写操作。
- "服务器1"拥有"服务器1"的私钥和"服务器2"的公钥。
- "服务器2"拥有"服务器2"的私钥和"服务器1"的公钥。
在JSch中,当我使用Java程序从"Server 1"通信到"Server 2"时,该程序使用addIdentity
方法。这种方法是使用"服务器1的"私钥和JSch不会将此发送给任何人("服务器2"),我是对的吗?
我对在addIdentity
方法中提到私钥感到困惑。如果可能的话,请给我一些JSch相关的文件,给我更多的启发。
你的理解是正确的。
.addIdentity
用于指定在将数据发送到远程服务器之前应该使用什么私钥来本地加密数据(并解密传入数据)。私钥本身不会发送到任何地方。只有一个公钥。
注意,.addIdentity
加载一个密钥对(公钥和私钥)。即使您使用只接受prvkey
路径的重载,JSch也会假设公钥文件具有相同的名称,只是.pub
扩展名;或者"私钥"文件实际上包含公钥和私钥。
详细信息,请参阅公钥/非对称加密。
不过请注意,该密钥是您连接到远程服务器的帐户的私钥。它不是(不应该是)本地机器的私钥(即使机器恰好是[SSH]服务器)