结束引号后应有额外的字符

结束引号后应有额外的字符

我收到错误

extra characters after close-quote
    while executing
"spawn ssh-add <(echo -e "-----BEGIN RSA PRIVATE KEY-----
 Proc-Type: 4,ENCRYPTED
 DEK-Info: AES-128-CBC,2AB77A7C6E344A120BA00670A3CAB833

 AM57TuHYLo..."

使用 expect 和 spawn 添加带有密码的 ssh 密钥时。这是我的脚本:

eval $(ssh-agent -s)
expect -c "spawn ssh-add <(echo -e \"$SSH_PRIVATE_KEY\\r\"); expect \"Enter passphrase\"; send \"$SSH_PASSPHRASE\\r\"; expect eof;"

在回显 ssh 私钥时,我也尝试了许多组合:

echo "$SSH_PRIVATE_KEY"
echo \"$SSH_PRIVATE_KEY\"
echo -e \"$SSH_PRIVATE_KEY\"
echo '$SSH_PRIVATE_KEY'
echo '$SSH_PRIVATE_KEY'

答案1

您在期望主体中得到了 bash 语法(我不明白您为什么认为您需要在那里进行进程替换)。在处理 bash 中的引用地狱时,here-document 非常方便

expect <<END_EXPECT
    spawn ssh-add "$SSH_PRIVATE_KEY"
    expect "Enter passphrase"
    send "$SSH_PASSPHRASE\r"
    expect eof
END_EXPECT

相关内容