私の目的は、ユーザーがリモートで SSH サーバーに接続できるようにする Web アプリケーションを作成することです。つまり、コンピューターに SSH クライアントをインストールする必要はありません。したがって、これは、私のサーバーがユーザーとその SSH サーバーの間の中間インターフェイスになることを意味します。
ノード用の SSH2 モジュールを見つけました: https://github.com/mscdex/ssh2
接続の最も適切な方法は、shell()
メソッドを使用することであると考えました。
以下は、シェルを機能させるための基本的な試みです。
var Connection = require('ssh2');
var c = new Connection();
c.on('ready', function() {
c.shell(onShell);
});
var onShell = function(err, stream) {
if (err != null) {
console.log('error: ' + err);
}
stream.on('readable', function() {
var chunk;
while (null !== (chunk = stream.read())) {
console.log('got %d bytes of data', chunk.length);
}
});
stream.write('ls\r\n');
console.log('Shell');
}
c.connect({
host: 'localhost',
port: 22,
username: 'matt',
password: 'password'
});
正常に接続され、エラーはありませんが、「データの %d バイトを取得しました」は表示されません。どうすればこれを修正できますか?
さらに、この方法は、多数の異なる接続が同時に発生する可能性がある大規模なアプリケーションで賢明でしょうか?