介绍
@nathantreid/node-ssh 是一款基于 Node.js 开发的 SSH 认证工具,可快速安全地连接到远程服务器,并在 Node.js 环境下对其进行操作。
安装
在 Node.js 项目中使用 npm 安装:
npm install @nathantreid/node-ssh
使用方式
引入模块
const { NodeSSH } = require('node-ssh')
创建 SSH 实例
const ssh = new NodeSSH()
也可以在创建实例时传入参数:
const ssh = new NodeSSH({ host: 'example.com', username: 'root', privateKey: '/path/to/private/key', })
连接远程服务器
ssh.connect() .then(() => { console.log('SSH 连接成功') }) .catch(error => { console.error(error) })
连接时,还可以传入其他参数,如端口号、密码等,具体可以参考官方文档。
执行命令
ssh.execCommand('ls') .then(result => { console.log(result) }) .catch(error => { console.error(error) })
也可以一次性执行多个命令:
ssh.exec('cd /path/to/directory; ls') .then(result => { console.log(result) }) .catch(error => { console.error(error) })
如果要实时获取命令执行结果,可以使用 exec()
方法的第二个参数,回调函数将在每次执行结果返回时被调用:
ssh.exec('tail -f /var/log/system.log', { onStdout: data => { console.log(data.toString('utf8')) }, onStderr: data => { console.error(data.toString('utf8')) } })
上传文件
ssh.putFiles([{local: '/path/to/local/file', remote: '/path/to/remote/file'}]) .then(() => { console.log('文件上传成功') }) .catch(error => { console.error(error) })
下载文件
ssh.getFile('/path/to/remote/file', '/path/to/local/file') .then(() => { console.log('文件下载成功') }) .catch(error => { console.error(error) })
示例代码
-- -------------------- ---- ------- ----- - ------- - - ------------------- ----- --- - --- --------- ----- -------------- --------- ------- ----------- ----------------------- -- ------------- -------- -- - ---------------- ------ ------ --------------------- -- ------------ -- - ------------------- ------ --------------------- ---------------------- ------- ------------------------- -- -------- -- - --------------------- ------ ----------------------------------- ---------------------- -- -------- -- - --------------------- ------------- -- ------------ -- - -------------------- ------------- --
结语
@nathantreid/node-ssh 提供了简单易用的 API,能够方便地在 Node.js 中进行 SSH 操作。通过本文的介绍和示例代码,相信读者已经掌握了如何使用该工具。在实际应用中,读者可以根据自己的需求进行扩展,发挥该工具的更多优势。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055da581e8991b448db60a