我为一些客户开发了一个 Java 软件,我的软需求是访问known_hosts 文件,因为它使用 JSCH 命令。我在运行 Linux 的计算机和几台 Mac 机器上对其进行了测试,运行良好。但我对一位客户有一个问题:
我的软件无法访问known_hosts 文件。我知道它的默认位置(并且大多数情况下总是)是:/Users/username/.ssh/known_hosts
但
当我要求他在终端 nano /users/username/.ssh/known_hosts 中输入时,它创建了一个新文件而不是打开一个文件。所以我的问题是:
known_hosts 文件是否可能位于其他位置?如果是这样,你如何找到它的位置???
注意:我无法远程访问 Mac(例如使用 TeamViewer 或类似的东西),因为它没有连接到互联网。
由于特定主机的默认位置可能会通过 in 中的条目被覆盖,因此您需要确定特定目标的~/.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
Run Code Online (Sandbox Code Playgroud)
创建known_hosts 文件的nano
正确方法是使用SSH建立成功的连接,并回答SSH 客户端关于主机密钥正确性的质询,而不是使用任何其他文本编辑器编辑文件。
如果您想让客户对您对安全要求的敏感度印象深刻,他可能甚至不知道自己有,那么不要要求他输入路径名,而是向他发送一个ssh
命令行以及供他验证的预期密钥,以便他可以自信地说“是的,这是正确的主人。” 让 SSH 完成它的工作。