SshConnection
#include”sshconnection.h” 所在的头文件
类:SshConnectionParameters:
连接需要的信息类。包含需要连接的主机和验证信息。
enum AuthenticationType 验证方式
{AuthenticationByPassword, 密码验证
AuthenticationByKey}; key文件验证
公有函数:
SshConnectionParameters() 构造函数。
属性:
QString host; 主机,主机名或者主机地址
QString userName; 用户名
QString password; 密码
QString privateKeyFile; 密匙文件。(文件地址)
int timeout; // In seconds. 连接等待时间,超过时间就自动返回连接超时,单位秒(s)
AuthenticationType authenticationType; 验证方式
quint16 port;
SshConnectionOptions options; 连接设置
SshConnectionOption枚举
enum SshConnectionOption {
SshIgnoreDefaultProxy = 0×1, 忽略默认代理?
SshEnableStrictConformanceChecks = 0×2
};
Q_DECLARE_FLAGS(SshConnectionOptions, SshConnectionOption)
类:SshConnectionInfo
连接信息类。
公有函数:
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; 目标地址
类:SshConnection
连接到服务器的类。下面打开和执行命令,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); 连接错误
Ssherro枚举:
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地址:
我Blog:
本文地址: