Comment facilement établir une connexion SSH dans Qt?
Je suis à la recherche d'un moyen facile d'établir une connexion ssh en Qt similaire à la façon dont je peut fonctionner en Java.
Par exemple, pour se connecter à une connexion ssh via le java, je peux le faire:
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();
}
Les solutions que j'ai vu pour Qt:
- Rouler mon propre en utilisant libssh
- Rouler mon propre en utilisant libssh2
- Utilisation QProcess pour appeler l'extérieur par un processus SSH pour établir une connexion
- Acheter la bibliothèque ici: http://netsieben.com/products/ssh/
Depuis la version de Java est libre, je suis un peu réticent à dépenser de l'argent sur cela, mais si je le dois, je le dois. Je préfère ne pas rouler le mien, parce que je ne peut voir que d'être une cause d'erreurs (à moins que ces bibliothèques sont facile à utiliser?).
Quelque chose que je n'ai pas trouvé?
EDIT: je viens de passer des jours de lutte avec les deux libssh et libqxt. Les deux sont des échecs absolus sur windows, à partir de ce que je peux déterminer. Libqxt ne compile pas sur windows avec le protocole ssh, même après avoir suivi les étapes décrites ici et ici. Libssh de la classe wrapper C++ comprend tout ce qui dans l'en-tête, qui est à l'origine de la liaison des échecs de si pas soigneusement gardé. Une fois que ceux de l'éditeur de liens que les problèmes sont résolus, Libssh est compilé les accidents de la bibliothèque à la CDB, afin de débogage avec libssh devient impossible, indépendamment de si oui ou non le wrapper c++ est utilisé. Alors maintenant, je suis de retour à libssh2 ou de payer pour cela par le biais de certains douteuse programme qui n'a apparemment pas été mis à jour dans quatre ans. Cryptlibpeut-être? Cela n'aide pas que la plupart de l'intervalle qt forum d'aide semble être frayer un autre processus, qui nécessite donc mes utilisateurs ont installé ssh, qui n'est certainement pas par pour le cours sur Windows.
source d'informationauteur mmr
Vous devez vous connecter pour publier un commentaire.
J'ai cherché une solution pour ce pour un couple de jours, puis oublié sur le problème. Alors aujourd'hui, je suis tombé sur ce petit bijou dans le Qt-Creator source Utils::sshinclut le support pour SFTP, plaine-vieux SSH, et toutes sortes de goodies.
Démêler les choses à partir de Qt-Creator peut être une douleur, mais après avoir passé par ce processus, il s'élève à l'accaparement des Botan (l'une des autres libs QT-Creator) + Utils
Voir LibQxt. Recherchez QxtSsh classes. hg repo à l'aide de libssh2 en interne.
Je suis en utilisant libssh2 http://www.libssh2.org/ avec qt. Je l'utilise de la manière la plus simple indigènes sockets. J'ai pas eu le temps de le convertir à l'utilisation de qt sockets. Cependant, il fonctionne très bien.
La description du projet est:
http://www.chaosstuff.com/2013/09/gnome-mplayer-remote-with-qt-and-libssh2.html
et le code source:
https://bitbucket.org/nchokoev/qtsshremote