【问题标题】:SSH Connection gets refused when executing bash script within Node.js在 Node.js 中执行 bash 脚本时,SSH 连接被拒绝
【发布时间】:2020-05-23 20:02:13
【问题描述】:

所以我的结构是这样的:

main.js
folder1/
   jsFile1.js
folder2/
   jsFile2.js
   bashFile.sh

main.js 需要 jsFile1.js,然后需要并运行 jsFile2.jsjsFile2.js 然后最终使用 ShellJS 运行 bashFile.sh 并传递三个参数。

shell.exec(`bash utils/sshAndCreate.sh ${ip} ${encryptedUser} ${encryptedPw}`);

bashFile.sh:

#!/bin/bash

# Variables
host=$1
user=$2
pw=$3

# Postdata
postdata="someUnfinishedStuff"

# Download the file to the server
ssh root@$host -o StrictHostKeyChecking=no wget http://myOtherServer/api --post-data $postdata -O bash.sh

我的问题是,当我使用 bash bashFile.sh parameter1 parameter2 parameter3 手动启动 bashFile.sh 时,它可以正常工作并且符合预期,但是当我运行 main.js 最终也运行脚本时它不起作用。我只是得到

ssh: connect to host myServerIpHere port 22: Connection refused

还有什么奇怪的,我将shell.exec 部分移到jsFile1.js 并且它工作了几次,但是当我再次尝试时,我的连接也被拒绝了。

注意 1:我之前从未连接到服务器,所以它不在我的 known_hosts 中。

注意 2:child_process 产生相同的错误。

【问题讨论】:

  • 您可能想要使用 ssh 的 -i 选项。见man ssh
  • @RedCricket,连接仍然被拒绝。

标签: node.js bash ssh shelljs


【解决方案1】:

我现在找到了解决方案。即使服务器应该准备好,但有时却没有。所以我通过重复连接过程直到服务器接受连接来解决它。

until ssh root@$host command
do
    sleep 10
done

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-20
    • 1970-01-01
    • 2017-06-03
    • 1970-01-01
    • 2019-05-02
    • 2015-04-26
    • 2021-06-05
    • 2017-08-24
    相关资源
    最近更新 更多