如何在node.js(simple-ssh模块)中设置SSH代理转发?

时间:2016-11-10 11:21:17

标签: javascript node.js ssh

我是这个node.js的新手,并使用模块simple-ssh从我的windows到远程服务器执行shell命令。
每当我运行我的代码时,控制台都会用[Error: Authentication failure. Available authentication methods: publickey,gssapi-keyex,gssapi-with-mic,password,keyboard-interactive]诅咒我 我已经放置了一个RSA私钥文件,并设置了Windows ENV variable SSH_AUTH_SOCK。但它仍然不断给出错误 下面是我为simple-ssh编写的代码片段:

var ssh = new SSH({
                    host: sshHost,
                    user: 'root',
                    timeout: 11000000,
                    key: require('fs').readFileSync("D:/Keys_pair_prvt_pub/rsa_key"),
                    agent: process.env.SSH_AUTH_SOCK,
                    agentForward: true
                });

当我尝试从我的Windows cmd-prompt SSH遥控器时,它给了我错误:

$> ssh -A <myRemote.host.com>
ssh : The term 'ssh' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the
spelling of the name, or if a path was included, verify that the path is correct and try again.

我错过了什么吗?如果是,那我该如何克服呢? 任何帮助将不胜感激:)
感谢。

1 个答案:

答案 0 :(得分:1)

您的密钥需要添加到服务器上的〜/ .ssh / authorized_keys,才能使密钥正常工作。

mscdex npm包SSH2,simple-ssh包装,在windows中使用ssh.agent的文档中有这个:

`agent - string - ssh-agent的UNIX套接字的路径,用于基于ssh-agent的用户身份验证。 Windows用户:设置为“pageant”,以使用Pageant或(实际)路径进入cygwin“UNIX套接字”。