为 root 设置基于密钥的身份验证

为 root 设置基于密钥的身份验证

我使用标准用户帐户连接到一台 Linux 机器,当需要执行一些略高于我用户站的操作时,我会使用 sudo。

其中之一就是使用 git(sudo git pull)执行拉取。

我想在我所在的机器和 git 存储库之间设置基于密钥的身份验证,这样就不需要每次都输入密码。

我已经能够在机器上的标准帐户和 git 存储库之间设置身份验证,但是当我尝试将其设置为 root 时,它不起作用(我执行与普通帐户相同的任务,但每次都使用 sudo)

我假设,由于 sudo 以 root 身份运行(sudo whoami 返回“root”),因此生成密钥并将其传输到另一台机器,sudo 应该与我以 root 身份登录时的工作方式相同。我的假设是错误的,还是在另一台机器上使用基于密钥的身份验证作为 root 用户存在问题?

答案1

检查是否PermitRootLogin设置without-passwordsshd_配置并且“root”不在列表中DenyUsers(或在列表中缺失AllowUsers)。

/root/.ssh还要检查和 的权限/root/.ssh/authorized_keys。两者都只能由“root”访问(例如,具有0700和的权限掩码0600)。

答案2

在大多数 Linux 发行版中,默认情况下禁用以 root 身份登录 SSH(请参阅 James Lawrie 或 joschi 的答案以了解如何启用它)。但在我看来,没有充分的理由使用它。(此外,我不确定我是否理解为什么在执行 git pull 时您希望以 root 身份登录,但让我们假设您确实需要这样做……)

无论如何,如果您想以 root 身份运行某项任务而不需要密码,则应配置 sudo 以允许这样做。您需要在文件中添加类似下面的一行sudoers

<username you want to use> ALL=(ALL) NOPASSWD: <command you want to run>

不要忘记先仔细阅读 sudo 和 sudoers 的手册页,然后总是用来visudo编辑你的sudoers配置!

答案3

检查 /etc/ssh/sshd_config 中是否允许 PermitRootLogin

相关内容