公共 SSH 密钥不适用于同一服务器上的所有用户

公共 SSH 密钥不适用于同一服务器上的所有用户

我有一个 VPS,上面有多个“用户”(都是我,用于不同的目的)。我配置了本地 SSH 公钥,并使用 ssh-copy-id 将其复制到所有用户。但是,只有其中一些用户无需输入密码即可登录,这让我很抓狂。

我使用了 ssh -v[电子邮件保护]一个有效,一个无效。输出文本完全相同,直到最后:

有效的方法如下:

debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/tom/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug1: Authentication succeeded (publickey).
Authenticated to xxx.xxx.xxx.xxx ([xxx.xxx.xxx.xxx]:22).
debug1: channel 0: new [client-session]
debug1: Entering interactive session.
debug1: Sending environment.
debug1: Sending env LANG = en_US.UTF-8

看起来不像这样的:

debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/tom/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Trying private key: /home/tom/.ssh/id_dsa
debug1: Trying private key: /home/tom/.ssh/id_ecdsa
debug1: Next authentication method: keyboard-interactive
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Next authentication method: password

我已经仔细检查了 authorized_keys 中的密钥和文件权限对于每个用户和 .ssh 文件夹是否相同,但由于某种原因,服务器不接受完全相同的密钥,即存储在服务器上的完全相同的密钥。

我已尝试重新启动 sshd 守护程序以及服务器。

答案1

我认为您应该检查authorized_keys服务器上的文件。在大多数我见过 ssh-copy-id 的系统上,它是一个非常基本的脚本,没有进行大量的错误检查。

有几次,我看到它创建了重复条目,或在authorized_keys文件中创建了损坏的条目。我还看到它上传了与预期不同的密钥。

为了在使用时获得最佳效果,ssh-copy-id您应该使用 -i 选项明确标识要上传的密钥的公共部分。如果您不使用 -i 选项,它将从几个位置(包括从 SSH 代理套接字)中选择第一个文件。

花几秒钟检查系统上的 ssh-copy-id 脚本,您几乎肯定会明白我在说什么。

答案2

这实际上不是一个独立的答案,但对于对 Zoredache 的答案发表评论来说还不够。

我想补充一点,除了检查文件、目录和父目录的权限和所有权之外,还要检查文件的内容。根据您构建文件的方式,密钥可能会存储为多行而不是一行。

我在将键从一个文件复制并粘贴到另一个文件时遇到了这个问题,而且由于行的长度与终端的自动换行长度相同,因此很难检测到。

相关内容