diff --git a/webssh/handler.py b/webssh/handler.py
index c4a082b..9b93f2b 100644
--- a/webssh/handler.py
+++ b/webssh/handler.py
@@ -310,10 +310,10 @@ class IndexHandler(MixinHandler, tornado.web.RequestHandler):
self.lookup_hostname(hostname, port)
username = self.get_value('username')
password = self.get_argument('password', u'')
+ passphrase = self.get_argument('passphrase', u'')
privatekey, filename = self.get_privatekey()
if privatekey:
- pkey = PrivateKey(privatekey, password, filename).get_pkey_obj()
- password = None
+ pkey = PrivateKey(privatekey, passphrase, filename).get_pkey_obj()
else:
pkey = None
args = (hostname, port, username, password, pkey)
@@ -336,7 +336,9 @@ class IndexHandler(MixinHandler, tornado.web.RequestHandler):
logging.info('Connecting to {}:{}'.format(*dst_addr))
try:
- ssh.connect(*args, timeout=6)
+ ssh.connect(
+ *args, timeout=6, allow_agent=False, look_for_keys=False
+ )
except socket.error:
raise ValueError('Unable to connect to {}:{}'.format(*dst_addr))
except paramiko.BadAuthenticationType:
diff --git a/webssh/static/js/main.js b/webssh/static/js/main.js
index 8b0bf73..0682eec 100644
--- a/webssh/static/js/main.js
+++ b/webssh/static/js/main.js
@@ -515,9 +515,9 @@ jQuery(function($){
}
- function normalize_data(data) {
+ function clean_data(data) {
var i, attr, val;
- var attrs = fields.concat('privatekey');
+ var attrs = fields.concat(['password', 'privatekey', 'passphrase']);
for (i = 0; i < attrs.length; i++) {
attr = attrs[i];
@@ -530,7 +530,7 @@ jQuery(function($){
function validate_form_data(data) {
- normalize_data(data);
+ clean_data(data);
var hostname = data.get('hostname'),
port = data.get('port'),
@@ -668,7 +668,7 @@ jQuery(function($){
}
- function connect(hostname, port, username, password, privatekey) {
+ function connect(hostname, port, username, password, privatekey, passphrase) {
// for console use
var result, opts;
@@ -686,7 +686,8 @@ jQuery(function($){
port: port,
username: username,
password: password,
- privatekey: privatekey
+ privatekey: privatekey,
+ passphrase: passphrase
};
} else {
opts = hostname;
diff --git a/webssh/templates/index.html b/webssh/templates/index.html
index 64a8a17..8df7b4b 100644
--- a/webssh/templates/index.html
+++ b/webssh/templates/index.html
@@ -9,7 +9,7 @@