Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos Mac,已知的\u主机位置不是默认值?_Macos_Ssh - Fatal编程技术网

Macos Mac,已知的\u主机位置不是默认值?

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

我用Java为一些客户开发了一个软件,我的软件需要访问已知的_hosts文件,因为它使用JSCH命令。我在运行Linux和几台Mac电脑的电脑上测试了它,效果很好。但我与一位客户有一个问题:

我的软件无法访问已知的\u hosts文件。我知道它的默认位置(通常都是):/Users/username/.ssh/known_hosts

但是

当我让他输入终端nano/users/username/.ssh/known_hosts时,它创建了一个新文件,而不是打开一个。 所以我的问题是:

已知的_hosts文件是否可能位于其他地方?如果是,你如何找到它的位置


注意:我没有远程访问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
尝试提示您回答“是/否”以接受主机密钥为有效。如果这没有帮助,您可能需要询问更多详细信息。