Qtの基礎 - SSH

提供:MochiuWiki : SUSE, EC, PCB
2021年5月12日 (水) 02:54時点におけるWiki (トーク | 投稿記録)による版 (→‎独自クラスの使用)
ナビゲーションに移動 検索に移動

概要

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

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



libssh2ライブラリの使用

以下のURLにアクセスして、libssh2をダウンロードする。
https://www.libssh2.org
ダウンロードしたlibssh2を解凍して、ビルドディレクトリを作成する。

tar xf libssh2.tar.xz
cd libssh2 && mkdir build && cd build


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

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