为root设置基于密钥的身份validation

我用一个标准的用户帐户连接到一台linux机器,并在需要在用户站点上方执行某些操作时使用sudo。

其中之一就是使用git(sudo git pull)来执行pull操作。

我想在我所在的机器和git存储库之间build立基于密钥authentication,以便每次都不需要input密码。

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

我推测,作为sudo作为运行(sudo whoami返回'根')生成密钥,并将其转移到另一台机器作为sudo应该工作相同,因为如果我以root身份login。 假设我错了,还是在使用基于密钥的身份validation作为另一台机器上的root用户时出现问题?

检查您的sshd_config中的 PermitRootLogin是否设置为without-password ,并且“root”不在DenyUsers (或在AllowUsers缺less)列表中。

还请检查/root/.ssh/root/.ssh/authorized_keys上的权限。 两者都应该只能被“root”访问(例如有一个权限掩码07000600 )。

作为root用户的SSHlogin在大多数linux发行版中默认是禁用的(请参阅James Lawrie或Joschi的答案以了解如何启用它)。 但没有很好的理由使用IMO。 (另外,我不确定我是否理解为什么你想在做一个git pull的时候成为root,但是让我们假设你真的需要这个…)

无论如何,如果你想以root的身份运行某个任务而不需要密码,那么你应该configurationsudo来完成这个任务。 在sudoers文件中,您需要一个如下所示的行:

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

不要忘记仔细阅读sudo&sudoers的手册,并且始终使用visudo来编辑你的sudoersconfiguration!

在/ etc / ssh / sshd_config中检查PermitRootLogin