SSH接続内のx11ポート転送がプログラムでどのように機能するかを理解しようとしています。x11転送のためのssh2ライブラリのxserversockとxclientsockの意味
特に、私はNode's SSH2 client libraryのコードレシピの一部である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'
});