我有一个奇怪的问题,如果密钥文件在特定的目录中,SSH将不能正确连接私钥。 我已经设置了一组服务器上的密钥和下面的命令
ssh -i /root/privatekey [email protected]
工作正常,我login到给定的主机没有得到密码提示,但这个命令:
ssh -i /etc/keyfiles/privatekey [email protected]
给我一个密码提示。 我缩小了这种行为只发生在/ etc /的一些子目录中。 例如/etc/httpd1/给我一个密码提示,但是/etc/httpd/不是。
我到目前为止检查的是:
ssh -v (它似乎只是跳过密钥文件)。 经过更多的testing,它不是实际的目录名称。 例如:
mkdir /etc/test cp /root/privatekey /etc/test ssh -i /etc/test/privatekey [email protected] # Results in password prompt cp /root/privatekey /etc/httpd # Existing directory ls -ald test httpd # drwxr-xr-x 4 root root 4096 Mar 5 18:25 httpd # drwxr-xr-x 2 root root 4096 Mar 5 18:43 test ssh -i /etc/httpd/privatekey [email protected] # Results in *no* prompt rm -r test cp -R /etc/httpd /etc/test ssh -i /etc/test/privatekey [email protected] # Results in *no* prompt`
我确定它只是简单的我忽略了,但我很茫然。
我build议在连接时查看'ssh -vvv'输出。 还要在/ etc / ssh / sshd_config中将日志级别提高到DEBUG。 这应该给你一些关于发生了什么的想法。
是你的一些子目录链接和一些真实的目录? 我认为这是一个奇怪的权限问题。
可能的原因是目录的权限和所有权。 ssh是偏执狂,拒绝一个基于父目录权限的密钥以及密钥和包含它的目录的权限。
我在我的环境中安装:
ln -fs $(PWD)/ssh3 $(INSTALL_DIR)/.ssh # Make sure the permissions are OK; ssh is paranoid chmod 700 ssh3 find ssh3/ -type f -exec chmod 600 {} \;
已知在CentOS 4和5上工作。