#include」sshconnection.h」 所在的頭文件html
鏈接須要的信息類。包含須要鏈接的主機和驗證信息。git
enum AuthenticationType 驗證方式github
{AuthenticationByPassword, 密碼驗證shell
AuthenticationByKey}; key文件驗證api
公有函數:服務器
SshConnectionParameters() 構造函數。框架
屬性:ssh
QString host; 主機,主機名或者主機地址異步
QString userName; 用戶名socket
QString password; 密碼
QString privateKeyFile; 密匙文件。(文件地址)
int timeout; // In seconds. 鏈接等待時間,超過期間就自動返回鏈接超時,單位秒(s)
AuthenticationType authenticationType; 驗證方式
quint16 port;
SshConnectionOptions options; 鏈接設置
enum SshConnectionOption {
SshIgnoreDefaultProxy = 0×1, 忽略默認代理?
SshEnableStrictConformanceChecks = 0×2
};
Q_DECLARE_FLAGS(SshConnectionOptions, SshConnectionOption)
鏈接信息類。
公有函數:
SshConnectionInfo() : localPort(0), peerPort(0) {} 構造函數
SshConnectionInfo(const QHostAddress &la, quint16 lp, const QHostAddress &pa, quint16 pp)
: localAddress(la), localPort(lp), peerAddress(pa), peerPort(pp) {} 構造函數
QHostAddress localAddress; 本地IP地址
quint16 localPort; 本地端口
QHostAddress peerAddress; 目標地址
quint16 peerPort; 目標地址
鏈接到服務器的類。下面打開和執行命令,ssh socket通道,sftp面板都須要此類。
enum State{Unconnected,Connecting,Connected}; 鏈接狀態枚舉{未鏈接,鏈接中,已鏈接}
公共函數:
explicit SshConnection(const SshConnectionParameters &serverInfo, QObject *parent = 0); 構造函數,參數是鏈接所需的信息類,和父對象。
void connectToHost(); 鏈接到服務器(異步)
void disconnectFromHost(); 從服務器斷開鏈接
State state() const; 返回當前鏈接的狀態
SshError errorState() const; 返回當前鏈接的錯誤
QString errorString() const; 返回當前鏈接錯誤的文本信息
SshConnectionParameters connectionParameters() const; 返回所用的鏈接信息類
SshConnectionInfo connectionInfo() const; 返回當前的鏈接信息
~SshConnection(); 析構函數
QSharedPointer<SshRemoteProcess> createRemoteProcess(const QByteArray &command); 建立一個命令執行過程呢,參數是須要執行的命令。命令執行完即退出,返回參數爲SshRemoteProcess(遠程進程類)的智能指針。
QSharedPointer<SshRemoteProcess> createRemoteShell(); 建立一個shell,返回的也是shRemoteProcess(遠程進程類)的智能指針。這個能夠保持狀態,屢次執行命令。Ssh跳板也是支持的,合理設計實現自動交互。
QSharedPointer<SftpChannel> createSftpChannel(); 建立一個sftp面板,返回的是SftpChannel(sftp面板類)的智能指針
QSharedPointer<SshDirectTcpIpTunnel> createTunnel(quint16 remotePort); 建立一個ssh隧道,返回的是SshDirectTcpIpTunnel的智能指針。(這個類能夠實現ssh的scoket代理。),參數是本地監聽端口。
// -1 if an error occurred, number of channels closed otherwise.
int closeAllChannels(); //關閉全部通道數,正常返回通道數,錯誤返回-1
int channelCount() const; 通道數
發出的信號;
void connected(); 以鏈接到服務器
void disconnected(); 已從服務器斷開鏈接
void dataAvailable(const QString &message); (有數據可用?)
void error(QSsh::SshError); 鏈接錯誤
enum SshError {
SshNoError, 沒有錯誤
SshSocketError, scoket錯誤
SshTimeoutError, 鏈接超時
SshProtocolError,
SshHostKeyError, 密碼錯誤
SshKeyFileError, key驗證錯誤
SshAuthenticationError,
SshClosedByServerError,
SshInternalError
};
注:QSSH是提取自Qt-creator裏的一個ssh連接庫,用botan庫實現的加密,用qt框架的實現的ssh連接庫。
這是官方留下的接口,官方的封裝模式大概是(我從源碼看的,Qt庫源碼我未讀過,不清楚):
留出api類邏輯處理和運算單獨存在一個private類裏,api類裏私有對象有一個private類,api裏只是爲了簡潔的接口,隱藏細節的一箇中間。話說,這個接口就夠咱們用的了。
此爲我在使用中獲得的一些參數和用法,非官方文檔,有錯誤的地方請你們指正,還有的拿不許的就在後面加了個?號。
QSsh地址:http://www.oschina.net/p/qssh
https://github.com/dushibaiyu/QSsh
我Blog:http://www.dushibaiyu.com
本文地址:http://www.dushibaiyu.com/2014/01/qssh%E4%B9%8Bsshconnection%E7%B1%BB.html