Articles of ssh

NodeJS SSH身份validation主机和命令执行

我想有一个NodeJS应用程序,我可以通过SSH连接公钥并发送一些数据。 更加明确的说法应该如下: NodeJS应用程序已经编写了一些函数 从一个服务器我ssh的nodejs应用程序,并试图通过我的公钥识别我 通过身份validation后,我可以发送一些string,应用程序将parsingstring并执行不同的function 唯一的问题是,我不能设法做任何SSH npm包现有。 我想要nodejs应用程序只接受SSH连接,并进行身份validation,并等待一些string。 这可能吗? 编辑:我想用这种方法,因为我只想调用节点函数来执行一些只允许一些客户端(服务器),我不想通过HTTP发送这些请求,所以任何人都可以访问它

启动一个节点服务器并让它运行

这可能是一个愚蠢的问题,对不起。 但我SSH进入一个服务器,并运行我的节点服务器的命令:节点server.js 我注意到,但是如果我的SSH会话突然停止(互联网切断等),那么我面临一个错误。 networking错误意外closures会议或类似的东西。 然后我注意到我的节点服务器已经停止。 然而事实上没有什么问题。 这就像我有Ctrl + C的,但否则我只是从我的SSH会话超时。 很显然,我做错了什么。 有没有办法让ssh,运行服务器rand断开连接,而不需要服务器closures或类似的? 或者为了避免我的SSH会话崩溃,并把它与服务器?

Node.js使用Mongoose SSH隧道到MongoDB

我有两个Mongo DB。 一个用于我的开发环境,一个用于从我的Robomongo设置中看到的生产: 生产数据库是SSH隧道到我的数字海洋虚拟服务器,如图所示(具体情况已明显改变)。 连接到/从我的生产网站时,此设置工作正常: 我现在正在做一个不同的/相关的项目,并且需要将我的本地机器连接到我的生产数据库,所以我想我需要使用类似tunnel-ssh的东西来完成它。 我已经按照这个答案作为例子,但我要么Error: (SSH) Channel open failure: open failed或连接到我的Dev数据库(当我使用27017作为我的dstHost / dstPort /本地端口)。 我必须考虑这个错误,否则我对自己的configuration感到厌倦。 无可否认,我是一个完全的Mongo / Mongoose新手,所以两者同样可行。 有什么build议? var fs = require("fs"); var mongoose = require('mongoose'); var tunnel = require('tunnel-ssh'); //===== db connection ===== var config = { username:'my.username', host:'my.ip.address', agent : process.env.SSH_AUTH_SOCK, privateKey:require('fs').readFileSync('/Users/myusername/.ssh/id_rsa'), port:22, dstHost:'mongodb://localhost:27000/mydbname', dstPort:27000, localHost:'127.0.0.1', password:'mypassword', localPort: 27000 }; […]

为什么永远不能在注销之后保持我的nodejs进程运行?

我在家中设置了一个Ubuntu服务器,用于托pipe由nodejs服务的Web应用程序。 我的服务器上有一个连接应用程序。 当我ssh进入,只是做一些像 node app.js &> server.log & logout 然后,我注销后,服务器就像是搁置,它不会提供任何请求,但当我ssh回到它开始再次服务请求。 所以看起来永远的包装就是为了解决这个问题而devise的。 所以永远安装,我这样做: forever start -al forever.log -ao serverout.log -ae servererror.log app.js 我从这个命令得到相同的结果。 我的服务器将服务请求,而我ssh'ed,但一旦我注销我的服务器停止服务请求。 我还能做些什么来解决这个问题?

nodejs + ssh2 + nodessh

我有一个关于SSH的问题。 var Connection = require('ssh2'); var c = new Connection(); c.on('connect', function() { console.log('Connection :: connect'); }); c.on('ready', function() { console.log('Connection :: ready'); c.exec('uptime', function(err, stream) { if (err) throw err; stream.on('data', function(data, extended) { console.log((extended === 'stderr' ? 'STDERR: ' : 'STDOUT: ') + data); }); stream.on('end', function() { console.log('Stream :: EOF'); }); stream.on('close', […]

使用grunt-shell和grunt-ssh运行的Grunt同步任务

我有一段时间试图完成我正在运行的部署脚本。 它可能有一半的时间,这是令人沮丧的,因为我主要使用我没有写的代码。 我真的希望有一个较低级别的解决方法,我可以执行。 基本上发生了什么是我试图做5个任务,最终发生asynchronous。 似乎没有一个合理的方法来阻止他们。 那些是 一个静态的文件构build/编译过程 压缩过程 一个ftp传递过程 一个解压缩过程 权限pipe理和重新链接过程 有时,压缩过程通过构build/编译过程中途发生,有时ftp传递失败,有时重链过程尝试链接到尚不存在的接收端的文件夹,并且失败。 有没有人使用grunt进行部署? 有什么build议可以用来解决这个废话? 这完全毁了我。

使用libssh从消息中提取SSH公钥

我在节点应用程序中使用node-libssh作为libssh的一个很好的绑定,并且可以很容易地模拟一个ssh服务器。 不过,我需要从传入的SSH会话中提取公钥。 我需要一个string化的密钥版本,以便以后在数据库查询中使用,并且它必须与您在id_rsa.pub文件中find的格式相同。 我已经能够将其缩小到需要一种方法来在libssh ssh_key到char数组之间进行转换。 它简单到使用ssh_key pubKey = ssh_message_auth_pubkey(message); 获得ssh_key版本,但是在libssh中似乎没有任何方法可以将ssh_key转换为任何可以传回到我的nodejs进程的其他格式。 我预见了这样的解决scheme: ssh_key authKey = ssh_message_auth_pubkey(m->message); const char *pubKey = ssh_key_to_char(authKey); if (pubKey) instance->Set(NanSymbol("pubKey"), v8::String::New(pubKey)); 但是,自然不是这样简单,因为没有方法ssh_key_to_char存在,我真的很感激任何指针在这里。

GitLab + GitLab CI +通过NPM从属SSH项目

目前我们使用GitLab来pipe理我们的回购和GitLab CI作为我们的CI。 我有一个项目,其中包括另一个GitLab项目作为依赖项(通过NPM)。 该项目是内部的,package.json中的URL以git+ssh://git@ ,这是我们在本地机器上使用的。 我们有SSH密钥设置。 但是,GitLab CI似乎无法使用相同的机制来安装这个依赖项目(通过npm install )。 我得到的错误是: npm install npm ERR! git clone git@my.domain.com:developers/my-repo.git Cloning into bare repository '/home/gitlab_ci_runner/.npm/_git-remotes/git-my-domain-com-developers-my-git-26043eba'… npm ERR! git clone git@my.domain.com:developers/my-repo.git npm ERR! git clone git@my.domain.com:developers/my-repo.git Host key verification failed. npm ERR! git clone git@my.domain.com:developers/my-repo.git fatal: The remote end hung up unexpectedly npm ERR! Error: Command failed: Host […]

NodeJS:可读对象stream,用于asynchronous生成数据的模式

我想用NodeJS通过SSH在服务器群集中抓取数据。 远程脚本输出JSON,然后parsing并分解成对象stream 。 我现在的问题是,我使用的面向callback的库(SSH2,MySQL)导致了一种callback模式,我发现很难与可读API规范相匹配。 如何实现_read(size)当推的数据是一堆callback后面? 我目前的实现利用了Streams也是EventEmitters的事实。 我开始构buildStream实例时填充我的数据。 当我所有的callback完成后,我发出一个事件。 然后我听取自定义事件,然后才开始向下推送数据。 // Calling code var stream = new CrawlerStream(argsForTheStream); stream.on('queue_completed', function() { stream .pipe(logger) .pipe(dbWriter) .on('end', function() { // Close db connection etc… }); }); 一个CrawlerStream的模拟将是 // Mock of the Readable stream implementation function CrawlerStream(args) { // boilerplate // array holding the data to push this.data = […]

将nodejs应用程序部署到bluehost

我在bluehost中有一个VPS,我通过SSH安装了节点和npm,并且在www.mywebsite.com:3000上运行了一个节点应用程序,所以我有两个问题: 1)我如何运行app.js,所以当它“听”www.mywebsite.com? 我的意思是当我去www.mywebsite.com我看到我的index.ejs和一切像在我的本地主机,而不是去www.mywebsite.com:3000。 2)当我在www.mywebsite.com:3000上运行节点应用程序时,如果我停止了SSH连接,它将closures,它不会永久保留,如何启动服务器一次并保持它? 就像Heroku一样,用脚本“node app.js”上传package.json,服务器将始终启动并运行。 我如何在端口3000中运行节点应用程序: 首先我运行npm init ,然后我安装了express npm install –save express app.js: var express = require("express"); var app = express(); app.get("/", function(req,res){ res.send("hi"); }); app.listen(3000, functions(){ console.log("Server Started"); });