「Qtの基礎 - SSH」の版間の差分
55行目: | 55行目: | ||
==== ソースコードからインストール ==== | ==== ソースコードからインストール ==== | ||
libSSH1のビルドに必要なライブラリをインストールする。<br> | libSSH1のビルドに必要なライブラリをインストールする。<br> | ||
sudo zypper install zlib-devel libpcap-devel libopenssl-devel libopenssl-1_1-devel libgcrypt-devel p11-kit-devel libsodium-devel | sudo zypper install zlib-devel readline-devel libpcap-devel libopenssl-devel libopenssl-1_1-devel libgcrypt-devel p11-kit-devel libsodium-devel doxygen \ | ||
# 以下に示すライブラリは不要の可能性あり | |||
openpgm-devel ldns-devel zeromq-devel unbound-devel libunwind-devel libcmocka-devel \ | |||
libheimdal-devel libgssglue-devel gssntlmssp-devel | |||
<br> | <br> | ||
[https://www.libssh.org/ libSSH1の公式Webサイト]または[https://git.libssh.org/projects/libssh.git libSSH1向けのGit]にアクセスして、libSSH1のソースコードをダウンロードする。<br> | [https://www.libssh.org/ libSSH1の公式Webサイト]または[https://git.libssh.org/projects/libssh.git libSSH1向けのGit]にアクセスして、libSSH1のソースコードをダウンロードする。<br> |
2023年1月6日 (金) 22:25時点における版
概要
Qtにおいて、簡潔にSSH接続を確立する手順を記載する。
- libsshまたはlibssh2を使用する。
- QProcessクラスを使用して、外部のSSHプロセスを呼び出して接続を確立する。
- 他のSSHライブラリを購入する。
http://netsieben.com/products/ssh
libSSH1とlibSSH2の比較
項目 | libSSH2 | libSSH1 |
---|---|---|
ライブラリ名 | libssh2.so | libssh.so |
ライセンス | 3条項BSD | LGPL 2.1 |
サーバサイドのサポート | No | Yes |
GSSAPI認証 | No | Yes |
楕円曲線鍵の交換 | No | Yes |
楕円曲線鍵のホスト鍵 | No | Yes |
ナイトリーテストによるテストケースの自動化 | No | Yes |
Stable API | Yes | ほとんどの部分 |
C言語との互換 | C89 | C99 |
厳格な名前空間 | Yes | Yes |
全ての関数のマニュアル | Yes | No |
全ての関数のDoxygenドキュメント | No | Yes |
Tutorial | Yes | Yes |
SSHv1のサポート | No | Yes |
libSSH1ライブラリのインストール
libSSH1とは
libSSH1は、LGPL 2.1ライセンスである。
パッケージ管理システムからインストール
sudo zypper install libssh-devel
ソースコードからインストール
libSSH1のビルドに必要なライブラリをインストールする。
sudo zypper install zlib-devel readline-devel libpcap-devel libopenssl-devel libopenssl-1_1-devel libgcrypt-devel p11-kit-devel libsodium-devel doxygen \ # 以下に示すライブラリは不要の可能性あり openpgm-devel ldns-devel zeromq-devel unbound-devel libunwind-devel libcmocka-devel \ libheimdal-devel libgssglue-devel gssntlmssp-devel
libSSH1の公式WebサイトまたはlibSSH1向けのGitにアクセスして、libSSH1のソースコードをダウンロードする。
ダウンロードしたソースコードを解凍する。
tar xf libssh-<バージョン>.tar.xz cd libssh-<バージョン>
libSSH1をビルドおよびインストールする。
mkdir build && cd build cmake .. \ -DCMAKE_INSTALL_PREFIX=/<libSSH1のインストールディレクトリ> -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_C_COMPILER=/<GCCのインストールディレクトリ>/bin/gcc \ # オプション -DCMAKE_CXX_COMPILER=/<GCCのインストールディレクトリ>/bin/g++ # オプション make -j $(nproc) make install
libSSH1の使用例は、以下に示すURLを参考にすること。
https://api.libssh.org/stable/libssh_tutorial.html
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ソケットである。
このクラスは、libSSH1を必要とする。(RSA鍵の受け渡しを隠したり、コマンドの応答をreadyReadシグナル経由ではなく、シングルショットで送信している)
Windowsで動作させるには、このクラスを使用するファイルの最上部にインクルードする必要がある。
これにより、QtがWindowsソケットをインクルードする前にWindows.hファイルをインクルードさせないようにする。
ファイル:CSSH.zip