SSH: Add support for ssh-agent

Task-number: QTCREATORBUG-16245
Change-Id: Ifd30c89d19e547d7657765790b7520e42b3741c3
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
This commit is contained in:
Christian Kandeler
2016-07-20 18:04:56 +02:00
committed by Christian Kandeler
parent fcdc9342b5
commit 3ee2445fb1
21 changed files with 748 additions and 40 deletions

View File

@@ -58,6 +58,8 @@ GenericLinuxDeviceConfigurationWidget::GenericLinuxDeviceConfigurationWidget(
this, &GenericLinuxDeviceConfigurationWidget::keyFileEditingFinished);
connect(m_ui->keyButton, &QAbstractButton::toggled,
this, &GenericLinuxDeviceConfigurationWidget::authenticationTypeChanged);
connect(m_ui->agentButton, &QAbstractButton::toggled,
this, &GenericLinuxDeviceConfigurationWidget::authenticationTypeChanged);
connect(m_ui->timeoutSpinBox, &QAbstractSpinBox::editingFinished,
this, &GenericLinuxDeviceConfigurationWidget::timeoutEditingFinished);
connect(m_ui->timeoutSpinBox, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged),
@@ -89,14 +91,16 @@ void GenericLinuxDeviceConfigurationWidget::authenticationTypeChanged()
{
SshConnectionParameters sshParams = device()->sshParameters();
const bool usePassword = m_ui->passwordButton->isChecked();
sshParams.authenticationType = usePassword
? SshConnectionParameters::AuthenticationTypeTryAllPasswordBasedMethods
: SshConnectionParameters::AuthenticationTypePublicKey;
const bool useKeyFile = m_ui->keyButton->isChecked();
sshParams.authenticationType
= usePassword ? SshConnectionParameters::AuthenticationTypeTryAllPasswordBasedMethods
: useKeyFile ? SshConnectionParameters::AuthenticationTypePublicKey
: SshConnectionParameters::AuthenticationTypeAgent;
device()->setSshParameters(sshParams);
m_ui->pwdLineEdit->setEnabled(usePassword);
m_ui->passwordLabel->setEnabled(usePassword);
m_ui->keyFileLineEdit->setEnabled(!usePassword);
m_ui->keyLabel->setEnabled(!usePassword);
m_ui->keyFileLineEdit->setEnabled(useKeyFile);
m_ui->keyLabel->setEnabled(useKeyFile);
}
void GenericLinuxDeviceConfigurationWidget::hostNameEditingFinished()
@@ -214,10 +218,18 @@ void GenericLinuxDeviceConfigurationWidget::initGui()
const SshConnectionParameters &sshParams = device()->sshParameters();
if (sshParams.authenticationType != SshConnectionParameters::AuthenticationTypePublicKey)
m_ui->passwordButton->setChecked(true);
else
switch (sshParams.authenticationType) {
case SshConnectionParameters::AuthenticationTypePublicKey:
m_ui->keyButton->setChecked(true);
break;
case SshConnectionParameters::AuthenticationTypeAgent:
m_ui->agentButton->setChecked(true);
break;
case SshConnectionParameters::AuthenticationTypePassword:
case SshConnectionParameters::AuthenticationTypeKeyboardInteractive:
case SshConnectionParameters::AuthenticationTypeTryAllPasswordBasedMethods:
m_ui->passwordButton->setChecked(true);
}
m_ui->timeoutSpinBox->setValue(sshParams.timeout);
m_ui->hostLineEdit->setEnabled(!device()->isAutoDetected());
m_ui->sshPortSpinBox->setEnabled(!device()->isAutoDetected());