Я ищу простой способ установить ssh-соединение в Qt, похожее на то, как я могу работать на Java.
Например, чтобы войти в ssh-соединение через java, я могу сделать:
import com.sshtools.j2ssh.SshClient;
import com.sshtools.j2ssh.transport.IgnoreHostKeyVerification;
import com.sshtools.j2ssh.authentication.PasswordAuthenticationClient;
import com.sshtools.j2ssh.authentication.AuthenticationProtocolState;
......
SshClient ssh = new SshClient();
try {
// Timeout of ten seconds
ssh.setSocketTimeout(10*1000);
ssh.connect(ip, port, new IgnoreHostKeyVerification());
PasswordAuthenticationClient auth = new PasswordAuthenticationClient();
auth.setUsername(username);
auth.setPassword(password);
if (ssh.authenticate(auth) != AuthenticationProtocolState.COMPLETE) {
errorLabel.setForeground(Color.RED);
errorLabel.setText("Username or password is incorrect");
}
else
successful = true;
}
catch (Exception e) {
errorLabel.setForeground(Color.RED);
errorLabel.setText("Cannot log into website");
e.printStackTrace();
}
Решения, которые я видел для Qt:
- Переключитесь на libssh
- Сканируйте свой собственный с помощью libssh2
- Используйте QProcess для вызова внешнего SSH-процесса для установления соединения
- Купите библиотеку здесь: http://netsieben.com/products/ssh/
Поскольку версия Java бесплатна, я немного ненавижу тратить деньги на это, но если мне это нужно, я должен. Я бы предпочел не откатываться, потому что я могу только видеть, что это причина ошибок (если эти библиотеки не просты в использовании?).
Любая вещь, которую я не нашел?
EDIT: Я провел дни, борясь с libssh и libqxt. Оба являются полными неудачами в окнах, от того, что я могу определить. Libqxt не будет компилироваться на windows с ssh, даже после выполнения описанных ниже шагов здесь и . Класс оболочки Libssh С++ включает в себя все в заголовке, что вызывает сбои ссылок, если не тщательно пастушь. Как только эти проблемы с компоновщиками решаются, библиотека Libssh скомпилирует библиотеку CDB, поэтому отладка с помощью libssh становится невозможной, независимо от того, используется ли оболочка С++. Итак, теперь я вернулся к libssh2 или заплатил за него через какую-то сомнительную программу, которая, по-видимому, не обновлялась через четыре года. Cryptlib, может быть? Это не помогает, что большая часть помощи в qt-форуме, похоже, "порождает другой процесс", поэтому для моих пользователей требуется, чтобы ssh был установлен, что определенно не соответствует курсу в Windows.