1. 安装ssh2模块
在终端中运行以下命令:
```
npm install ssh2
```
2. 导入ssh2模块
在Express应用程序中导入ssh2模块:
```javascript
const ssh2 = require('ssh2')
```
3. 创建SSH连接
```javascript
const conn = new ssh2.Client()
conn.on('ready', function() {
console.log('SSH连接已建立')
// 在此处添加转发代码
}).connect({
host: '远程主机',
port: 22,
username: '用户名',
password: '密码'
})
```
4. 添加转发
在SSH连接成功后,使用conn.forwardOut()方法添加转发:
```javascript
conn.forwardOut('本地主机', 0, '远程主机', 远程端口, function(err, stream) {
if (err) throw err
// 在此处处理流
})
```
其中,本地主机和本地端口可以是任意值,远程主机和远程端口是需要转发的目标主机和端口。
5. 处理流
在添加转发后,可以使用stream对象处理数据流。例如,将流传递给Express应用程序:
```javascript
app.get('/ssh', function(req, res) {
conn.forwardOut('localhost', 0, '远程主机', 远程端口, function(err, stream) {
if (err) throw err
stream.pipe(res)
})
})
```
这将创建一个路由,将来自SSH转发的流传递给Express应用程序的响应。
为了限制 SSH 仅用于TCP加密传输,有必要新建个最低权限的 SSH 帐号。步骤如下(备注:本教程适用于CentOS、RedHat、Fedora):1、root登陆 VPS 后,输入如下命令创建一个权限最低的用户(备注:将username改为你想要的用户名):
useradd -M -s /sbin/nologin -n username
2、修改该用户的密码:
passwd username
根据提示输入两遍密码
。
搞定收工。
尽情地享受 SSH 代理带来的乐趣吧!
补充:
1、关于 SSH 代理软件,有 Tunnelier 和 MyEnTunnel 两种选择,一般我会选择前者。
下载地址:点击这里
2、用以上命令建立的用户已是最低权限,用此帐号登陆PUTTY或者WinSCP,都会使程序自动关闭或报错,比如WinSCP就会出现:Cannot initialize SFTP protocol. Is the host running a SFTP server?的提示。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)