it-swarm.cn

无法使SSH公钥身份验证正常工作

我的服务器正在运行CentOS 5.3。我在运行Leopard的Mac上。我不知道是哪个原因造成的:

我可以通过密码身份验证正常登录到服务器。我已经完成了设置PKA的所有步骤(如 http://www.centos.org/docs/5/html/Deployment_Guide-zh-CN/s1-ssh-beyondshell.html中所述 ),但是当我使用SSH时,它甚至拒绝尝试进行公钥验证。使用命令

ssh -vvv [email protected]

(其中-vvv将详细程度提高到最大程度)我得到以下相关输出:

debug2: key: /Users/me/.ssh/id_dsa (0x123456)
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug3: start over, passed a different list publickey,gssapi-with-mic,password
debug3: preferred keyboard-interactive,password
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password

然后提示输入密码。如果我尝试强制使用

ssh -vvv -o PreferredAuthentications=publickey [email protected]

我懂了

debug2: key: /Users/me/.ssh/id_dsa (0x123456)
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug3: start over, passed a different list publickey,gssapi-with-mic,password
debug3: preferred publickey
debug3: authmethod_lookup publickey
debug3: No more authentication methods to try.

因此,即使服务器说它接受了公钥身份验证方法,而我的SSH客户端坚持这样做,我还是被驳回了。 (请注意,上面明显没有“提供公共密钥:”行。)有什么建议吗?

41
Trey Parkman

检查您的Centos机器是否具有:

RSAAuthentication yes
PubkeyAuthentication yes

在sshd_config中

并确保您对centos计算机的〜/ .ssh /目录具有适当的权限。

chmod 700 ~/.ssh/
chmod 600 ~/.ssh/*

应该可以。

44
pyhimys

我有一个类似的问题-远程PC无法使用公共密钥身份验证登录到CentOs 6服务器。在我的情况下,问题与SELinux有关-尝试登录的用户的主目录具有安全性消息。我这样使用restorecon工具解决了这个问题:

restorecon -Rv /home
17
Gareth

1-检查您的/ etc/ssh/sshd_config,确保您已经

 RSAAuthentication是
 PubkeyAuthentication是

2-检查来自远程计算机的安全日志,查找详细的sshd守护程序错误日志。例如在我的Ubuntu中

#grep'sshd'/ var/log/secure | grep“身份验证被拒绝” tail -5 
 Aug 4 06:20:22 xxx sshd [16860]:身份验证被拒绝:错误的所有权或目录/home/xxx
的模式8月4日06:20:22 xxx sshd [16860] ]:身份验证被拒绝:目录/home/xxx
的所有权或模式错误。8月4日06:21:21 xxx sshd [17028]:身份验证被拒绝:目录/home/xxx[.____]的所有权或模式错误。 ] Aug 4 06:21:21 xxx sshd [17028]:身份验证被拒绝:错误的所有权或目录/home/xxx
的模式。Aug4 06:27:39 xxx sshd [20362]:身份验证被拒绝:所有权错误或目录/home/xxx
的模式

然后检查目录/ home/xxx的所有权和模式,也许您需要运行此文件

 chmod 755 /home/xxx
13
Jinyu Liu

仔细检查本地和远程计算机的权限是否正确以及文件结构(特别是拼写)是否正确。您所引用的URL可以说明所有内容,但是值得检查一下您是否匹配。通常,权限将引发相关错误。

您是否检查过CentOS 5.3框上的sshd_config是否设置为允许PubkeyAuthentication或RSAAuthentication?

检查CentOS系统上的SSH服务器日志-它可能会提供更多信息。我不确定CentOS是否像debian一样将黑名单中的ssh密钥进行检查,但是我看到ssh公钥拒绝相对于-vvv输出而言是相对安静的,但是日志清楚地解释了发生了什么

11
Daniel Lawson

得到它了!原来这是一个客户端问题。 (我认为任何服务器端问题都将产生更有用的调试输出。)由于我不知道的原因,在我的Mac上,文件/ etc/ssh_config包含以下行:

PubkeyAuthentication = no

我注释了其中一行,现在一切正常。

7
Trey Parkman

除了文件/目录的模式外,请确保所有权正确!用户必须拥有自己的主目录,.ssh /和其中的文件。

我不得不跑chown -R $user:$user /home/$user克服了我的ssh错误。

4
Visser

在我看来,这是一个配置问题。像丹尼尔(Daniel)建议的那样,有两件事要检查:

  1. $HOME/.ssh/authorized_keys中的SSH密钥可读。和
  2. SSHd配置为允许公用密钥登录。
2
sybreon

使用您尝试登录的方式检查用户名。默认情况下,这是您在本地计算机上的用户名。

2
Creotiv

还要检查它是否可以自动提供密钥,如果没有,请使用-i path/to/key或只是进行测试

2
Jimsmithkka

我刚刚陷入了同样的问题,使用Fedora core 16至cents 5.5

日志和详细看起来完全一样

问题是公钥,它得到了一些伪造的数据,将其重新生成并发布到sshd_server中,您sshd_client正在发送密钥信息,但服务器无法识别(它与authorized_keys中的任何密钥都匹配)

1
Freaktor

客户端的输出如ssh -v会显示协议中某个步骤存在问题,但是如果是由于服务器上的某些原因,则不会通知客户端原因。检查服务器日志文件以找出问题所在。您可能需要是root才能拥有权限。例如,对于配置为登录到syslog的sshd,您可能会在/var/log/secure。像这些:

Authentication refused: bad ownership or modes for directory /home/you/.ssh
Authentication refused: bad ownership or modes for file /home/you/.ssh/authorized_keys

在这种情况下,原因是(愚蠢的)默认default0002。就是说,对该组进行写访问。 (Groupname =用户名,但仍然。)SSH守护进程将不信任那些可以被用户以外的其他人(当然,还有root)篡改的文件。您可以使用chmod解决问题。

chmod 700 ~/.ssh # solve the issue
chmod 720 ~/.ssh # reproduce the issue
# or similar for a file
1
Lumi