kopia lustrzana https://github.com/c9/core
add support for ssh proxy command
rodzic
5279f3e61a
commit
48502343da
|
@ -12,7 +12,7 @@ var fs = require("fs");
|
|||
var tmp = require("tmp");
|
||||
var debug = require("debug")("ssh");
|
||||
|
||||
exports.buildArgs = function(prvkeyFile, host) {
|
||||
exports.buildArgs = function(prvkeyFile, host, proxy) {
|
||||
var args = [
|
||||
"-o", "PasswordAuthentication=no",
|
||||
"-o", "IdentityFile=" + prvkeyFile,
|
||||
|
@ -33,11 +33,21 @@ exports.buildArgs = function(prvkeyFile, host) {
|
|||
args.push(host[0]);
|
||||
}
|
||||
|
||||
if (proxy) {
|
||||
args.push(
|
||||
"ssh",
|
||||
"-o", "UserKnownHostsFile=/dev/null",
|
||||
"-o", "StrictHostKeyChecking=no",
|
||||
"-o", "IdentitiesOnly=yes",
|
||||
proxy
|
||||
);
|
||||
}
|
||||
|
||||
return args;
|
||||
};
|
||||
|
||||
exports.spawnWithKeyFile = function(prvkeyFile, host, command, args) {
|
||||
var sshArgs = exports.buildArgs(prvkeyFile, host);
|
||||
exports.spawnWithKeyFile = function(prvkeyFile, host, proxy, command, args) {
|
||||
var sshArgs = exports.buildArgs(prvkeyFile, host, proxy);
|
||||
|
||||
args = sshArgs.concat(command ? [command] : []).concat(args || []);
|
||||
debug("executing: ssh " + args.join(" "));
|
||||
|
@ -81,11 +91,11 @@ exports.writeKeyFiles = function(prvkey, pubkey, callback) {
|
|||
});
|
||||
};
|
||||
|
||||
exports.spawn = function(prvkey, host, command, args, callback) {
|
||||
exports.spawn = function(prvkey, host, proxy, command, args, callback) {
|
||||
exports.writeKeyFile(prvkey, function(err, filename) {
|
||||
if (err) return callback(err);
|
||||
|
||||
var child = exports.spawnWithKeyFile(filename, host, command, args);
|
||||
var child = exports.spawnWithKeyFile(filename, host, proxy, command, args);
|
||||
|
||||
child.on("exit", function(code) {
|
||||
fs.unlink(filename, function() {});
|
||||
|
@ -95,8 +105,8 @@ exports.spawn = function(prvkey, host, command, args, callback) {
|
|||
});
|
||||
};
|
||||
|
||||
exports.exec = function(prvkey, host, command, args, callback) {
|
||||
exports.spawn(prvkey, host, command, args, function(err, child) {
|
||||
exports.exec = function(prvkey, host, proxy, command, args, callback) {
|
||||
exports.spawn(prvkey, host, proxy, command, args, function(err, child) {
|
||||
if (err)
|
||||
return callback(err);
|
||||
|
||||
|
@ -148,8 +158,8 @@ exports.generateKeyPair = function(email, callback) {
|
|||
});
|
||||
};
|
||||
|
||||
exports.validateSSHKey = function(prvkey, host, callback) {
|
||||
exports.exec(prvkey, host, "", [], function(err, stdout, stderr) {
|
||||
exports.validateSSHKey = function(prvkey, host, proxy, callback) {
|
||||
exports.exec(prvkey, host, proxy, "", [], function(err, stdout, stderr) {
|
||||
debug("out >> " + stdout);
|
||||
debug("err >> " + stderr);
|
||||
debug(err);
|
||||
|
|
Ładowanie…
Reference in New Issue