这个答案 https://stackoverflow.com/a/14024709/6309提到:
jsch.setKnownHosts("C:\\Users\\aUsername\\known_hosts");
但是你正在使用jgit,并且not jsch(Java 安全 shell) http://www.jcraft.com/jsch/直接,让我们看看:
C:\Users\VonC\prog\git>git clone https://github.com/eclipse/jgit
Cloning into 'jgit'...
remote: Counting objects: 37854, done.
remote: Compressing objects: 100% (7743/7743), done.
remote: Total 37854 (delta 22009), reused 34367 (delta 18831)
Receiving objects: 100% (37854/37854), 6.73 MiB | 1.37 MiB/s, done.
Resolving deltas: 100% (22009/22009), done.
C:\Users\VonC\prog\git>cd jgit
C:\Users\VonC\prog\git\jgit>grep -nrHI "setKnownHosts" *
org.eclipse.jgit/src/org/eclipse/jgit/transport/JschConfigSessionFactory.java:262: sch.setKnownHosts(in);
找到了!
这来自JschConfigSessionFactory.java#knownHosts() https://github.com/eclipse/jgit/blob/master/org.eclipse.jgit/src/org/eclipse/jgit/transport/JschConfigSessionFactory.java#L258,看起来像:
new File(new File(home, ".ssh"), "known_hosts");
# with:
home = fs.userHome();
userHome
是基于System.getProperty("用户.home") https://github.com/eclipse/jgit/blob/master/org.eclipse.jgit/src/org/eclipse/jgit/util/FS.java#L242-L251.
所以确保你的java会话有一个user.home defined https://stackoverflow.com/questions/1503284/java-system-getpropertyuser-home-returns,并且你有一个%USERPROFILE%/.ssh/known_hosts
文件在那里。
(user.home
应该由java设置为%USERPROFILE%
对于 Windows,也就是说,如果您使用的是 Windows:在某些情况下,这并不总是有效 https://stackoverflow.com/questions/2134338/java-user-home-is-being-set-to-userprofile-and-not-being-resolved).
现在如果你do have a %USERPROFILE%/.ssh/known_hosts
,那么,作为这里提到 http://fileit.in/p/549
只需通过 SSH 连接到客户端(使用命令行ssh
工具),这会将条目添加到您的~/.ssh/known_hosts file
.
在这种情况下,斯托姆·霍克 https://stackoverflow.com/users/1036285/stormehawke中提到评论 https://stackoverflow.com/questions/15843399/configuring-known-hosts-in-jgit/15849893#comment22614468_15849893:
因为我正在运行这个Tomcat 作为 Windows 服务,Jsch(以及扩展名 JGit)不是在我的用户文件夹中查找,而是在SYSTEM
帐户的主文件夹为了.ssh
folder.
在这种情况下,我继续复制.ssh
文件夹放入SYSTEM
home 文件夹,因为 Tomcat 仅在我的计算机上运行用于开发和测试目的(可能不是最好的安全策略,但在这种情况下风险很小)。
From 这个问题 https://serverfault.com/q/9325/783, this one https://serverfault.com/q/112927/783,该目录为本地系统帐户 http://msdn.microsoft.com/en-us/library/ms684190%28VS.85%29.aspx应该:
C:\Documents and Settings\Default User
# or Wind7 / 2008
C:\Windows\System32\Config\systemprofile
OP提到:
根据这个电话:
System.out.println(System.getProperty("user.home"));
默认值SYSTEM
Windows 7(可能还有任何其他基于 NT 的 Windows 系统)的主目录很简单C:\
.
(所以并不理想,但为了快速修复,它是有效的)。