我无法 ssh 任何我能做到的事情。经过一番挖掘,我发现它没有从我的主目录中读取 ssh 配置。
$ ssh -xvvv server
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
(...)
当在朋友的同一台计算机上时,一切正常运行,如下所示:
$ ssh -xvvv server
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /Users/kuba/.ssh/config
(...)
之前它一直有效,我不知道我做了什么会导致这个问题。这是怎么发生的,如何解决?
在 tike 指出的文档链接中,它指出
由于可能被滥用,该文件必须具有严格的权限:仅供用户读/写,其他人不得访问。
我的权限是:
$ ls -la ~/.ssh
total 80
drwx------+ 42 kuba 1029 1428 Jul 1 16:33 ..
-rwx------ 1 kuba 1029 1528 May 15 13:07 config
(...)
我认为问题可能出在主目录混淆上。当我强制本地配置文件时,它开始工作,然后突然开始读取/nas/kuba
$ ssh -xvvvF ~/.ssh/config server
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /Users/kuba/.ssh/config
debug1: /Users/kuba/.ssh/config line 1: Applying options for *
debug1: /Users/kuba/.ssh/config line 39: Applying options for bio
debug2: ssh_connect: needpriv 0
debug1: Connecting to XXXX [YYYY.YYY.YYY.YYY] port 22.
debug1: Connection established.
debug1: identity file /nas/kuba/.ssh/id_dsa type -1
^^^^^^^^^^
但我的主目录似乎设置正确:
$ cd ~; pwd
/Users/kuba
$ echo $HOME
/Users/kuba
答案1
您似乎陷入了用户特定与全局 ssh_config 之间的困境。
请检查您的用户配置文件(~/.ssh/config
)和系统范围配置文件(/etc/ssh/ssh_config
)的权限设置,以了解更多详细信息。
您可以阅读更多有关此内容的内容这里。实际上,您基于用户的.ssh
目录下的所有文件都应位于 600 上,而文件config
应位于 644 上。您可以在主目录中使用以下命令进行设置:
chmod 600 ~/.ssh/*
chmod 644 ~/.ssh/config
答案2
检查权限
ls -lsd ~/.ssh
和
ls -ls ~/.ssh/*
如果权限不好,那么 ssh 客户端将不会尝试读取它
答案3
不管怎样,我遇到了同样的问题,并通过让 ssh 再次创建文件夹.ssh
(只需重命名ssh
并执行一些 ssh 命令),然后使用适当的权限复制所需的文件来解决了这个问题。(配置为 600)。
显然,如果文件夹.ssh
以 ssh 不认可的方式被修改,ssh 就会变得可疑......
答案4
如果本地配置位于 NFS 挂载的文件系统上,SSH 将不会读取本地配置。这值得检查,因为所有权限都可以正常使用,并且 SSH(至少是 6.6 版)不会向您提供任何有关它为何不读取用户配置的提示。(但是,如果您使用该-F
选项,它将从 NFS 卷读取它。)