设置 ubuntu 用户以进行 ssh 连接

设置 ubuntu 用户以进行 ssh 连接

我创建了一个新的 Ubuntu 服务器,并在 root 用户中创建了一个新用户。我遵循的步骤:

sudo adduser tom

sudo su - tom
mkdir .ssh
chmod 700 .ssh
touch .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
nano .ssh/authorized_keys    // paste public key

看起来没问题,我可以登录[email protected]。但是,当我以 Tom 身份登录时,它会请求许可,当我执行 sudo 操作时,它会要求输入密码,而我没有他的密码,因此我使用我的 root 密码,因此它会发出警告:

[sudo] tom 的密码:tom 不在 sudoers 文件中。此事件将被报告。

从我的根用户中,我尝试将汤姆添加visudo

root    ALL=(ALL:ALL) ALL
tom     ALL=(ALL:ALL) ALL

但这并没有改变任何事情。

这种设置的正确方法是什么,以便 Tom 有权运行东西,并且向他询问的唯一密码是他的 ssh 密码? Tom 应该使用他的 ssh 密码运行类似sudo npm install或 之类的东西sudo composer install,也许他甚至不应该知道 root 密码

我在这里缺少什么?

答案1

编辑:

根据第二次阅读,如果您仍然希望提示 Tom 使用 sudo 的密码,您需要:

tom    ALL = ALL: ALL

如果您希望 Tom 能够在没有密码的情况下运行 sudo,请使用以下答案。


我相信你会希望该行是:

tom    ALL = NOPASSWD: ALL

解释:

tom是此行适用的用户,第一个ALL是此行适用的主机,NOPASSWD是指定不需要密码的标签,最后一个ALL指定 tom 可以通过 sudo 运行哪些命令。

请注意,如果您想限制哪些命令(甚至命令和参数的组合),您可以将第二个ALL.例如:

tom    ALL = NOPASSWD: /bin/kill, /usr/bin/lprm

请参阅Sudoers 手册页替代手册页页面下方大约 80% 处还有其他示例。

答案2

您可以从 root 或sudo主用户执行以下操作:

usermod -aG sudo tom

这会将您的用户 tom 添加到“sudo”组,这就是所需的全部内容。由于这使得/etc/sudoers无需对文件进行更改,因此您可以在其中恢复更改,除非您想删除要求输入命令密码的安全层sudo。如果您想要这个,您应该使用该行(如@杰森拉什在他的回答中)在你的/etc/sudoers文件中:

tom    ALL = NOPASSWD: ALL

但是,如果您想要使用命令密码请求的常用方式,sudo您应该保留该/etc/sudoers文件,只需将用户添加到“sudo”组即可。然后你只需要做/etc/ssh/sshd_config相应的更改,不允许密码登录。

通常 Ubuntu 的设置方式是让普通用户属于一些重要的组。您可以通过groups在终端中输入来检查您的主要用户所在的组。

这是它向我显示的内容,但您的输出可能与此不同:

$ groups
<users-own-group> adm cdrom sudo dip plugdev lpadmin sambashare

不应具有广泛权限的普通用户至少应位于cdrom, plugdev, lpadmin.但由于您正在创建 sudo 用户(至少在我看来您希望如此),您应该相应地将您的用户添加到组中。您可以在上述命令中使用 来连接组,。但是sambashare,如果您没有安装 samba,则可能不需要这样的组。

usermod -aG <group1>, <group2> <username>

相关内容