linux - 使用 SSH_ASKPASS 的 ssh 总是失败

标签 linux bash ssh

我想通过 ssh 批量运行命令并让调用机器确定该命令的退出状态和输出,但密码是预先知道的并且不是手动输入的。

This似乎是我想要的,但它不起作用。

飞行前检查:

#> ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null testuser@localhost 'echo here' && echo ok || echo no
Warning: Permanently added '[localhost]:22' (ECDSA) to the list of known hosts.
testuser@localhost's password: 
here
ok

好的开始。现在将其与 SSH_ASKPASS 捆绑在一起

#!/bin/bash

u="testuser"
p="testpassword"

ask="/tmp/ask"

echo "echo $p" > $ask
chmod +x $ask

SSH_ASKPASS=$ask
DISPLAY=localhost:0.0
setsid ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null $u@localhost 'echo here' && echo ok || echo no

忽略安全问题,这只是一个 POC。

当我运行它时

#> /tmp/test.sh
Warning: Permanently added '[localhost]:22' (ECDSA) to the list of known hosts.
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
no

怎么了?

最佳答案

你需要导出环境变量来申请你的ssh命令:

export DISPLAY
export SSH_ASKPASS 

使用 -vvv 运行 ssh 会告诉您未使用 SSH_ASKPASS 命令。

关于linux - 使用 SSH_ASKPASS 的 ssh 总是失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40718550/

相关文章:

linux - Iptables:选择 pre-up/up/post-up rsp 的原因。下降前/下降/下降后

linux - 在汇编中从/dev/random 返回一个字节

bash - 在 bash 中使用带空格的文件名和 scp 和 chmod

git - 安装gitosis后无法SSH到主机

node.js - npm 安装错误 : "Host key verification failed."

linux - 获取子目录中的最新文件(同名)

c++ - 从 C++ 使用 netlink 的最佳方法是什么?

linux - 创建 Bash 脚本来检查和禁用 SELinux : How to Prompt User Input?

bash - 如何为函数启用 bash 自动完成?

windows - Windows 的 Git SSH 客户端和 .ssh/config 文件的错误路径