Node.js
Node.js
Start SSH Tunnel Keyboard-Interactive Authentication
See more SSH Tunnel Examples
Demonstrates the Chilkat SshTunnel.StartKeyboardAuth method, which begins keyboard-interactive authentication. The only argument is the login name. It returns XML describing the server's prompts, which are answered with ContinueKeyboardAuth.
Background: Keyboard-interactive is the prompt-driven authentication method: the server sends one or more questions — a password, a one-time code, a security question — and the client answers each. This is how a tunnel supports two-factor and other challenge-response schemes. The returned XML says exactly what to ask and whether to mask the input.
Chilkat Node.js Downloads
NODEJS_PRELUDE
function chilkatExample() {
var success = false;
// Demonstrates the SshTunnel.StartKeyboardAuth method, which begins keyboard-interactive
// authentication. The only argument is the login name. It returns XML describing the server's
// prompts, which are answered with ContinueKeyboardAuth.
var tunnel = new chilkat.SshTunnel();
// The tunnel forwards accepted local connections to this destination through the SSH server.
tunnel.DestHostname = "db.internal.example.com";
tunnel.DestPort = 5432;
// Connect to the SSH server. This performs the TCP/proxy connection and SSH handshake, but
// does not authenticate yet.
var sshPort = 22;
success = tunnel.Connect("ssh.example.com",sshPort);
if (success == false) {
console.log(tunnel.LastErrorText);
return;
}
// Begin keyboard-interactive authentication. The returned XML describes the server's prompts.
var infoRequestXml = tunnel.StartKeyboardAuth("mySshLogin");
if (tunnel.LastMethodSuccess == false) {
console.log(tunnel.LastErrorText);
return;
}
console.log(infoRequestXml);
// Answer the prompt(s) with ContinueKeyboardAuth, then call BeginAccepting.
var waitForThreadExit = true;
success = tunnel.CloseTunnel(waitForThreadExit);
if (success == false) {
console.log(tunnel.LastErrorText);
return;
}
}
chilkatExample();