您的位置:首页 > 教育 > 培训 > sns网站建设哪家公司好_模板免费下载 素材_申泽seo_网络营销方式哪些

sns网站建设哪家公司好_模板免费下载 素材_申泽seo_网络营销方式哪些

2025/1/11 22:00:10 来源:https://blog.csdn.net/weixin_44786530/article/details/145062102  浏览:    关键词:sns网站建设哪家公司好_模板免费下载 素材_申泽seo_网络营销方式哪些
sns网站建设哪家公司好_模板免费下载 素材_申泽seo_网络营销方式哪些

开源地址:https://github.com/mscdex/ssh2

ssh2 是一个功能强大的 Node.js 库,用于通过 SSH 协议与远程服务器交互。它支持命令执行、文件上传下载、端口转发等操作,常用于自动化脚本和远程服务器管理。

下面是 ssh2 的详细使用步骤和常用方法介绍。


一、安装

首先,安装 ssh2 模块:

npm install ssh2

二、基本使用步骤

1. 导入模块

const { Client } = require('ssh2');

2. 建立连接

const conn = new Client();conn.on('ready', () => {console.log('SSH Connection Ready');// 可以在这里执行命令、上传文件等}).on('error', (err) => {console.error('Connection Error:', err);}).on('close', () => {console.log('Connection Closed');}).connect({host: 'your-server-ip',port: 22, // SSH 默认端口username: 'your-username',password: 'your-password', // 或使用 privateKey});

三、常用方法

1. 远程命令执行 (exec)

用于在远程服务器上运行命令。

conn.exec('ls -l', (err, stream) => {if (err) throw err;stream.on('close', (code, signal) => {console.log(`命令执行完毕: 退出码 ${code}, 信号 ${signal}`);conn.end(); // 关闭连接}).on('data', (data) => {console.log('STDOUT:', data.toString());}).stderr.on('data', (data) => {console.error('STDERR:', data.toString());});
});

2. 上传文件 (sftp)

通过 SFTP 上传文件到远程服务器。

conn.sftp((err, sftp) => {if (err) throw err;const localFile = './local-file.txt';const remoteFile = '/path/to/remote-file.txt';sftp.fastPut(localFile, remoteFile, {}, (err) => {if (err) {console.error('上传失败:', err);} else {console.log('文件上传成功');}conn.end();});
});

3. 下载文件 (sftp)

通过 SFTP 下载文件到本地。

conn.sftp((err, sftp) => {if (err) throw err;const remoteFile = '/path/to/remote-file.txt';const localFile = './local-file.txt';sftp.fastGet(remoteFile, localFile, {}, (err) => {if (err) {console.error('下载失败:', err);} else {console.log('文件下载成功');}conn.end();});
});

4. 获取远程目录内容 (sftp)

列出远程目录中的文件和子目录。

conn.sftp((err, sftp) => {if (err) throw err;const remoteDir = '/path/to/remote-dir';sftp.readdir(remoteDir, (err, list) => {if (err) {console.error('读取目录失败:', err);} else {console.log('目录内容:', list);}conn.end();});
});

5. 端口转发 (forwardIn)

将远程服务器的端口映射到本地,适用于开发和调试。

conn.on('ready', () => {conn.forwardIn('127.0.0.1', 8000, (err) => {if (err) throw err;console.log('端口转发成功: 远程 127.0.0.1:8000');});
}).connect({host: 'your-server-ip',port: 22,username: 'your-username',password: 'your-password',
});

6. 转发本地端口到远程 (forwardOut)

将本地端口数据通过 SSH 通道转发到远程服务器。

conn.on('ready', () => {conn.forwardOut('127.0.0.1', 8000, 'remote-server-ip', 9000, (err, stream) => {if (err) throw err;stream.write('Hello Remote Server');stream.end();});
}).connect({host: 'your-server-ip',port: 22,username: 'your-username',password: 'your-password',
});

7. 使用私钥认证

通过私钥进行连接。

conn.connect({host: 'your-server-ip',port: 22,username: 'your-username',privateKey: require('fs').readFileSync('/path/to/private-key'),
});

8. 动态代理 (createStream)

通过 ssh2 创建 SOCKS 代理,常用于科学上网。

const socks = require('socksv5');conn.on('ready', () => {console.log('SSH ready for SOCKS proxy');socks.createServer((info, accept, deny) => {conn.forwardOut(info.srcAddr, info.srcPort, info.dstAddr, info.dstPort, (err, stream) => {if (err) {deny();return;}const clientSocket = accept(true);stream.pipe(clientSocket).pipe(stream);});}).listen(1080, '127.0.0.1', () => {console.log('SOCKS proxy listening on 127.0.0.1:1080');});}).connect({host: 'your-server-ip',port: 22,username: 'your-username',password: 'your-password',});

四、常见问题

  1. 连接失败

    • 检查 hostport 是否正确。
    • 确保远程服务器启用了 SSH 服务。
  2. 权限问题

    • 确保 SSH 用户有足够的权限,必要时使用 sudo(参考之前提到的 -S 方法)。
  3. 性能优化

    • 使用 SFTP 的 fastPutfastGet 替代普通 putget
    • 批量处理文件时,考虑异步调用。

官方文档

更多方法和参数详见 ssh2 官方文档。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com