我用一个标准的用户帐户连接到一台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”访问(例如有一个权限掩码0700和0600 )。
作为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