SSH 自动登录偶尔会工作

SSH 自动登录偶尔会工作

我正在安装 20 台服务器。

在每个上面,我都为特定用户创建了一个 dsa 密钥。

cat key.pub从每台服务器到~/.ssh/authorized_keys第一台服务器都做了

我验证了所有服务器都可以无需密码登录到第一台服务器。

使用 puppet,我将其.ssh/authorized_key从第一台服务器复制到所有其他服务器。

权限相同,600

我无法自动登录;它仍然可以从服务器登录到第一个服务器 - 但无法登录到任何其他服务器。我以用户身份登录,通过 ssh 连接到其他服务器 - 然后它要求我输入密码。

我重新启动了 sshd 服务,但无济于事。 /etc/ssh/sshd_config 在第一台服务器和所有其他服务器上都是相同的。

这是 RHEL6。

有什么想法吗?我做错什么了吗?

这是 puppet 文件;它现在可以工作了——我的 root 权限是 775

file {"/home/user":
    owner   => user,
    group   => user,
    ensure  => directory,
    mode    => 755,
}

file {"/home/user/.ssh":
    owner   => user,
    group   => user,
    ensure  => directory,
    mode    => 700,
}

file {"/home/user/.ssh/authorized_keys":
    owner   => user,
    group   => user,
    ensure  => file,
    mode    => 600,
    source => "puppet://puppet/files/user_sshkeys.txt";
}

答案1

目录的权限~/.ssh应为700。文件的权限~/.ssh/authorized_keys应为600。您可能希望将用户主目录的写权限限制为用户。

chmod go-w ~/
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

cat不要使用,而是尝试ssh-copy-id命令,因为它会处理这些权限。

您能向我们展示一下您的 Puppet 文件指令吗?这可能可以在那里得到纠正。

答案2

您要设置的是“基于主机的身份验证”。在网上搜索这个,您就会找到所需的内容。这是一个高级 SSH 主题,一旦您完成,就很容易做到。

答案3

Puppet(我写这篇文章时是 3.1.1 版)有一个名为 的类型ssh_authorized_key。使用这个类型,你可以简单地将密钥推送到你的机器上,它会为你处理权限等。

以下是我的配置内容:

ssh_authorized_key { 'root pub key':
    ensure  => present,
    key     => "yourkeyhere",
    name    => "name@server",
    user    => "user",
    type    => "ssh-rsa",

您可以查看相关文档这里

否则,其他人编写的模块可以做同样的事情,但由于类型的功能有一些限制,因此提供了一些额外的选项ssh_authorized_key

相关内容