2012-03-16 65 views
12

键被正确部署在〜/ .ssh/authorized_keys中红帽6 /甲骨文的Linux 6不会通过SSH允许密钥认证

然而SSH不断提示输入密码。

+1

检查/ var /日志/安全将有信息,如果公开密钥失败权威性。 〜/ .ssh中的文件很可能具有错误的读/写权限。 – mguymon 2012-03-16 17:12:45

+0

在我的情况下,烫发很好。它与SELinux有关,见下文 – 2012-03-16 18:18:18

回答

28

几个问题,主要是权限 - 也涉及到了SELinux在RedHat 6

下面的脚本应该可以解决所有这些,请与您匹配的用户名和组取代<user>:<group>

chown -R <user>:<group> ~/.ssh 
chmod 700 ~/.ssh 
chmod 600 ~/.ssh/* 
restorecon -R -v ~/.ssh 
+3

即使它们位于受保护的目录内,也不应该将文件权限更改为世界可读性 'restorecon -R -v $ HOME/.ssh'对我来说是什么 – feniix 2013-04-01 22:47:52

+0

是的,它应该只是所有者访问。在我的rhel6中仍然可以使用600 – feniix 2013-04-02 17:23:43

+0

你的意思是我的建议很糟糕?因为我看到你编辑了600个文件的响应。 – feniix 2013-04-11 16:05:50

1

以上回答是相当不错,我还有一个建议&。添加在下面的第2行中,因为主目录权限不比rwxr-x更容许ssh密钥身份验证。

cd ~ 
chmod g-w,o-rwx . 
chmod 700 .ssh 
cd .ssh 
chmod 600 * 
chmod 644 authorized_keys 
chmod 644 known_hosts 
chmod 644 config 
restorecon -R -v ../.ssh 

建议在测试时使用-vv选项。

+0

你可能是指''o-rwx'',而不是''u-rwx'' :) – darkk 2012-10-03 06:17:40

+0

好抓!在chmod/chown命令中,'u'和'o'有一个反复出现的助记符问题。 'o'是'其他',而不是'所有者'! – nortally 2014-07-17 22:12:34

5

我同意上面对root帐户中大多数linux变体的修改。 我在尝试获取postgres用户帐户以使用DSA身份验证时遇到了RedHat 6.3的问题。 (6.3在VirtualBox中运行)

问题可能在于基本的selinux权限是错误的。 Restorecon在这种情况下不会提供帮助。

(After restorecon) 
drwx------. postgres postgres unconfined_u:object_r:var_lib_t:s0 .ssh 

我已经有固定的:

chcon -R -t ssh_home_t .ssh 

这解决了这个问题的实例。

+0

我一直在寻找这个答案的三天!直到我在授权密钥文件上运行统计信息时,我才注意到文件上有一个SELinux上下文。我将它与不同用户的授权密钥文件进行了比较,并注意到其中的差异!谢谢,Greg! – BamaPookie 2015-07-07 15:02:36

+0

我发现的另外一点:如果随后在此.ssh目录中运行restorecon,则将失去使用chcon命令所做的更改。您还需要添加一个策略,以便在文件系统重新标记上正确地重新应用上下文。我用下面的命令做了这个:semanage fcontext -a -t ssh_home_t“/path/to/service/home/.ssh(/.*)?”。 (请务必使用完整路径。) – BamaPookie 2015-07-07 15:43:04

+1

更正的命令:semanage fcontext -a -t ssh_home_t“/path/to/service/home/\.ssh(/.*)?” – BamaPookie 2015-07-07 16:13:12

1

我也有同样的问题,上面提出的解决方案并没有解决我的情况。总结说明abowe在一起:以下错误的可能细节目标系统上的日志文件

  1. 检查:在/ var /日志/安全文件的
  2. 权限在用户的〜/ .ssh目录应该是600和文件应该是拥有“用户:组”
  3. 权限〜/ .ssh目录应该是700并拥有“用户:组”
  4. 用户的主目录权限即。 “〜”(=“〜/ .ssh/..”)应该是755.如果权限是f.ex 775,那么系统中的ssh密钥拒绝失败。

BR 布鲁诺

+0

这条指令是否为您解决了这个问题?或者它只是一个汇编? – 2015-06-24 10:44:27