我的本地(虚拟)机器上有一个具有 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 配置“窗口)。