sudo 密码无法通过 ssh 起作用

sudo 密码无法通过 ssh 起作用

我的本地(虚拟)机器上有一个具有 sudo 权限的用户,当我以该用户身份登录时,我可以运行 SUDO 命令,例如:

$ sudo ls
[sudo] password for <user>:  ***PASSWORD ENTERTED***
<list of files>

然而,当我通过 SSH 进入同一台机器时,我得到:

$ ssh <user>@<ip-address>
<user>@<ip-address>'s password: ***PASSWORD ENTERTED***
.
.
.
[<user>@<host> ~]$ sudo ls
[sudo] password for <user>:  ***SAME PASSWORD***
Sorry, try again.
[sudo] password for <user>: ***[CTRL-C]***
sudo: 1 incorrect password attempt

知道为什么该密码不被 SSH 接受吗?

其实这并不重要,但我可以通过 ssh “su” 到 root(使用 root 密码),但尝试使用“sudo su”(使用用户密码)到 su 失败。

编辑:我正在 SSH 的机器CentOS 9在 Virtualbox 中运行的机器,以及我正在 SSH 连接的机器洛奇9机器也在 Virtualbox 中。正如我所说,我可以通过 SSH 顺利通过,大多数命令都可以运行,但出于某种原因,SUDO 拒绝接受密码。但是,我刚刚尝试从 Windows 主机将“PuTTY”连接到同一台 VM,并惊讶地发现不仅 SSH 会话可以工作,而且 SUDO 也可以工作!所以看来 Rocky 一定有问题() 机器,而不是 CentOs () 机器。

答案1

根据您的评论,听起来波浪号 ( ~) 字符给您带来了麻烦。

当你处于 SSH 会话中时,转义序列^M~(即Returnthen~Ctrl+ Mthen ~)具有特殊含义 - 请参阅“转义字符“部分的手册页

按下序列Return, ~,?将显示支持的转义序列列表。

如果您不幸地按下了Return,然后尝试输入一个波浪号,然后是其中一个选项,那么您将不会将任何字符传送到服务器……并且按两次波浪号将“取消转义”并代表您发送一个波浪号!

此外,如果您输入不受支持的序列,大多数客户端都会很好地将字符发送到服务器,就好像您从来没有启动过转义序列一样 - 因此这可能会在一段时间内被忽视。

考虑以下内容,我输入c, a, t, Return, , ~~并且只得到一个波浪符号:

attie@patch:~$ cat
~

尽管我Return打算发出命令(并且确实发出了),但 SSH 客户端也会将其视为 ,Return转义~序列的开头。

值得注意的是,这是 SSH 的一个特性客户,而不是服务器...因此,您会在 OpenSSH 客户端(以及其他客户端)中发现这种行为 - 但它不会发生在其他客户端中(例如 PuTTY,它使用“PuTTY 配置“窗口)。

相关内容