「Qtの基礎 - SSH」の版間の差分
| 7行目: | 7行目: | ||
<br><br> | <br><br> | ||
== | == libSSHとlibSSH2の比較 == | ||
libSSHとlibSSH2は、どちらもSSHプロトコルを実装したライブラリである。<br> | libSSHとlibSSH2は、どちらもSSHプロトコルを実装したライブラリである。<br> | ||
libSSHはC言語、libSSH2はC++言語で記述されている。<br> | libSSHはC言語、libSSH2はC++言語で記述されている。<br> | ||
| 20行目: | 20行目: | ||
! style="background-color:#66CCFF; width: 60%;" | 項目 | ! style="background-color:#66CCFF; width: 60%;" | 項目 | ||
! style="background-color:#66CCFF; width: 20%;" | libSSH2 | ! style="background-color:#66CCFF; width: 20%;" | libSSH2 | ||
! style="background-color:#66CCFF; width: 20%;" | | ! style="background-color:#66CCFF; width: 20%;" | libSSH | ||
|- | |- | ||
| ライブラリ名 || libssh2.so || libssh.so | | ライブラリ名 || libssh2.so || libssh.so | ||
| 53行目: | 53行目: | ||
<br><br> | <br><br> | ||
== | == libSSHライブラリのインストール == | ||
==== | ==== libSSHとは ==== | ||
libSSHは、LGPL 2.1ライセンスである。<br> | |||
<br> | <br> | ||
==== パッケージ管理システムからインストール ==== | ==== パッケージ管理システムからインストール ==== | ||
| 61行目: | 61行目: | ||
<br> | <br> | ||
==== ソースコードからインストール ==== | ==== ソースコードからインストール ==== | ||
libSSHのビルドに必要なライブラリをインストールする。<br> | |||
sudo zypper install zlib-devel readline-devel | sudo zypper install zlib-devel readline-devel libpcap-devel libopenssl-devel libopenssl-1_1-devel libgcrypt-devel p11-kit-devel libsodium-devel libcmocka-devel doxygen \ | ||
# 以下に示すライブラリは不要の可能性あり | # 以下に示すライブラリは不要の可能性あり | ||
openpgm-devel ldns-devel zeromq-devel unbound-devel libunwind | openpgm-devel ldns-devel zeromq-devel unbound-devel libunwind-devel \ | ||
libheimdal-devel libgssglue-devel gssntlmssp-devel | libheimdal-devel libgssglue-devel gssntlmssp-devel | ||
<br> | <br> | ||
[https://www.libssh.org/ | [https://www.libssh.org/ libSSHの公式Webサイト]または[https://git.libssh.org/projects/libssh.git libSSH向けのGit]にアクセスして、libSSHのソースコードをダウンロードする。<br> | ||
ダウンロードしたファイルを解凍する。<br> | |||
tar xf libssh-<バージョン>.tar.xz | tar xf libssh-<バージョン>.tar.xz | ||
cd libssh-<バージョン> | cd libssh-<バージョン> | ||
<br> | <br> | ||
libSSHをビルドおよびインストールする。<br> | |||
mkdir build && cd build | mkdir build && cd build | ||
cmake .. \ | cmake .. \ | ||
-DCMAKE_INSTALL_PREFIX=/< | -DCMAKE_INSTALL_PREFIX=/<libSSHのインストールディレクトリ> -DCMAKE_BUILD_TYPE=Release \ | ||
-DCMAKE_C_COMPILER=/<GCCのインストールディレクトリ>/bin/gcc \ # オプション | -DCMAKE_C_COMPILER=/<GCCのインストールディレクトリ>/bin/gcc \ # オプション | ||
-DCMAKE_CXX_COMPILER=/<GCCのインストールディレクトリ>/bin/g++ # オプション | -DCMAKE_CXX_COMPILER=/<GCCのインストールディレクトリ>/bin/g++ # オプション | ||
| 83行目: | 83行目: | ||
make install | make install | ||
<br> | <br> | ||
libSSHの使用例は、以下に示すURLを参考にすること。<br> | |||
https://api.libssh.org/stable/libssh_tutorial.html | https://api.libssh.org/stable/libssh_tutorial.html | ||
<br><br> | <br><br> | ||
| 151行目: | 151行目: | ||
== 独自クラスの使用 == | == 独自クラスの使用 == | ||
以下に示すクラスは、クロスプラットフォームの非同期SSHおよびSCPソケットである。<br> | 以下に示すクラスは、クロスプラットフォームの非同期SSHおよびSCPソケットである。<br> | ||
このクラスは、libSSHを必要とする。(RSA鍵の受け渡しを隠したり、コマンドの応答をreadyReadシグナル経由ではなく、シングルショットで送信している)<br> | |||
<br> | <br> | ||
Windowsで動作させるには、このクラスを使用するファイルの最上部にインクルードする必要がある。<br> | Windowsで動作させるには、このクラスを使用するファイルの最上部にインクルードする必要がある。<br> | ||
2023年12月6日 (水) 11:09時点における版
概要
Qtにおいて、簡潔にSSH接続を確立する手順を記載する。
- libsshまたはlibssh2を使用する。
- QProcessクラスを使用して、外部のSSHプロセスを呼び出して接続を確立する。
- 他のSSHライブラリを購入する。
http://netsieben.com/products/ssh
libSSHとlibSSH2の比較
libSSHとlibSSH2は、どちらもSSHプロトコルを実装したライブラリである。
libSSHはC言語、libSSH2はC++言語で記述されている。
libSSHは、SSHクライアント/サーバの両方を実装するために使用することができ、libSSH2は主にクライアント側で使用する。
また、libSSHは単独のライブラリとして提供されているのに対して、
libSSH2はlibSSL等の他のライブラリと組み合わせて使用することが多い。
| 項目 | libSSH2 | libSSH |
|---|---|---|
| ライブラリ名 | 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 |
libSSHライブラリのインストール
libSSHとは
libSSHは、LGPL 2.1ライセンスである。
パッケージ管理システムからインストール
sudo zypper install libssh-devel
ソースコードからインストール
libSSHのビルドに必要なライブラリをインストールする。
sudo zypper install zlib-devel readline-devel libpcap-devel libopenssl-devel libopenssl-1_1-devel libgcrypt-devel p11-kit-devel libsodium-devel libcmocka-devel doxygen \
# 以下に示すライブラリは不要の可能性あり
openpgm-devel ldns-devel zeromq-devel unbound-devel libunwind-devel \
libheimdal-devel libgssglue-devel gssntlmssp-devel
libSSHの公式WebサイトまたはlibSSH向けのGitにアクセスして、libSSHのソースコードをダウンロードする。
ダウンロードしたファイルを解凍する。
tar xf libssh-<バージョン>.tar.xz cd libssh-<バージョン>
libSSHをビルドおよびインストールする。
mkdir build && cd build cmake .. \ -DCMAKE_INSTALL_PREFIX=/<libSSHのインストールディレクトリ> -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_C_COMPILER=/<GCCのインストールディレクトリ>/bin/gcc \ # オプション -DCMAKE_CXX_COMPILER=/<GCCのインストールディレクトリ>/bin/g++ # オプション make -j $(nproc) make install
libSSHの使用例は、以下に示す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
# configureスクリプトを使用する場合
../cofigur --prefix=<libSSH2のインストールディレクトリ> \
--enable-examples-build --disable-debug --with-libz
make -j $(nproc)
make install
# CMakeを使用する場合
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
Windowsの場合、CMakeおよびVisual Studioを使用してlibSSH2をビルドおよびインストールすることができる。
- CMakeを使用する場合
- 32ビット Windows
cmake -DBUILD_SHARED_LIBS=ON -DBUILD_EXAMPLES=OFF -DBUILD_TESTING=OFF -A Win32 .. -B "x86"cmake --build x86 --config Release
- 64ビット Windows
cmake -DBUILD_SHARED_LIBS=ON -DBUILD_EXAMPLES=OFF -DBUILD_TESTING=OFF -A x64 .. -B "x64"cmake --build x64 --config Release
- コンパイルされたDLLファイルとlibファイルは、x86とx64のディレクトリのsrc/Releaseディレクトリに配置される。
- 32ビット Windows
- Visual Studioを使用する場合
- libSSH2ディレクトリと同階層にプロジェクトを作成する。
- プロジェクトのプロパティを選択して、プロパティ画面左ペインにある[General] - プロパティ画面右ペインにある[ターゲット名]を"libSSH2_x64"等と入力する。
- プロパティ画面左ペインにある[リンカ] - [Advanced] - プロパティ画面右ペインにある[インポートライブラリ]プルダウンから[<Inherit from parent or project defaults>]を選択する。
また、ビルドされたDLLファイルは、以下に示すWebサイトからダウンロードできる。
https://download.csdn.net/download/sdhongjun/15682389
独自クラスの使用
以下に示すクラスは、クロスプラットフォームの非同期SSHおよびSCPソケットである。
このクラスは、libSSHを必要とする。(RSA鍵の受け渡しを隠したり、コマンドの応答をreadyReadシグナル経由ではなく、シングルショットで送信している)
Windowsで動作させるには、このクラスを使用するファイルの最上部にインクルードする必要がある。
これにより、QtがWindowsソケットをインクルードする前にWindows.hファイルをインクルードさせないようにする。
ファイル:CSSH.zip