如何使用 JSch 执行严格的主机密钥检查
How can I perform a strict host key checking using JSch
我正在尝试使用 JGit
连接到服务器。我可以使用以下设置成功连接
JSch.setConfig("StrictHostKeyChecking", "no");
问题是我实际上想要严格的主机密钥检查。所以我用以下内容替换了上一行:
JSch.setConfig("StrictHostKeyChecking", "yes");
但是现在不行了。我的证书位于我的主目录中名为 .ssh
的文件夹中。文件的名称是 id_rsa
和 id_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_rsa
和 id_rsa.pub
的文件
3) 键入以下命令(始终使用 git bash
):
ssh-keyscan -t rsa ip_address_of_your_server >> ~/.ssh/known_hosts
它将创建一个名为 known_hosts
的文件。所以最终在客户端的.ssh文件夹中会有3个文件:id_rsa
、id_rsa.pub
和known_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
我正在尝试使用 JGit
连接到服务器。我可以使用以下设置成功连接
JSch.setConfig("StrictHostKeyChecking", "no");
问题是我实际上想要严格的主机密钥检查。所以我用以下内容替换了上一行:
JSch.setConfig("StrictHostKeyChecking", "yes");
但是现在不行了。我的证书位于我的主目录中名为 .ssh
的文件夹中。文件的名称是 id_rsa
和 id_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_rsa
和 id_rsa.pub
3) 键入以下命令(始终使用 git bash
):
ssh-keyscan -t rsa ip_address_of_your_server >> ~/.ssh/known_hosts
它将创建一个名为 known_hosts
的文件。所以最终在客户端的.ssh文件夹中会有3个文件:id_rsa
、id_rsa.pub
和known_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