ホームページ >ウェブフロントエンド >jsチュートリアル >Node.jsを使ったSSHの実装方法を詳しく解説

Node.jsを使ったSSHの実装方法を詳しく解説

PHPz
PHPzオリジナル
2023-04-05 09:10:103053ブラウズ

SSH は、特にリモート アクセスと制御において、コンピュータ間の安全なデータ通信を可能にする暗号化されたネットワーク プロトコルです。

Node.js は Chrome V8 エンジンに基づく JavaScript ランタイム環境で、効率的でスケーラブルなネットワーク アプリケーションの構築に役立ちます。この記事では、Node.js を使用して SSH を実装する方法を学びます。

  1. Node.js のインストール

Node.js を使用する前に、まずインストールする必要があります。公式 Web サイトからインストール パッケージをダウンロードし、指示に従ってインストールできます。

  1. SSH2 モジュールのインストール

Node.js では、SSH2 モジュールを使用して SSH を実装できます。 SSH2 は、Node.js で実行される SSH2 クライアントおよびサーバー側ライブラリの純粋な JavaScript 実装です。

npm パッケージ マネージャーを使用して SSH2 モジュールをインストールできます:

npm install ssh2

インストールが完了したら、SSH2 モジュールの使用を開始できます。

  1. SSH サーバーへの接続

SSH2 モジュールを使用する前に、まず SSH 接続を確立する必要があります。

const Client = require('ssh2').Client;

const conn = new Client();
conn.on('ready', () => {
  console.log('已连接');
  conn.end();
}).connect({
  host: 'x.x.x.x',
  port: 22,
  username: 'username',
  password: 'password',
});

この例では、まず SSH2 モジュールの Client クラスをインポートし、次に SSH クライアント接続オブジェクト conn を作成します。

接続オブジェクトでは、ready イベントをリッスンできます。このイベントは、接続が正常に確立された後にトリガーされ、「接続済み」情報を出力します。最後に、 conn.end() メソッドを呼び出して接続を閉じます。

接続オプションでは、ターゲット SSH サーバーのアドレス、ポート、ユーザー名、およびパスワード情報を指定する必要があります。

  1. SSH コマンドの実行

接続が正常に確立されたら、SSH2 モジュールを使用してリモート コマンドを実行できます。

conn.on('ready', () => {
  console.log('已连接');
  conn.exec('ls', (err, stream) => {
    if (err) throw err;
    stream.on('close', (code, signal) => {
      console.log(`命令执行结束,退出码为:${code}`);
      conn.end();
    }).on('data', data => {
      console.log(`输出信息:${data}`);
    }).stderr.on('data', data => {
      console.log(`错误信息:${data}`);
    });
  });
}).connect({
  host: 'x.x.x.x',
  port: 22,
  username: 'username',
  password: 'password',
});

この例では、conn.exec() メソッドを呼び出して ls コマンドを実行し、コールバック関数に渡します。

コマンドの実行時にエラーが発生した場合、コールバック関数は例外をスローします。コマンドが正常に実行されると、読み取り可能なストリーム オブジェクト ストリームが取得されます。

ストリーム オブジェクトの close イベントをリッスンできます。このイベントはコマンド実行の最後にトリガーされ、終了コードを出力します。同時にストリームオブジェクトのデータイベントとstderrイベントもリッスンし、それぞれ標準出力とエラー出力情報を出力します。

最後に、イベント ハンドラー関数で conn.end() メソッドを呼び出して、接続を閉じます。

  1. ファイル転送

コマンドのリモート実行に加えて、SSH2 モジュールはファイル転送機能もサポートしています。

conn.sftp((err, sftp) => {
  if (err) throw err;
  const localFile = '/path/to/local/file.txt';
  const remoteFile = '/path/to/remote/file.txt';
  sftp.fastPut(localFile, remoteFile, err => {
    if (err) throw err;
    console.log('文件传输完成');
    conn.end();
  });
});

この例では、 conn.sftp() メソッドを呼び出して、ファイル転送機能を提供する SFTP オブジェクトを取得します。

sftp.fastPut() メソッドを使用して、ローカル ファイルをリモート サーバーに迅速に転送します。転送が完了すると、「ファイル転送が完了しました」というメッセージを出力し、接続を閉じます。

  1. 概要

この記事では、SSH2 モジュールを使用してプログラムで SSH を実装する方法を学習しました。まず SSH サーバーに接続し、次にコマンドとファイル転送を実行します。 Node.js と SSH2 モジュールを使用すると、効率的でスケーラブルなネットワーク アプリケーションを構築するための SSH 機能を簡単に実装できます。

以上がNode.jsを使ったSSHの実装方法を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。