ssh-copy-id 返回权限被拒绝

ssh-copy-id 返回权限被拒绝

当我尝试使用时,它总是返回ssh-copy-id -i /root/.ssh/id_ed25519 [email protected]Permission denied, please try again

我知道这是一个使用和ssh-copy-id的脚本。而像将失败。这对我来说很有意义。scpsshscp[email protected]

但是,在我按照这篇文章中的答案解锁了root用户之后:如何启用 root 登录?,仍然失败。为什么会这样,如何修复:我只想以 root 用户身份 ssh 到 192.168.134.140,无需密码。

答案1

问题中的链接指向在本地计算机上启用 Root 登录。但是,您可能需要配置您的计算机openssh-server以允许 Root 登录。


但你的主要问题是:

该文件/root/.ssh/id_ed25519仅可访问root,这就是您获得 的原因Permission denied

可以使用

sudo ssh-copy-id -i /root/.ssh/id_ed25519 [email protected]`

然而,你应该不是那就这么做吧。
您不需要使用本地root来连接到远程root用户。

任何一个:

  • 复制/root/.ssh/id_ed25519到您的普通用户。
    sudo cp -t ~/.ssh/ /root/.ssh/id_ed25519* && sudo chown $USER: ~/.ssh/id_ed25519*
    
  • 或者使用以下命令创建新密钥ssh-keygen

然后ssh-copy-id与新创建或复制的(不带sudo)一起使用。


无论如何,

您不应启用并使用root通过 登录ssh。而是与“普通”用户连接并使用sudo以提升权限。如果您想要这种便利,您还可以sudo为该用户启用无密码登录。

答案2

确保您对 ssh 文件具有正确的权限。

  • .ssh 文件夹:所有者应具有读取、写入和执行权限。因此,我们需要通过 更改权限chmod 700 ~/.ssh

  • 公钥:我们需要给所有者赋予读写权限,给其他组赋予读取权限。因此,我们需要通过 更改权限chmod 644 <your_public_key>

  • 私钥:我们需要给所有者读写权限,不给其他组任何权限。我们需要通过 更改权限chmod 600 <your_private_key>

PasswordAuthentication no检查文件中是否更改了/etc/ssh/sshd_config。如果已重新生成 ssh-keys,则需要更改文件PasswordAuthentication yes中的/etc/ssh/sshd_config。在文件中启用密码验证后,我们只需通过 重新启动 ssh 服务即可sudo systemctl restart ssh。然后尝试复制公钥。复制 ssh 密钥后,我们可以更改PasswordAuthentication no并重新启动服务。

您不应启用 root 用户登录,因为这会造成重大安全问题。如果您确实要启用它,请PermitRootLogin yes在同一个文件中进行设置。

相关内容