当前位置: 首页>>技术教程>>正文


如何为root用户设置无密码SSH访问

,

问题描述

我需要配置一台机器,以便通过SSH远程自动化软件安装。在the wiki之后,我能够设置SSH密钥,这样我的用户就可以在没有密码的情况下访问机器,但是当我使用sudo时,我仍然需要手动输入我的密码,这显然是一个自动化过程不应该做的。

虽然我的/etc/ssh/sshd_configPermitRootLogin yes,但我似乎无法以root用户身份登录,大概是因为它不是带有单独密码的”real”帐户。

如何配置SSH密钥,以便进程可以在Ubuntu上以root身份远程登录?

最佳解决思路

第1部分:没有密码的SSH密钥

要为root用户设置无密码SSH连接,您需要在服务器上具有root访问权限。最简单的方法是暂时允许root通过密码登录ssh。无论如何,您需要在服务器上进行root访问才能执行此操作。如果您在服务器上没有root访问权限,请与服务器管理员联系以获取帮助。

在客户端(您在哪里ssh FROM)

首先制作一个没有密码的ssh密钥。我强烈建议你给它一个名字,而不是使用默认值

ssh-keygen -f foo

-f选项指定文件名,foo是一个示例,使用您希望的任何名称。

当系统提示您输入密码时,只需按Enter键即可生成没有密码的密钥。

接下来,您需要将密钥传输到服务器。最简单的方法是使用ssh-copy-id。要执行此操作,您必须暂时允许root ssh进入服务器。

在服务器上(你在哪里ssh)

编辑/etc/ssh/sshd_config

sudo nano /etc/ssh/sshd_config

确保允许root用以下语法登录

PasswordAuthentication yes
PermitRootLogin yes

重启服务器

sudo service ssh restart

设置root密码,使用强密码

sudo passwd

在客户端:

从客户端,将密钥传输到服务器

ssh-copy-id -i ~/.ssh/foo root@server

将”foo”更改为密钥的名称,并在询问时输入服务器root密码。

测试密钥

ssh -i ~/.ssh/foo root@server

假设它工作,取消设置root密码并禁用密码登录。

在服务器上:

sudo passwd -l root

编辑/etc/ssh/sshd_config

sudo nano `/etc/ssh/sshd_config`

更改以下内容:

PasswordAuthentication no
PermitRootLogin without-password

重启服务器

sudo service ssh restart

在客户端(测试):

您现在应该可以在没有密码的情况下使用密钥进行ssh,并且您不应该像没有密钥的任何用户那样使用ssh。

ssh -i ~/.ssh/foo root@server

第2部分:通过sudo运行命令而不输入密码

您配置sudo以允许您在没有密码的情况下运行命令。

这在两个地方回答:

在这两个中,我建议尽可能少的命令(第一个答案)而不是所有命令(第二个答案)。

次佳解决思路

你混淆了两件不同的事情:

无密码日志用于确保人们无法通过猜测密码远程登录您的系统。如果您可以使用ssh username @ machine并在没有密码的情况下进行连接,则可以正确设置,并且与此无关。

sudo用于允许普通用户帐户使用超级用户权限执行某些操作。这确实需要用户输入他们的密码。无论您是远程连接(通过无密码连接还是password-protected SSH),机器上都是本地连接,都会发生这种情况。您正在尝试将sudo设置为不要求您输入密码,这是不推荐的,但您可以通过像https://askubuntu.com/a/74083/6161这样的答案来学习如何做到这一点。

未来读者请注意这个答案:

我的上述答案没有回答原始海报的实际问题,它描述了你应该做的事情。如果您确实希望允许远程连接到root帐户,则需要启用root帐户(请参阅下面的评论)。再次,让我说不要允许远程远程log-ins到您的root帐户。

第三种解决思路

PermitRootLogin控制是否允许名为”root”的用户(准确地说:具有UID 0的任何用户)登录。如果以root身份登录,则不需要sudo来执行特权任务。

另一方面,如果您在没有密码的情况下登录用户帐户并使用sudo,则必须配置sudoers文件,而不必使用/etc/ssh/sshd_config。请参阅How to make Ubuntu remember forever the password after the first time

第四种思路

问:使用无密码SSH以root用户身份登录远程主机(例如ssh root @ remotehost_ip)

A.要使用无密码SSH以root用户身份登录远程主机,请按照以下步骤操作。

第1步:首先,您必须与远程主机root用户的authorized_keys文件共享本地用户的公钥。有很多方法可以做到这一点,这是一个例子。

https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys–2

或者,您只需将公钥内容粘贴到远程主机root用户的authorized_keys文件即可。

第二步:配置ssh以允许远程主机无密码登录。登录到远程主机并编辑/etc /ssh /sshd_config文件,然后重新启动ssh服务。不要忘记评论”PermitRootLogin yes”。

#vim /etc/ssh/sshd_config
PermitRootLogin without-password
StrictModes no

#service ssh restart

注释掉#PermitRootLogin是的

第3步:使用之前共享公钥的用户测试您与本地计算机的连接。

$ssh root@remotehost_ip

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2225.html,未经允许,请勿转载。