「Qtの基礎 - SSH」の版間の差分
5行目: | 5行目: | ||
* QProcessクラスを使用して、外部のSSHプロセスを呼び出して接続を確立する。 | * QProcessクラスを使用して、外部のSSHプロセスを呼び出して接続を確立する。 | ||
* 他のSSHライブラリを購入する。<br>http://netsieben.com/products/ssh | * 他のSSHライブラリを購入する。<br>http://netsieben.com/products/ssh | ||
<br><br> | |||
== libSSH1とlibSSH2の比較 == | |||
<center> | |||
{| class="wikitable" | style="background-color:#fefefe;" | |||
|- | |||
! style="background-color:#66CCFF; width: 60%;" | 項目 | |||
! style="background-color:#66CCFF; width: 20%;" | libSSH2 | |||
! style="background-color:#66CCFF; width: 20%;" | 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 | |||
|} | |||
</center> | |||
<br><br> | |||
== libSSH1ライブラリのインストール == | |||
==== libSSH1とは ==== | |||
libSSH1は、LGPL 2.1ライセンスである。<br> | |||
<br> | |||
==== パッケージ管理システムからインストール ==== | |||
sudo zypper install libssh-devel | |||
<br> | |||
==== ソースコードからインストール ==== | |||
libSSH1のビルドに必要なライブラリをインストールする。<br> | |||
sudo zypper install zlib-devel libpcap-devel libopenssl-devel libopenssl-1_1-devel libgcrypt-devel p11-kit-devel libsodium-devel | |||
<br> | |||
[https://www.libssh.org/ libSSH1の公式Webサイト]または[https://git.libssh.org/projects/libssh.git libSSH1向けのGit]にアクセスして、libSSH1のソースコードをダウンロードする。<br> | |||
ダウンロードしたソースコードを解凍する。<br> | |||
tar xf libssh-<バージョン>.tar.xz | |||
cd libssh-<バージョン> | |||
<br> | |||
libSSH1をビルドおよびインストールする。<br> | |||
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 | |||
<br> | |||
libSSH1の使用例は、以下に示すURLを参考にすること。<br> | |||
https://api.libssh.org/stable/libssh_tutorial.html | |||
<br><br> | <br><br> | ||
2023年1月6日 (金) 16:57時点における版
概要
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 libpcap-devel libopenssl-devel libopenssl-1_1-devel libgcrypt-devel p11-kit-devel libsodium-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