【问题标题】:Issuing Command Via SSH Prompts for Password通过 SSH 发出命令提示输入密码
【发布时间】:2023-03-20 03:46:01
【问题描述】:

我在继承的项目中使用的脚本存在问题,该项目几乎没有文档,并且正在记录所有内容。我正在尝试使用在主机上执行的一行脚本来调试问题,以通过 SSH 调用连接到 LAN 的 Raspberry Pi 以返回有关 Pi 的一些信息。

我们已经有了这个 Raspberry Pi 的工作版本,它可以毫无问题地执行脚本,我不确定有什么区别。在新版本上执行时,它会提示输入 Pi 上的 root 密码,但在以前版本的设备上没有这样做。我认为这与 SSH 配置有关,但我对 SSH 的了解还不够,无法说出原因。

特别是导致问题的行是:

ssh -o StrictHostKeyChecking=no {host_name} uname -a &>/dev/null
rc=$?       #gets the return value of the remote command so we can read the uname info

{host_name} 当然是它连接到的实际主机名,但出于隐私原因,我把这部分省略了。两台机器上的脚本都是一样的。

两个 Pi 设备的型号相同,我无法缩小可能导致我无法执行此命令的原因。有谁知道我需要配置什么才能在 Pi 上远程执行此命令?

【问题讨论】:

  • 无法用手头的信息来回答。您在两个 Pis 上是否有相同的用户?如果您这样做,其中一个是否在您的本地计算机上有一个专用的~/.ssh/config 条目?如果没有,工作人员在/etc/sudoers/etc/sudoers.d/* 中是否有相关条目? P.S.:我很惊讶脚本会按照您的要求执行,通常要在远程主机上执行的命令需要通过引号与其参数分组,例如ssh -o StrictHostKeyChecking=no {host_name} "uname -a" &>/dev/null ...
  • 可能第一台设备之前有人设置了 ssh 密钥,但这个新设备没有,因为你没有这样做。
  • @tink 是的,两台设备上的用户相同,因为用户是由相同的脚本创建的。不,该目录中没有任何 Pi 的“配置”文件,只有一个 known_hosts 文件,但 /etc/ssh 中有几个私钥和公钥。我目前正在将这些从旧的复制到新的,看看是否有任何改变。这可能是一个 sudoers 问题,但我认为我已经解决了这个问题。
  • 您在原帖中还提到了root - 您真的以root 身份执行ssh 命令吗?! ;) 继续刺激。顺便说一句,在 /etc/ssh 中查找密钥是错误的地方,检查 root 的 ~/.ssh 是否有 authorized_keys ...
  • 该命令没有以root身份显式执行,但ssh命令只指定主机名,不指定用户,因此默认为root。另外,正如我所说,除了 known_hosts 文件之外, ~/.ssh 中没有任何内容。

标签: linux bash ssh raspberry-pi


【解决方案1】:

快速修复:

sshpass -p 'password' ssh -o StrictHostKeyChecking=no  user@server

详细修复:

您很可能需要设置异步密钥(公共/私人)以进行正确的无密码登录。您的命令没有显示您正在使用密钥,所以我假设您没有使用(例如 -A 或 -i /path/to/key)。通常 root 用户被阻止(我猜不是你的问题),我会为此设置另一个用户或更改 sshd 配置。您还可以比较 Pi Box 之间的 sshd 配置。

见:https://www.raspberrypi.org/documentation/remote-access/ssh/passwordless.md

【讨论】:

  • 好吧,这就是我可以探索的东西,但重点是要弄清楚为什么原来的不需要密码并更改新的以反映它。我不希望更改脚本并弄清楚原始脚本是如何解决此问题的,因为我应该记录设置过程,而不是更改它。
  • @DarinBeaudreau 我们没有足够的信息。回答你的问题 :-( ..我会首先比较 PI 框之间的 ssh 配置文件。你能与我们分享这些信息吗?
  • 正如我上面提到的,没有~/.ssh/config。该目录中唯一的文件是 known_hosts 文件。
  • 在检查了两台设备上的 sshd_config 之后,发现了一件事。在原始设备中,/etc/ssh 中的 sshd_config 文件有一行显示“PermitRootLogin yes”,而新设备将该行注释掉,但显示“#PermitRootLogin 禁止密码”。这可能是问题吗?
  • 在工作系统上尝试 ssh -vv 看看它在做什么
【解决方案2】:

好的,经过一番挖掘,我发现 /root 下有一个单独的 .ssh 目录,其中包含一个 authorized_keys 文件。将其复制到新的 Pi 后,它起作用了。我一直想知道是否有一个单独的 root 配置文件夹,但我从来没有去挖掘 /root,所以我不知道它在那里。

【讨论】:

    猜你喜欢
    • 2019-03-07
    • 1970-01-01
    • 1970-01-01
    • 2016-04-08
    • 2015-08-27
    • 2012-08-20
    • 2019-09-29
    • 2012-08-11
    • 1970-01-01
    相关资源
    最近更新 更多