gpt4 book ai didi

node.js - 从 Heroku 打开 SSH

转载 作者:太空宇宙 更新时间:2023-11-04 02:59:21 24 4
gpt4 key购买 nike

我在 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 进行 key 交换)并且它可以工作,但是当我将其上传到 Heroku 时,它会输出:

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?

这是存储库中的所有文件:

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-----

package.json

{
"name": "exta",
"version": "0.0.1",
"engines": { "node": "0.6.x" }
}

配置文件

worker: node main

文件.txt

Testing

最佳答案

发现问题了,问题不在RSA key 上,而是在服务器 key 上。

第一次在两台计算机之间建立 SSH 连接时,SSH 会要求您将服务器 key 添加到 ~/.ssh/known_hosts 中,以便执行此操作,它会尝试将其提示到 tty 中。由于我已经在我的计算机上接受了服务器的 key ,因此当我在本地测试它时并没有发生这种情况。

由于我不确定如何命令我的程序将 key 添加到~/.shh/known_hosts,我欺骗了 SSH 在不询问的情况下添加 key :

ssh -i id_rsa -o -o StrictHostKeyChecking=no [myuser]@[myserver]

由于我不想接触 Heroku 的环境,因此我还要求 ssh 将 key 存储在 /dev/null 上,因此不会修改任何内容:

ssh -i id_rsa -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no [myuser]@[myserver]

而且......它有效! :D

关于node.js - 从 Heroku 打开 SSH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15006506/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com