0

SSH 接続内の x11 ポート転送がプログラムでどのように機能するかを理解しようとしています。

特に、 Node の SSH2 クライアント ライブラリ内のコード レシピの一部である README のこの部分を理解しようとしています。クライアントがインスタンス化されると、変数xserversockとは何をxclientsockしますか? xclientsockを介してパイプでデータを自分自身に戻すのはなぜxserversockですか? 最後に、xserversock実際に127.0.0.1:6000、またはに接続し10.13.23.10:6000ますか?

var net = require('net');

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

var conn = new Client();

conn.on('x11', function(info, accept, reject) {
  var xserversock = new net.Socket();
  xserversock.on('connect', function() {
    var xclientsock = accept();
    xclientsock.pipe(xserversock).pipe(xclientsock);
  });
  // connects to localhost:0.0
  xserversock.connect(6000, 'localhost');
});

conn.on('ready', function() {
  conn.exec('xeyes', { x11: true }, function(err, stream) {
    if (err) throw err;
    var code = 0;
    stream.on('end', function() {
      if (code !== 0)
        console.log('Do you have X11 forwarding enabled on your SSH server?');
      conn.end();
    }).on('exit', function(exitcode) {
      code = exitcode;
    });
  });
}).connect({
  host: '10.13.23.10',
  username: 'foo',
  password: 'bar'
});
4

1 に答える 1