virNetLibsshAuthMethods method;
int ssh_flags; /* SSH_AUTH_METHOD_* for this auth method */
- char *password;
char *filename;
int tries;
}
for (i = 0; i < sess->nauths; i++) {
- virSecureEraseString(sess->auths[i]->password);
- g_free(sess->auths[i]->password);
g_free(sess->auths[i]->filename);
g_free(sess->auths[i]);
}
* failed or libssh did.
*/
virResetLastError();
- ret = ssh_pki_import_privkey_file(priv->filename, priv->password,
+ ret = ssh_pki_import_privkey_file(priv->filename, NULL,
virNetLibsshAuthenticatePrivkeyCb,
sess, &key);
if (ret == SSH_EOF) {
* returns SSH_AUTH_* values
*/
static int
-virNetLibsshAuthenticatePassword(virNetLibsshSession *sess,
- virNetLibsshAuthMethod *priv)
+virNetLibsshAuthenticatePassword(virNetLibsshSession *sess)
{
const char *errmsg;
int rc = SSH_AUTH_ERROR;
VIR_DEBUG("sess=%p", sess);
- if (priv->password) {
- /* tunnelled password authentication */
- if ((rc = ssh_userauth_password(sess->session, NULL,
- priv->password)) == 0)
- return SSH_AUTH_SUCCESS;
- } else {
- /* password authentication with interactive password request */
- if (!sess->cred || !sess->cred->cb) {
- virReportError(VIR_ERR_LIBSSH, "%s",
- _("Can't perform authentication: "
- "Authentication callback not provided"));
- return SSH_AUTH_ERROR;
- }
+ /* password authentication with interactive password request */
+ if (!sess->cred || !sess->cred->cb) {
+ virReportError(VIR_ERR_LIBSSH, "%s",
+ _("Can't perform authentication: "
+ "Authentication callback not provided"));
+ return SSH_AUTH_ERROR;
+ }
- /* Try the authenticating the set amount of times. The server breaks the
- * connection if maximum number of bad auth tries is exceeded */
- while (true) {
- g_autofree char *password = NULL;
+ /* Try the authenticating the set amount of times. The server breaks the
+ * connection if maximum number of bad auth tries is exceeded */
+ while (true) {
+ g_autofree char *password = NULL;
- if (!(password = virAuthGetPasswordPath(sess->authPath, sess->cred,
- "ssh", sess->username,
- sess->hostname)))
- return SSH_AUTH_ERROR;
+ if (!(password = virAuthGetPasswordPath(sess->authPath, sess->cred,
+ "ssh", sess->username,
+ sess->hostname)))
+ return SSH_AUTH_ERROR;
- /* tunnelled password authentication */
- rc = ssh_userauth_password(sess->session, NULL, password);
- virSecureEraseString(password);
+ /* tunnelled password authentication */
+ rc = ssh_userauth_password(sess->session, NULL, password);
+ virSecureEraseString(password);
- if (rc == 0)
- return SSH_AUTH_SUCCESS;
- else if (rc != SSH_AUTH_DENIED)
- break;
- }
+ if (rc == 0)
+ return SSH_AUTH_SUCCESS;
+ else if (rc != SSH_AUTH_DENIED)
+ break;
}
/* error path */
break;
case VIR_NET_LIBSSH_AUTH_PASSWORD:
/* try to authenticate with password */
- ret = virNetLibsshAuthenticatePassword(sess, auth);
+ ret = virNetLibsshAuthenticatePassword(sess);
break;
}