【发布时间】: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