如何使用 JSch 执行严格的主机密钥检查

How can I perform a strict host key checking using JSch

我正在尝试使用 JGit 连接到服务器。我可以使用以下设置成功连接

JSch.setConfig("StrictHostKeyChecking", "no");

问题是我实际上想要严格的主机密钥检查。所以我用以下内容替换了上一行:

JSch.setConfig("StrictHostKeyChecking", "yes");

但是现在不行了。我的证书位于我的主目录中名为 .ssh 的文件夹中。文件的名称是 id_rsaid_rsa.pub。在服务器(具有 Linux)中,我有一个名为 authorized_keys 的文件位于 ~/.ssh 中,其内容与 id_rsa.pub.

相同

代码其实没问题。问题是你必须做以下事情:

这些操作必须在您的客户端计算机上执行。

1) 在您的主目录中创建一个名为 .ssh 的文件夹(例如 C:\Users\John

2) 输入新文件夹并使用 git bash 和以下命令创建证书

ssh-keygen -t rsa -m PEM

证书是 2 个名为 id_rsaid_rsa.pub

的文件

3) 键入以下命令(始终使用 git bash):

ssh-keyscan -t rsa ip_address_of_your_server >> ~/.ssh/known_hosts

它将创建一个名为 known_hosts 的文件。所以最终在客户端的.ssh文件夹中会有3个文件:id_rsaid_rsa.pubknown_hosts。 现在转到您的服务器计算机并执行以下操作

1) 在您的主目录中创建一个名为 .ssh 的文件夹(例如 ~/John

2) 在那里输入并创建一个名为 authorized_keys 的文件并将文件 id_rsa.pub 的内容复制到这个新文件

3) 查找文件 etc/ssh/sshd_config

4) 确保以下两行存在且未注释

PubKeyAuthentication yes
PasswordAuthentication no

5) 保存文件并重启sshd

sudo systemctl restart sshd