sudo 密码无法通过 ssh 工作

Sla*_*ast 9 linux ssh sudo passwords

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

$ sudo ls
[sudo] password for <user>:  ***PASSWORD ENTERTED***
<list of files>
Run Code Online (Sandbox Code Playgroud)

然而,当我通过 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
Run Code Online (Sandbox Code Playgroud)

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

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

编辑:我通过SSH 访问的机器是在 Virtualbox 中运行的CentOS 9机器,而我通过SSH 访问的机器也是在 Virtualbox 中运行的Rocky 9机器。正如我所说,我可以很好地进行 SSH,并且大多数命令都可以工作,但由于某种原因 SUDO 拒绝接受密码。然而,我刚刚尝试从 Windows 主机“PuTTY”进入同一个虚拟机,并惊讶地发现不仅 SSH 会话有效,而且 SUDO-ing 也有效!所以看来 Rocky ( from ) 机器有问题,而不是 CentOs ( to ) 机器有问题。

Att*_*tie 19

在您发表评论后,听起来波浪号 ( ~) 字符给您带来了问题。

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

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

如果您不幸刚刚按下Return,然后尝试输入一个标题,后跟这些选项之一,您将不会收到任何传递到服务器的字符......并且按两次波浪号将“取消转义”并发送一个代号代表您!

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

考虑以下情况,我输入c, a, t, Return, ~, , ~,但只得到一个波浪号:

attie@patch:~$ cat
~
Run Code Online (Sandbox Code Playgroud)

尽管 myReturn打算发出该命令(并且确实这样做了),但它也被 SSH 客户端视为Return,~转义序列的开始。

需要注意的是,这是 SSH客户端的一个功能,而不是服务器的功能...因此您会在 OpenSSH 客户端(以及可能的其他客户端)中发现这种行为,但在其他客户端中不会发生这种情况(例如 PuTTY,它使用“ PuTTY 配置”窗口代替)。

  • 这是 SSH 客户端(而非服务器)的一项功能,而 PuTTY 不会执行此操作 - 它使用“_PuTTY 配置_”窗口。 (8认同)