我在 Heroku 上部署了一个定期将文件上传到 ssh 服务器的工作人员。它写在 Node.js 上,它确实:
require('child_process').exec('scp -i id_rsa myfile.txt myuser@myserver.com:updated.txt', function() { ... });
为了连接到服务器,存储库有一个 *id_rsa* 文件,其私钥比myserver.com授权的私钥。我已经在两台计算机上对其进行了测试(与myserver.com没有密钥交换)并且它可以工作,但是当我将它上传到 Heroku 时,它 scp 输出:
Host key verification failed.
为什么?
笔记
我也试过而不是执行scp:
cat file.txt | ssh [myuser]@[myserver] "cat > updated.txt"
同样的问题。
更新
执行ssh -v ...它输出:
[...]
debug1: read_passphrase: can't open /dev/tty: No such device or address
Host key verification failed.
[...]
我无法在 Heroku 上访问 tty?
这是 repo 上的所有文件:
main.js
require('child_process').exec('scp -i id_rsa file.txt [myuser]@[myserver]:updated.txt', function(error, stdout, stderr) {
if (error)
console.error('FAILED', stderr.toString());
console.log('OUTPUT', stdout.toString());
});
id_rsa
-----BEGIN RSA PRIVATE KEY-----
[censored]
-----END RSA PRIVATE KEY-----
包.json
{
"name": "exta",
"version": "0.0.1",
"engines": { "node": "0.6.x" }
}
档案
worker: node main
文件.txt
Testing