我用Java语言为一些客户开发了一个软件,我的软件需要访问known_hosts文件,因为它使用的是JSCH命令。我在我的电脑上测试了它,它运行在Linux和几台Mac机器上,运行良好。但我对一个客户有个问题:
我的软件无法访问known_hosts文件。我知道它的默认位置(通常都是)是: /Users/username/.ssh/known_hosts
但
当我要求他输入终端nano /users/username/.ssh/known_hosts时,它会创建一个新文件,而不是打开一个。所以我的问题是:
是否可以将known_hosts文件放在其他位置?如果是这样,你如何找到它的位置?
注:我无法远程访问苹果电脑(像TeamViewer或类似的东西),因为它没有连接到互联网。
发布于 2017-08-22 04:19:41
由于可以通过~/.ssh/config中的条目覆盖特定主机的默认位置,因此您需要确定特定目标的文件。
MacOS使用的openSSH版本足够新,您应该能够使用-G选项来确定特定连接的配置:
$ ssh -G somehost | grep knownhostsfile
globalknownhostsfile /etc/ssh/ssh_known_hosts /etc/ssh/ssh_known_hosts2
userknownhostsfile ~/.ssh/known_hosts ~/.ssh/known_hosts2创建known_hosts文件的正确方法不是使用nano或任何其他文本编辑器编辑文件,而是使用SSH建立一个成功的连接,并回答SSH客户机关于主机密钥正确性的问题。
如果您想让您的客户对安全需求的敏感度给他留下深刻印象,而不是要求他键入路径名,而是向他发送一个ssh命令行以及供他验证的密钥,这样他就可以自信地说:“是的,这就是正确的主机。”让SSH完成它的工作。
发布于 2017-08-22 04:09:09
这是默认位置-文件可能还不存在,因为它从未使用过(macOS经常这样做;/etc/fstab是另一个例子)。
但是,如果您创建此文件并向其中添加任何主机(并设置正确的权限;在~/.ssh上为0700,在~/.ssh/known_hosts上为0600 ),它们将被识别。
https://stackoverflow.com/questions/45798190
复制相似问题