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

我有一个VPS,我有多个“用户”(所有我,为不同的事情)。 我configuration我的本地SSH公钥,并使用ssh-copy-id复制到他们所有的。 但是,我可以在没有密码提示的情况下login,但是,这让我疯狂。

我使用ssh -v [email protected]作为一个工作,而不是。 输出文本全部完全相同,直到结束:

工作的样子是这样的:

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守护进程以及服务器。

我相信你应该在服务器上检查你的authorized_keys文件。 在大多数我看到ssh-copy-id的系统上,这是一个非常基本的脚本,没有很多的错误检查。

有几次,我看到它创build重复的条目,或在authorized_keys文件中创build中断的条目。 我看到它上传了一个不同的关键,​​然后是预期的。

为了在使用ssh-copy-id时获得最好的结果,你应该使用-i选项来显式地标识你想要上传的密钥的公共部分。 如果你不用-i选项,它将从几个位置select第一个文件,包括从SSH代理套接字。

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

不是真正的自己的答案,但没有足够的代表评论Zoredache的答案。

我会在检查文件,目录和父目录的权限和所有权的基础上添加,检查文件的内容。 根据您build立文件的方式,可能会将密钥存储为多行而不是单行。

我有这个问题复制和粘贴从一个文件到另一个文件,因为行长度与terminal的autowrap相同,所以很难检测到。