CentOS:具有单独公钥文件的用户

CentOS:具有单独公钥文件的用户

首先,我要说的是,我知道这里和其他网站上有很多类似的问题。我确信我已经耗尽了它们,但我很高兴被证明是错误的,因为我需要解决这个问题。

我有一个 CentOS 服务器,root 用户可以通过公钥进行 ssh 访问。我创建了一个具有受限访问权限的单独用户(我们称之为remote_user)。作为执行此操作的一部分,我在计算机上的不同位置设置了主目录。

作为remote_user,我cd'd到~/并创建了.ssh/和.ssh/authorized_keys。我将公钥添加到authorized_keys(这个相同的公钥存在于root的authorized_keys中,它可以工作)。我确保 ~/ 和 ~/.ssh 的权限设置为 700,并且 ~/.ssh/authorized_keys 的权限设置为 600。我确保所有这些文件都归 Remote_user 所有。

关于SELinux,我尝试过:将其设置为宽松(暂时),restorecon -R -v ~/.ssh/authorized_keys并使用ls -Zchcon确保remote_user/.ssh 和remote_user/.ssh/authorized_keys 文件与其相应的根文件具有相同的安全上下文。

/etc/ssh/ssh_config 的内容是:

Host *
    GSSAPIAuthentication yes
    ForwardX11Trusted yes
    SendEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
    SendEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
    SendEnv LC_IDENTIFICATION LC_ALL LANGUAGE
    SendEnv XMODIFIERS

但还没有骰子。使用 putty 连接到服务器并输入用户名 root,我的 Paegant 密钥将授予访问权限。当输入用户名作为remote_user时,系统会立即提示我输入密码。当我使用密码时,我可以毫无问题地访问它。我还尝试使用 ssh 服务器从另一台服务器进行 ssh 转发,结果相同。

那么我错过了什么?

答案1

这一切似乎都应该如此,...您唯一没有提及的是,您尝试连接的计算机是否具有私钥?也许它没有保存在需要的地方(~/.ssh/id_rsa例如) - 如果没有,那么您必须使用以下命令进行连接:

ssh -i <path to identity file> <username>@<hostname>

另外,我建议您不要“手动”复制身份,除非您确实需要并且知道自己在做什么,而只需使用 ssh 命令即可:

ssh-keygen
ssh-copy-id <username>@<hostname>

就是这样。这将首先创建一个新的身份文件,然后将其复制到主机。如果您已经在某处拥有身份文件,您当然也可以使用-i <path to identity file>带有 ssh-copy-id 的标志。

编辑:我刚刚注意到您提到您正在与 Putty 连接 - 这有点不同,putty 有它自己的机制,PuTTY 密钥生成器。

生成并保存私钥和公钥 - 私钥是我们之前示例中保留在客户端计算机上的 id_rsa,公钥是 id_rsa.pub,需要将其复制到服务器计算机上的 ~/.ssh/authorized_keys 中。

完成此操作后,您需要在“连接/SSH/身份验证”选项卡下为您正在使用的会话添加私钥。

相关内容