Macos Mac,已知的\u主机位置不是默认值?
我用Java为一些客户开发了一个软件,我的软件需要访问已知的_hosts文件,因为它使用JSCH命令。我在运行Linux和几台Mac电脑的电脑上测试了它,效果很好。但我与一位客户有一个问题: 我的软件无法访问已知的\u hosts文件。我知道它的默认位置(通常都是):/Users/username/.ssh/known_hosts 但是 当我让他输入终端nano/users/username/.ssh/known_hosts时,它创建了一个新文件,而不是打开一个。 所以我的问题是: 已知的_hosts文件是否可能位于其他地方?如果是,你如何找到它的位置Macos Mac,已知的\u主机位置不是默认值?,macos,ssh,Macos,Ssh,我用Java为一些客户开发了一个软件,我的软件需要访问已知的_hosts文件,因为它使用JSCH命令。我在运行Linux和几台Mac电脑的电脑上测试了它,效果很好。但我与一位客户有一个问题: 我的软件无法访问已知的\u hosts文件。我知道它的默认位置(通常都是):/Users/username/.ssh/known_hosts 但是 当我让他输入终端nano/users/username/.ssh/known_hosts时,它创建了一个新文件,而不是打开一个。 所以我的问题是: 已知的_ho
注意:我没有远程访问Mac(比如TeamViewer或类似的东西),因为它没有连接到internet。这是默认位置–文件可能根本不存在,因为它从未被使用过(macOS经常这样做;
/etc/fstab
是另一个例子)
但是,如果您创建此文件并向其中添加任何主机(并设置正确的权限;
~/.ssh
上的0700
和~/.ssh/known_hosts
上的0600
),它们将被识别。这是默认位置–该文件可能根本不存在,因为它从未被使用过(macOS经常这样做;/etc/fstab
是另一个例子)
但是如果您创建此文件并向其中添加任何主机(并设置正确的权限;
~/.ssh上的0700
和~/.ssh/known_hosts上的0600
)它们将被识别。由于特定主机的默认位置可能会通过~/.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
创建已知的_hosts文件的正确方法不是使用nano
或任何其他文本编辑器编辑文件,而是使用SSH建立成功的连接,并回答SSH客户端关于主机密钥正确性的质疑
如果您想让您的客户对安全需求保持敏感,他可能甚至不知道自己有安全需求,那么与其要求他键入路径名,不如向他发送一个ssh
命令行以及供他验证的指定密钥,以便他可以自信地说“是的,这是正确的主机”让SSH完成它的工作。由于特定主机的默认位置可能会通过~/.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
创建已知的_hosts文件的正确方法不是使用nano
或任何其他文本编辑器编辑文件,而是使用SSH建立成功的连接,并回答SSH客户端关于主机密钥正确性的质疑
如果您想让您的客户对安全需求保持敏感,他可能甚至不知道自己有安全需求,那么与其要求他键入路径名,不如向他发送一个ssh
命令行以及供他验证的指定密钥,以便他可以自信地说“是的,这是正确的主机”让SSH来完成它的工作。我遇到了一个更糟糕的情况:我删除了我的~/.SSH/known_hosts
文件,在那里我以前为一台机器设置了一个别名,但是SSH
命令仍然可以找到它。您建议的命令显示了四个位置(和四个*known_hosts
文件),但这些文件中没有一个存在。但是,如果我ssh
到我的等价物somehost
,它会成功地尝试连接到它。而且重新启动也不起作用。关于ssh
在哪里仍然可以找到somehost
名称的任何建议?Hej@VincenzoLavorini。。最有可能找到主机名的地方是DNS,/etc/hosts
和您的~/.ssh/config
文件。已知的\u主机
文件不保留别名或配置,它只是主机密钥的缓存。删除该文件将导致后续的ssh
尝试提示您回答“是/否”接受主机密钥为有效。如果这不起作用,您可能需要更详细地询问您的问题。我遇到了一个更糟糕的情况:我删除了我的~/.ssh/known_hosts
文件,我以前在其中为一台机器设置了一个别名,但ssh
命令仍然可以找到它。您建议的命令显示了四个位置(和四个已知的主机文件),但这些文件中没有一个存在。但是,如果我ssh
到我的等价物somehost
,它会成功地尝试连接到它。而且重新启动也不起作用。关于ssh
在哪里仍然可以找到somehost
名称的任何建议?Hej@VincenzoLavorini。。最有可能找到主机名的地方是DNS,/etc/hosts
和您的~/.ssh/config
文件。已知的\u主机
文件不保留别名或配置,它只是主机密钥的缓存。删除该文件将导致后续的ssh
尝试提示您回答“是/否”以接受主机密钥为有效。如果这没有帮助,您可能需要询问更多详细信息。