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的更多相关文章

  1. 从Java的角度理解前端框架,nodejs,reactjs,angularjs,requirejs,seajs

    [前端神秘的面纱] 对后端开发来说,前端是神秘的, 眼花缭乱的技术,繁多的框架, 如果你还停留在前端等于只用jquery做开发,那么你out了, 本文从Java的角度简述下目前前端流行的一些框架. 水 ...

  2. 【nodejs原理&源码赏析(9)】用node-ssh实现轻量级自动化部署

    目录 一. 需求描述 二. 预备知识 IP+端口访问 域名访问 三. Nodejs应用的手动部署 四. 基于nodejs的自动部署 4.1 package.json中的scripts 4.2 自动化发 ...

  3. 【nodejs原理&源码赏析(9)】用node-ssh实现轻量级自动化部署

    [摘要] node脚本实现轻量级自动化部署 示例代码托管在:http://www.github.com/dashnowords/blogs 一. 需求描述 前端工程出包后实现简易的自动化部署. 二. ...

  4. nodejs和vuejs的关系

    转自:https://blog.csdn.net/myKurt/article/details/79914078 nodejs类比Java中:JVM 详述: 就前端来说nodejs具有划时代的意义, ...

  5. NodeJs之OS

    OS Node.js提供了一些基本的底层操作系统的模块OS. API var os = require('os'); console.log('[arch] 操作系统CPU架构'+os.arch()) ...

  6. NodeJs之Path

    Path模块 NodeJs提供的Path模块,使得我们可以对文件路径进行简单的操作. API var path = require('path'); var path_str = '\\Users\\ ...

  7. NodeJs之调试

    关于调试 当我们只专注于前端的时候,我们习惯性F12,这会给我们带来安全与舒心的感觉. 但是当我们使用NodeJs来开发后台的时候,我想噩梦来了. 但是也别泰国担心,NodeJs的调试是很不方便!这是 ...

  8. NodeJs在Linux下使用的各种问题

    环境:ubuntu16.04 ubuntu中安装NodeJs 通过apt-get命令安装后发现只能使用nodejs,而没有node命令 如果想避免这种情况请看下面连接的这种安装方式: 拓展见:Linu ...

  9. NodeJs之child_process

    一.child_process child_process是NodeJs的重要模块.帮助我们创建多进程任务,更好的利用了计算机的多核性能. 当然也支持线程间的通信. 二.child_process的几 ...

随机推荐

  1. C#.Net中的转义字符(转)

    当声明一个字符串变量时有一些字符是不能以平常的方式包含在变量中的.为了解决这个问题,C#提供了两种不同的方法. 第一种方法是使用’转义序列’.例如,我们想得到如下的字符串 “Hello World H ...

  2. Python练习题 029:Project Euler 001:3和5的倍数

    开始做 Project Euler 的练习题.网站上总共有565题,真是个大题库啊! # Project Euler, Problem 1: Multiples of 3 and 5 # If we ...

  3. iOS tabbar 控制器基本使用

    RootViewController *rootVC=[[RootViewController alloc] init] SignInViewController *signVC = [[SignIn ...

  4. OC 实现的几个排序算法

    和在VC++6.0里相比 在OC里面实现 不算困难 可是我用惯了C/C++呢 快速排序,冒泡排序,直接插入排序和折半插入排序,希尔排序,堆排序,直接选择排序 /******************** ...

  5. 点击UITableviewCell展开收缩

    #import "ViewController.h" #import "ZSDTestCell.h" @interface ViewController ()& ...

  6. [Java] log4j异常输出到日志

    当程序运行异常时,e.printStackTrace()会打印出异常.但是很多时候我们希望将这些异常输出到日志中,以便日后可以随时查看到,可以通过这些异常快速的找到程序发生异常的代码. 那么有办法可以 ...

  7. 【Shell脚本学习20】Shell until循环

    until 循环执行一系列命令直至条件为 true 时停止.until 循环与 while 循环在处理方式上刚好相反.一般while循环优于until循环,但在某些时候,也只是极少数情况下,until ...

  8. 【Android 界面效果43】Android LayoutInflater的inflate方法中attachToRoot的作用

    我们在ListView的Adapter的getView方法里面经常会调用两个参数的inflate方法, mInflater.inflate(R.layout.adv_viewpager, null); ...

  9. OC之Copy语法

    转载请注明:http://www.cnblogs.com/letougaozao/p/3631105.html 概念 内存管理 NSString的copy实例 对象的copy实例 一.概念 目的:在改 ...

  10. iOS webview加载html自定义选项框选词

    项目要求:webview加载html网址,内容为英文文本,需要获取文本上的单词 这个是最终效果图: 思路是先实现自定义的选项框(不带系统选项)再获取到滑选的单词: 实现的步骤: 首先是替换掉系统长按出 ...