我正在尝试使用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
证书是名为id_rsa
和id_rsa.pub
的2个文件>
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