我在继承的项目中使用的脚本有问题,该项目几乎没有文档,并且正在记录所有内容。我正在尝试使用在主机上执行的一行脚本来调试问题,该脚本通过 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 上远程执行此命令?
最佳答案
快速修复:
sshpass -p 'password' ssh -o StrictHostKeyChecking=no user@server
详细修复:
您很可能需要设置异步 key (公共(public)/私有(private))才能正确无密码登录。您的命令没有显示您正在使用 key ,因此我假设您没有使用 key (例如 -A 或 -i/path/to/key)。一般来说 root 用户被阻止(我想不是你的问题),我会为此设置另一个用户或更改 sshd 配置。您还可以比较 Pi Box 之间的 sshd 配置。
参见:https://www.raspberrypi.org/documentation/remote-access/ssh/passwordless.md
关于linux - 通过 SSH 提示输入密码发出命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53379106/