我为一些客户开发了一个Java软件,并且我需要访问known_hosts文件,因为它使用了JSCH命令。我在运行Linux和几台Mac机的计算机上测试了它,它工作正常。但我遇到一个客户的问题:
我的软件无法访问known_hosts文件。我知道它的默认位置(并且通常是):/ Users / username / .ssh / known_hosts
但是
当我让他输入终端nano /users/username/.ssh/known_hosts时,它创建了一个新文件,而不是打开一个。 所以我的问题是:
known_hosts文件是否可能在其他地方?如果是这样,你如何找到它的位置???
注意:我没有远程访问Mac(就像使用TeamViewer或类似的东西),因为它没有连接到互联网。
答案 0 :(得分:2)
由于可以通过~/.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客户端& #39;对主机密钥正确性的质疑。
如果你想让你的客户对你的安全性要求很敏感,他甚至可能都不知道他有,那么不要让他输入一个路径名,而是向他发送一个ssh
命令行和一个预定的密钥。他要核实,这样他就可以自信地说'#34;是的,这是正确的主人。"让SSH完成它的工作。
答案 1 :(得分:0)
这是默认位置 - 该文件可能根本就不存在,因为它从未使用过(macOS经常这样做; /etc/fstab
是另一个例子)。
但是,如果您创建此文件并向其添加任何主机(并设置正确的权限; 0700
上的~/.ssh
和0600
上的~/.ssh/known_hosts
),则会识别它们