「Qtの基礎 - SSH」の版間の差分

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動
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