Qtの基礎 - SSH

提供:MochiuWiki : SUSE, EC, PCB
2023年1月6日 (金) 16:34時点におけるWiki (トーク | 投稿記録)による版 (→‎libssh2ライブラリの使用)
ナビゲーションに移動 検索に移動

概要

Qtにおいて、簡潔にSSH接続を確立する手順を記載する。

  • libsshまたはlibssh2を使用する。
  • QProcessクラスを使用して、外部のSSHプロセスを呼び出して接続を確立する。
  • 他のSSHライブラリを購入する。
    http://netsieben.com/products/ssh



libSSH2ライブラリのインストール

libSSH2とは

libSSH2は、3条項BSDライセンスである。(4条項BSDライセンスから、3番目にあった「宣伝条項」を削除したもの) これにより、GPLと互換性が生まれたため、BSDライセンスのソフトウェアをGPLで配布することができる。(その逆は不可)

パッケージ管理システムからインストール

sudo zypper install libssh2-devel


ソースコードからインストール

libSSH2のビルドに必要なライブラリをインストールする。

sudo zypper install zlib-devel libopenssl-devel libopenssl-1_1-devel


libSSH2の公式WebサイトまたはGithubにアクセスして、libSSH2のソースコードをダウンロードする。
ダウンロードしたソースコードを解凍する。

tar xf libssh2.tar.xz
cd libssh2


libSSH2をビルドおよびインストールする。

mkdir build && cd build

cmake .. \
-DCMAKE_INSTALL_PREFIX=/<libssh2のインストールディレクトリ> \
-DLINT=ON -DBUILD_SHARED_LIBS=ON -DCLEAR_MEMORY=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_DEBUG_LOGGING=OFF \
-DCMAKE_C_COMPILER=/<GCCのインストールディレクトリ>/bin/gcc \  # オプション
-DCMAKE_CXX_COMPILER=/<GCCのインストールディレクトリ>/bin/g++  # オプション

make -j $(nproc)
make install


libSSH2の使用例は、以下に示すURLを参考にすること。
http://www.chaosstuff.com/2013/09/gnome-mplayer-remote-with-qt-and-libssh2.html
https://bitbucket.org/nchokoev/qtsshremote


独自クラスの使用

以下に示すクラスは、クロスプラットフォームの非同期SSHおよびSCPソケットである。
このクラスは、libsshまたはlibssh2を必要とする。(RSA鍵の受け渡しを隠したり、コマンドの応答をreadyReadシグナル経由ではなく、シングルショットで送信している)

Windowsで動作させるには、このクラスを使用するファイルの最上部にインクルードする必要がある。
これにより、QtがWindowsソケットをインクルードする前にWindows.hファイルをインクルードさせないようにする。

ファイル:CSSH.zip