我使用标准用户帐户连接到一台 Linux 机器,当需要执行一些略高于我用户站的操作时,我会使用 sudo。
其中之一就是使用 git(sudo git pull)执行拉取。
我想在我所在的机器和 git 存储库之间设置基于密钥的身份验证,这样就不需要每次都输入密码。
我已经能够在机器上的标准帐户和 git 存储库之间设置身份验证,但是当我尝试将其设置为 root 时,它不起作用(我执行与普通帐户相同的任务,但每次都使用 sudo)
我假设,由于 sudo 以 root 身份运行(sudo whoami 返回“root”),因此生成密钥并将其传输到另一台机器,sudo 应该与我以 root 身份登录时的工作方式相同。我的假设是错误的,还是在另一台机器上使用基于密钥的身份验证作为 root 用户存在问题?
答案1
检查是否PermitRootLogin
设置without-password
为sshd_配置并且“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