有效的authorized_keys文件?

时间:2014-09-04 07:12:42

标签: linux paramiko ssh-keys

我有一个用Python编写的软件& Paramiko将公共ssh密钥分发给目标linux机器。然后它尝试使用私钥进行连接。在一台机器(RHEL版本5)上,它没有问题。在其他机器上(CentOS,RHEL版本6),会发生一些奇怪的事情。公钥被分发但服务器拒绝私钥(我使用plink进行测试)。然后我执行以下操作(在.ssh目录中):

cp authorized_keys _temp
cat _temp > authorized_keys
chown testuser authorized_keys
chmod 600 authorized_keys

然后验证工作(就像之前一样)。所以这排除了sshd配置。此外,正如我之前提到的,分发工作在另一台机器上,并且使用相同的分发机制成功进行身份验证。所以我猜分布是好的。它可能与文本文件格式有关。我通过将authorized_keys文件恢复到我的机器并检查它来排除CR + LF而不是LF - 它只有LF。

所以我目前唯一可以肯定的是,不知何故,猫和> (或者只是其中一个)“修复”了文件,但我不能真正说出哪一个以及如何。因为我希望这个过程能够在没有人工干预的情况下工作,并且尽可能少的解决方法 - >谁能解释一下呢?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以尝试使用dos2unix命令修复空格:

dos2unix authorized_keys

但我怀疑这也可能是一个selinux问题。如果您使用ls

可视化selinux上下文
ls -lZ .ssh/*

你应该得到像

这样的东西
  

-rw -------。 git git unconfined_u:object_r:ssh_home_t:s0 authorized_keys

查看ssh_home_t上下文。如果您没有看到,则需要使用restorecon恢复它:

restorecon -r .ssh

通常,您可以使用audit2why命令查看selinux问题出了什么问题:

audit2why /var/log/audit/audit.log