Node.JS 使用脚本 运行 通过 SSH 导出 PGP 密钥

Exporting PGP Keys over SSH using a script run by Node.JS

我正在尝试使用此脚本将 PGP 子密钥导出到远程计算机:

#!/bin/bash
ssh-keyscan -H $REMOTE_MACHINE >> /root/.ssh/known_hosts
gpg2 --verbose --export-secret-key \
    $EXPORT_THIS_ID | sshpass -p $REMOTE_PASS \
    ssh $REMOTE_USER@$REMOTE_MACHINE \
    gpg2 --verbose --import
echo '' > /root/.ssh/known_hosts

我得到的回复是:

# host.mynet.lan:22 SSH-2.0-OpenSSH_8.0
# host.mynet.lan:22 SSH-2.0-OpenSSH_8.0
# host.mynet.lan:22 SSH-2.0-OpenSSH_8.0
# host.mynet.lan:22 SSH-2.0-OpenSSH_8.0
# host.mynet.lan:22 SSH-2.0-OpenSSH_8.0
gpg: writing to stdout
gpg: WARNING: nothing exported
Permission denied, please try again.

这是从 nodejs 后端完成的,脚本是 运行 使用 child.spawn 并且响应通过管道传输到前端以显示给用户。

我看到 gpg 说写到标准输出,但我不确定从这里去哪里。

以上脚本完美运行。我的问题是我如何将 $REMOTE_PASS 变量传递给脚本。对于遇到这种情况的人,请注意密码中的特殊字符。如有必要,将传递封装在 ""(引号)中。为了安全起见,如果密码是高度机密的,请不要处理这样的密码。

就我而言,初始连接后密码不再可用。