nodejs ssh2
https://www.npmjs.com/package/ssh2
npm install ssh2
ssh2文件下载:
//前台命令下发
app.get('/test/fileDownload', function (req, res) {
var downloadPath = req.query.downloadPath;
console.log(downloadPath); var conn = new Client();
conn.on('ready', function() {
console.log('Client :: ready');
conn.sftp(function(err, sftp) {
if (err) throw err;
//sftp.fastPut('/home/admin/foo/expdat.log','/home/book/foo/expdat.log', function(err, list) {
sftp.fastGet('/home/book/foo/expdat.log','/home/admin/foo/expdat.log' ,function(err, result) {
if (err) throw err;
//console.log('----------GET BEGIN!-------------');
res.download(downloadPath);
//console.log('----------GET END!-------------');
conn.end();
});
});
}).connect({
host: '192.168.0.111',
port: 22,
username: 'admin',
password: 'admin'
});
});
app.get('/test/fileDownload', function (req, res)
调用:<a href="fileDownload?downloadPath=/home/admin/foo/expdat.log" ><input type='button' value='文件下载' ></a>
ssh2shell命令:
var Client = require('ssh2').Client; var conn = new Client();
conn.on('ready', function() {
conn.exec('/home/admin/foo/me.sh', function(err, stream) {
if (err) throw err; stream.on('close', function(code, signal) {
conn.end();
}).on('data', function(data) {
console.log('STDOUT: ' + data);
}).stderr.on('data', function(data) {
console.log('STDERR: ' + data);
});
});
}).connect({
host: '10.20.16.73',
port: 22,
username: 'prodis',
password: 'pro'
//privateKey: require('fs').readFileSync('/home/admin/.ssh/id_dsa')
});
SHELL_CMD
备注:
http://blog.sina.com.cn/s/blog_680374c30101iznc.html
在A上执行keygen,转换后cp到B上,那么在B上ssh A时不需要口令
§6.4 使用Public Key (OpenSSH) 不用密码登陆.
步骤如下:
l 创建key
. $ mkdir -p ~/.ssh If it doesn't already exist
. $ chmod ~/.ssh
. $ cd ~/.ssh
$ ssh-keygen -t dsa
l 拷贝key到服务器端
$ scp -p id_dsa.pub remoteuser@remotehost:
Password: ********
l 登陆到服务器端安装公钥
$ ssh -l remoteuser remotehost
Password: ******** remotehost$ mkdir -p ~/.ssh If it doesn't already exist
remotehost$ chmod ~/.ssh
remotehost$ cat id_dsa.pub >> ~/.ssh/authorized_keys (Appending)
remotehost$ chmod ~/.ssh/authorized_keys
remotehost$ mv id_dsa.pub ~/.ssh 可选步骤,该文件甚至可以删除掉
remotehost$ logout
l 用public-key登陆
$ ssh -l remoteuser remotehost
Enter passphrase for key '/home/smith/.ssh/id_dsa': ******** 公钥一般存放在~/.ssh/authorized_keys, 老的OpenSSH版本可能存放在~/.ssh/authorized_keys2. Public-key 认证机制比密码要安全, 因为密码不在网络上传输. 而且可以是用加密的方式存储的,如果没有别人没有passphrase,拿到密钥也没有用.为此一定要设置passphrase 如果以上不步骤不能实现不输密码登陆,请检查:
/etc/ssh/sshd_config:
PubkeyAuthentication yes If no, change it and restart sshd
可以用ssh –v来显示详细的登陆过程. SSH- key文件格式:
SSH的两种主要实现方式: OpenSSH and SSH Secure Shell ("SSH2")
OpenSSH 的如下:
ssh-dss A9AAB3NzaC1iGMqHpSCEliaouBun8FF9t8p...
or:
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEA3DIqRox...
SSH Secure Shell的如下:
---- BEGIN SSH2 PUBLIC KEY ----
AAAAB3NzaC1kc3MAAACBAM4a2KKBE6zhPBgRx4q6Dbjxo5hXNKNWYIGkX/W/k5PqcCH0J6 ...
---- END SSH2 PUBLIC KEY ---- SSH Secure Shell的安装方式也不同,目录在~/.ssh2 要在, ~/.ssh2/authorization中用如下方式提及: Key public_key_filename. 私钥也需要在~/.ssh2/identification用如下方式引用:
IdKey private_key_filename
使用Public Key (OpenSSH) 不用密码登陆
AIX6.1默认是没有安装SSH服务的,要使用SSH连接AIX服务器,必须手动安装OpenSSH软件。 .在IBM官方网站下载Openssl和OPenSSH软件(可下载本文附件)。
.将下载的软件上传至AIX系统/tmp目录下。
.解压软件 bash-3.2# uncompress openssl-fips-12.9.8.1801.tar
bash-3.2# tar xvf openssl-fips-12.9.8.1801.tar
x openssl-fips-12.9.8.1801
x openssl-fips-12.9.8.1801/openssl.base, bytes, media blocks.
x openssl-fips-12.9.8.1801/openssl.license, bytes, media blocks.
x openssl-fips-12.9.8.1801/openssl.man.en_US, bytes, media blocks. bash-3.2# uncompress OpenSSH_5.8.0..tar.Z
bash-3.2# cd OpenSSH/
bash-3.2# tar xvf OpenSSH_5.8.0..tar OS:AIX 5.3.
-------------------------------------安装openssl----------------------------------
.下载openssl
https://www14.software.ibm.com/webapp/iwm/web/reg/download.do?source=aixbp&S_PKG=openssl&lang=en_US#
选择OpenSSL Install images v0.9.8. ( OpenSSL 0.9.8r ) for AIX 5.3 , AIX 6.1 & 7.0 .解压缩安装包
[hxl/root]#ls - openssl-0.9.8.1802.tar.Z
openssl-0.9.8.1802.tar.Z
[hxl/root]#uncompress openssl-0.9.8.1802.tar.Z .查看tar的内容
[hxl/root]#tar -vtf openssl-0.9.8.1802.tar
drwxr-xr-x Jun :: openssl-0.9.8.1802/
-rw-r----- Jun :: openssl-0.9.8.1802/openssl.base
-rw-r----- Jun :: openssl-0.9.8.1802/openssl.license
-rw-r----- Jun :: openssl-0.9.8.1802/openssl.man.en_US
[hxl/root]#mkdir opensshl
[hxl/root]#mv openssl-0.9.8.1802.tar ./openssh1
[hxl/root]#tar -xvf openssl-0.9.8.1802.tar .安装
smitty install指定软件的目录,选择安装:openssl.base
ACCEPT new license agreements? 选择YES ---------------------------安装openssh-----------------------------------
.下载openssh,下载地址:http://sourceforge.net/projects/openssh-aix/files/
[hxl/root]#ls - openssh_5.2p1_aix53.tar.z
openssh_5.2p1_aix53.tar.z .修改文件名,将后缀小写的z改为大写,然后解压缩
[hxl/root]#mv openssh_5.2p1_aix53.tar.z openssh_5.2p1_aix53.tar.Z
[hxl/root]#uncompress openssh_5.2p1_aix53.tar.Z .查看tar文件内容
[hxl/root]#tar -vtf openssh_5.2p1_aix53.tar 解压到当前目录
[hxl/root]#mv openssh_5.2p1_aix53.tar ./openssh
[hxl/root]#tar -xvf openssh_5.2p1_aix53.tar .安装
smitty install指定软件软件存放的目录,选择openssh.base
ACCEPT new license agreements? 选择YES ------------------------------------运行ssh服务--------------------------
.运行ssh服务
默认安装好后系统自动启用ssh服务:
[hxl/root]#lssrc -a | grep ssh
sshd ssh active 启动sshd服务
[hxl/root]#startsrc -s sshd 停止sshd服务
[hxl/root]#stopsrc -s sshd 这样就可以通过putty或则ssh登陆了 .首先安装Openssl,再安装OpenSSH,安装先后顺序不可颠倒 bash-3.2# cd openssl-fips-12.9.8.1801
bash-3.2# smitty install 顺序选择Install and Update Software、Install Software,
INPUT device / directory for software [.] 输入当前目录.
SOFTWARE to install [_all_latest] 按F4、然后ESC+7选择列出行
"ACCEPT new license agreements?" [yes]
回车,执行安装
Command:OK 表示安装完成。
OpenSSH安装方法同上。 .安装完成后SSH服务会自动启动,确认: bash-3.2# lssrc -s sshd
Subsystem Group PID Status
sshd ssh active .启动和停止服务: bash-3.2# stopsrc -s sshd
- The sshd Subsystem was requested to stop.
bash-3.2# lssrc -s sshd
Subsystem Group PID Status
sshd ssh inoperative bash-3.2# startsrc -s sshd
- The sshd Subsystem has been started. Subsystem PID is .
bash-3.2# lssrc -s sshd
Subsystem Group PID Status
sshd ssh active
AIX开启SSH
nodejs ssh2的更多相关文章
- 从Java的角度理解前端框架,nodejs,reactjs,angularjs,requirejs,seajs
[前端神秘的面纱] 对后端开发来说,前端是神秘的, 眼花缭乱的技术,繁多的框架, 如果你还停留在前端等于只用jquery做开发,那么你out了, 本文从Java的角度简述下目前前端流行的一些框架. 水 ...
- 【nodejs原理&源码赏析(9)】用node-ssh实现轻量级自动化部署
目录 一. 需求描述 二. 预备知识 IP+端口访问 域名访问 三. Nodejs应用的手动部署 四. 基于nodejs的自动部署 4.1 package.json中的scripts 4.2 自动化发 ...
- 【nodejs原理&源码赏析(9)】用node-ssh实现轻量级自动化部署
[摘要] node脚本实现轻量级自动化部署 示例代码托管在:http://www.github.com/dashnowords/blogs 一. 需求描述 前端工程出包后实现简易的自动化部署. 二. ...
- nodejs和vuejs的关系
转自:https://blog.csdn.net/myKurt/article/details/79914078 nodejs类比Java中:JVM 详述: 就前端来说nodejs具有划时代的意义, ...
- NodeJs之OS
OS Node.js提供了一些基本的底层操作系统的模块OS. API var os = require('os'); console.log('[arch] 操作系统CPU架构'+os.arch()) ...
- NodeJs之Path
Path模块 NodeJs提供的Path模块,使得我们可以对文件路径进行简单的操作. API var path = require('path'); var path_str = '\\Users\\ ...
- NodeJs之调试
关于调试 当我们只专注于前端的时候,我们习惯性F12,这会给我们带来安全与舒心的感觉. 但是当我们使用NodeJs来开发后台的时候,我想噩梦来了. 但是也别泰国担心,NodeJs的调试是很不方便!这是 ...
- NodeJs在Linux下使用的各种问题
环境:ubuntu16.04 ubuntu中安装NodeJs 通过apt-get命令安装后发现只能使用nodejs,而没有node命令 如果想避免这种情况请看下面连接的这种安装方式: 拓展见:Linu ...
- NodeJs之child_process
一.child_process child_process是NodeJs的重要模块.帮助我们创建多进程任务,更好的利用了计算机的多核性能. 当然也支持线程间的通信. 二.child_process的几 ...
随机推荐
- Sum of divisors
Problem Description mmm is learning division, she's so proud of herself that she can figure out the ...
- iOS---》点击uitableview 的section展开或隐藏
#import <UIKit/UIKit.h> @interface TestCell : UITableViewCell @property (weak, nonatomic) IBOu ...
- [JavaEE] WEB-INF有关的目录路径总结
1.资源文件只能放在WebContent下面,如 CSS,JS,image等.放在WEB-INF下引用不了. 2.页面放在WEB-INF目录下面,这样可以限制访问,提高安全性.如JSP,html 3. ...
- Android 高级UI设计笔记15:HorizontalScrollView之 实现画廊式图片浏览器
1. HorizontalScrollView 本来,画廊式的图片浏览器,使用Android中的Gallery就能轻松完成,但是Google说Gallery每次切换图片时都要新建视图,造成太多的资源浪 ...
- Android小项目之二 代码的组织结构
------- 源自梦想.永远是你IT事业的好友.只是勇敢地说出我学到! ---------- 按惯例,写在前面的:可能在学习Android的过程中,大家会和我一样,学习过大量的基础知识,很多的知识点 ...
- 重构14-Break Responsibilities
把一个类的多个职责进行拆分,这贯彻了SOLID中的单一职责原则(SRP).尽管对于如何划分“职责”经常存在争论,但应用这项重构还是十分简单的.我这里并不会回答划分职责的问题,只是演示一个结构清晰的示例 ...
- codeforces 680B B. Bear and Finding Criminals(水题)
题目链接: B. Bear and Finding Criminals //#include <bits/stdc++.h> #include <vector> #includ ...
- C#之ArrayList
using System.Collections; 新建: ArrayList list = new ArrayList(); 添加元素: int a = 1; list.Add(a); 遍历: fo ...
- C#去除HTML标签(转)
public static string ReplaceHtmlTag(string html, int length = 0) { string strText = System.Text.Regu ...
- WScript.SendKeys()的sendkeys发送组合键以及特殊字符
SendKeys.Send("^+{TAB}"); 使用SendKeys将键击和组合键击发送到活动应用程序.此类无法实例化.若要发送一个键击给某个类并立即继续程序流,请使用Send ...