1 概述
libssh是一个在客户端和服务器端实现SSHv2协议的多平台C库。使用libssh,您可以远程执行程序、传输文件、使用安全透明的隧道、管理公钥等等。本文描述的对libssh客户端功能的C++封装。
libssh下载地址
3 实现
3.1 Session
Session类型管理SSH连接会话
3.1.1 Session定义
class SessionPrivate;typedef unsigned short AuthMethod;
AuthMethod const AuthMethod_Unknow = 0x0000;
AuthMethod const AuthMethod_None = 0x0001;
AuthMethod const AuthMethod_PassWord = 0x0002;
AuthMethod const AuthMethod_PubKey = 0x0004;
AuthMethod const AuthMethod_Interactive = 0x0008;inline bool isUnknowOfAuthMethod(AuthMethod method)
{return (method & AuthMethod_Unknow) > 0;
}inline bool isNoneOfAuthMethod(AuthMethod method)
{return (method & AuthMethod_None) > 0;
}inline bool isPasswordOfAuthMethod(AuthMethod method)
{return (method & AuthMethod_PassWord) > 0;
}inline bool isPubKeyOfAuthMethod(AuthMethod method)
{return (method & AuthMethod_PubKey) > 0;
}inline bool isInteractiveOfAuthMethod(AuthMethod method)
{return (method & AuthMethod_Interactive) > 0;
}class Session
{
public:Session();~Session();typedef std::shared_ptr<Session> Ptr;void set_host(const char* host);void set_port(int port);void set_port(const char* port);void set_user(const char* user);bool connect(int timeout = 10);void disconnect();bool verify();AuthMethod auth_method(const char *username);bool login(const char* password);bool login(const char* user, const char* password);bool login_by_interactive(const char* user, const char* password);bool login_by_prikey(const char* user, const char* privkeyfile);bool login_by_pubkey(const char* user, const char* pubkeyfile);const char* error();
private:friend class Channel;friend class Scp;friend class SFtp;friend class File;Session(Session const&);Session