尝试连接到远程SSH服务器、Linux Ubuntu虚拟机并执行命令。
我觉得问这个问题很愚蠢,但我已经检查了几十个节点模块,没有找到解决方案。
我认为这是我这边的问题,因为我是一个编码新手,但我希望连接到虚拟机(运行在Linux,Ubuntu上),以便自动执行一些命令。截至目前,我通过PuTTY连接到服务器。我使用默认端口(22),填写IP地址和用户名,并上传我的密钥。在经历了一吨的SSH模块后,每一个都没有给我任何东西:没有错误,没有响应,什么都没有--除了,有时候,“所有配置的身份验证方法都失败了。”这让我认为我不正确地链接了我的密钥。我这样填写私钥路径:key:
-或者不管选项名称是什么-require('fs').readFileSync('./keys/key.key')
或者如果已经获取了fs,则仅为readFileSync('./keys/key.key')
。如果选项只需要路径,则我已经填写了路径,并且我也尝试使用Buffer.from()
,尽管我对它不是很熟悉。密钥默认为RSA格式,但我也使用ssh-keygen
将其转换为OpenSSH,但没有效果。我尝试使用键盘交互,但主机不需要此功能,根本没有键盘交互提示。我尝试向密钥添加密码,但没有任何效果。我不知道该怎么办,我在网上也找不到答案。
谢谢大家!
1条答案
按热度按时间yyyllmsg1#
经过几天的搜索,我终于找到了答案。原来,有一个关于主机真实性的提示,必须解决。我根本没有注意到这一点,因为我已经在我喜欢的SSH客户端上接受了它,它再也没有提示我-提示也有自己的宏伟的UI,所以我不知道它是固有的,但我更倾向于认为它是客户端本身的问题。我无法使用键盘交互修复这个问题,但我可以修改子进程方法
exec
中ssh
命令的选项。这绕过了真实性提示,因为它欺骗系统,使系统相信它已经是一个已知主机。