ウェブサイト検索

複数の SSH セッションを管理する方法


SSHについて

私たちは皆、SSH が何であるかを知っていますよね? SSH は、Secure Shell (Secure Socket Shell とも呼ばれます) の略で、リモート サーバーへのアクセスに使用できる暗号化プロトコルです。ローカル システムからの VPS も可能です。リモート システムのターミナルでコマンドを実行するために、物理マシンの近くにいる必要はありません。その名のとおり、SSH は完全に安全であり、リモート システムとローカル システム間のすべてのトラフィックを暗号化します。 SSH は実際には、slogin、ssh、scp という 3 つのユーティリティのスイートです。これら 3 つのユーティリティは、rlogin、rsh、rcp といった以前の UNIX ユーティリティを安全に置き換えるものです。 SSH は、リモート システムの仮想ターミナル環境を取得するのに役立ちます。

複数の SSH セッションを管理する

このチュートリアルでは、複数の SSH セッションを管理する方法を見ていきます。場合によっては、リモート システムの複数のユーザーのターミナルに同時にアクセスしたり、SSH を使用して複数のリモート システムのターミナルにアクセスしたりすることが必要な場合があります。どうやってそれができる?心配ない。

この目的に役立つツールはほとんどありません。このチュートリアルでは、次のツールについて説明します。

  1. クラスター SSH ;
  2. PACマネージャー。

前提条件

リモート システムに openSSH をインストールする

リモート システムに openssh ソフトウェアがインストールされていることを確認してください。

DEB ベースのシステムに openSSH をインストールするには、次を実行します。

sudo apt-get install openssh-server

RPM ベースのシステムでは、次を実行します。

yum install openssh-server

sshd サービスを開始し、再起動するたびに自動的に開始されるようにします。

RHEL 6.x ベースのシステムの場合:

service sshd start
chkconfig sshd on

RHEL 7 システムの場合:

systemctl start sshd
systemctl enable sshd

1. クラスター SSH

cssh とも呼ばれるクラスタ SSH は、SSH を介したクラスタ管理ツールです。これは、単一のグラフィカル コンソール ウィンドウを介して xterm ウィンドウの数を制御し、SSH 接続を介して複数のサーバーでコマンドを対話的に実行できるようにするために使用されます。あなたが数百台のマシンを管理する Linux 管理者であれば、多くのサーバーで同じコマンドを入力する機会があるかもしれません。これを行うには、各サーバーにログインし、各サーバーでコマンドを入力する必要があります。これは非常に時間のかかるプロセスです。 ClusterSSH を使用すると、管理コンソール ウィンドウに入力されたコマンドがすべてのサーバーに複製されます。簡単に言うと、これは複数のサーバーに同時に同じ変更を加えるための優れたツールです。

ローカル システムにクラスター SSH をインストールします

Ubuntu/Debian の場合:

sudo apt-get install clusterssh

RHEL/CentOS 6.x の場合:

cssh は公式リポジトリでは利用できません。したがって、EPEL リポジトリを追加してから、clusterssh をインストールします。

EPEL リポジトリを追加するには、次のコマンドを入力します。

yum install epel-release

次に、ClusterSSH をインストールします。

yum install clusterssh -y

ホストを追加

ここでは、2 つのリモート サーバーを管理します。1 つは Ubuntu 15.04 サーバーで、もう 1 つは Lubuntu 14.04 デスクトップからの CentOS 6.6 サーバーです。両方のサーバーの IP アドレスはそれぞれ 192.168.1.100192.168.1.101 です。

Unity または Dash から Cssh コンソールを起動します。 Cssh のデフォルトのインターフェースは以下のようになります。

次に、リモート ホストを追加しましょう。これを行うには、メイン メニューからホスト -> ホストまたはクラスターの追加に移動します。リモートホストのIPアドレスを入力します。

はい」と入力して Enter キーを押し、リモート ホストの SSH キーをローカル システムに追加します。

最後にパスワードを入力します。

それでおしまい。 Ubuntu 14.04 システム (192.168.1.100) に正常に接続しました。

同様に、リモート ホストを必要な数だけ追加します。

これは、CentOS 6.5 (192.168.1.101) で実行されている別のリモート ホストです。

ちょっと待って?複数の SSH セッションを一度に管理する必要がありますよね?はい。次に、複数のシステムを含むクラスターを作成しましょう。

クラスターの追加

クラスター SSH 構成ファイルを作成し、クラスターを定義します。

ここでは、 クラスター名をtestcluster として使用します。

まず、以下に示すようにクラスター構成ファイルを作成します。

sudo nano /etc/clusters

次の内容を追加します。

clusters = testcluster
testcluster = 192.168.1.100 192.168.1.101

ファイルを保存して終了します。

上で述べたように、testcluster は私のクラスター名です。 192.168.1.100 は Ubuntu 14.04 サーバーの IP アドレスで、192.168.1.101 は CentOS 6 サーバーの IP アドレスです。あるいは、IP アドレスの代わりにホスト名を使用することもできます。

ターミナルを開いて次のコマンドを実行します。

cssh -l sk testcluster

ここでsk は、Ubuntu および centos リモート サーバーのユーザー名です。

注: リモート マシンからサーバーにアクセスするには、ファイアウォール/ルーターを介してポート 22 を許可する必要があります。

すべてのサーバーのターミナル ウィンドウが自動的に開きます。次のスクリーンショットを参照してください。

両方のサーバーの SSH セッションにパスワードを入力します。 2 つのサーバーがログインしていることがわかります。

また、以下に示すように、クラスター名の代わりにホスト名または IP アドレスを使用して各システムの SSH セッションを起動することもできます。

cssh -l sk 192.168.1.100 192.168.1.101

使用法

CSSH(2) という小さなウィンドウは、ClusterSSH の管理コンソール ウィンドウです。管理コンソールに入力したコマンドは両方のサーバーに反映されます。

たとえば、CSSH のコンソールにホスト名を入力して、何が起こるかを見てみましょう。

上のスクリーンショットでわかるように、コマンド hostname は両方のサーバーで同時に自動的に実行され、結果が表示されます。

注意事項: CSSH クラスタを使用する場合は注意してください。 CSSH 管理コンソールで間違ったコマンドや不適切なコマンドを入力すると、すべてのサーバーで同時に実行され、問題が発生する可能性があります。 Enter キーを押す前にコマンドを再確認してください。楽しむ!

2.PACマネージャー

PACPerl Auto Connector は、SecureCRT/PuTTY などの Perl/GTK の代替品です。 (Linux SSH/Telnet)。接続、ユーザー、パスワード、EXPECT 正規表現、マクロなどを設定するための GUI を提供します。これはフリー ソフトウェアであり、GNU の GLPv3 バージョンでライセンスされています。

機能

  • SecureCRT の機能を実装する独自の Linux アプリケーション。
  • リモートマクロとローカルマクロ。
  • EXPECT regexp を使用してコマンドをリモートで送信します。
  • クラスターつながり!!同じクラスタ上の接続はキーストロークを共有します。
  • スクリプトのサポート ;
  • cu/tip/remote-tty 接続を介したシリアル/tty 接続。
  • 接続前/接続後のローカル実行。
  • 接続用のタブまたはウィンドウ。
  • プロキシのサポート。
  • KeePass の統合 ;
  • Wake On LAN 機能。
  • 同じ TAB 内で端末を分割する可能性。
  • トレイ メニュー アイコンから設定済みの接続に素早くアクセスできます。
  • SSH、Telnet、SFTP、rdesktop、VNC、cu、remote-tty、FTP などに最適な Linux GUI。
  • DEB、RPM、.TAR.GZ パッケージが利用可能。
  • 無料 (GNU GPLv3)。

Ubuntu/Debian に PAC マネージャーをインストールする

www.sourceforge.net から最新バージョンをダウンロードします。

wget http://sourceforge.net/projects/pacmanager/files/pac-4.0/pac-4.5.5-all.deb

次のコマンドを使用してインストールします。

sudo apt-get install gdebi
sudo gdebi pac-4.5.5-all.deb

RHEL/CentOS に PAC マネージャーをインストールする

32 ビット システムの場合:

wget http://sourceforge.net/projects/pacmanager/files/pac-4.0/pac-4.5.5-2.i386.rpm

64 ビット システムの場合:

wget http://sourceforge.net/projects/pacmanager/files/pac-4.0/pac-4.5.5-2.x86_64.rpm

次に、次のコマンドを使用して PAC マネージャーをインストールします。

rpm -ivh pac-4.5.5-2*.rpm

これで PAC マネージャーがインストールされました。次に、それがどのように機能するかを確認する方法を見てみましょう。

PAC を起動

ダッシュまたはメニューから PAC を開きます。 PACマネージャーのメインウィンドウは以下のようになります。

リモート ホストを追加する

まず、単一のリモート ホストにアクセスする方法を見てみましょう。

PAC メイン ウィンドウの左上にある新しい接続 アイコンをクリックします。

新しい接続の名前タイトルを入力します。

次のウィンドウで、方法ドロップダウン ボックスから接続方法を選択します。 FTP、SFTP、SSH、RDP、RDESKTOP、VNC など、さまざまな接続方法が利用可能です。デフォルトの方法は SSH です。次に、リモート ホストの IP アドレス、ユーザー名、パスワードを入力します。最後に、[保存] をクリックして [閉じる ] ボタンをクリックします。

リモート ユーザーを sudo 権限で実行する場合は、接続方法ドロップダウン ボックスの下にある「sudo」ボックスをオンにします。

これで、リモート ノードが PAC メイン ウィンドウの接続タブに追加されます。

リモート ホストに接続

アクセスするリモート ノードを選択し、接続をクリックします。

出来上がり!これで、リモート ホストに接続できるようになります。

上のスクリーンショットにあるように、PAC マネージャーから Ubuntu 15.04 サーバーにアクセスできます。同様に、必要なだけリモート ホストを追加してアクセスできます。すべてのリモート ホストは、PAC メイン ウィンドウの左側にある [接続] セクションにリストされます。

以下のスクリーンショットは、リモートの Ubuntu と CentOS サーバーの SSH セッションを示しています。

クラスターの作成

クラスターを使用すると、2 つ以上のシステムを組み合わせて、複数の SSH セッションで同じコマンドを同時に実行できます。

まず、クラスターに追加するリモート システムに接続します。

新しいクラスターを作成しましょう。クラスターを作成するには、PAC ウィンドウの左下隅にある [クラスター] ボタンをクリックします。

次のウィンドウが表示されます。 「追加」ボタンをクリックします。

クラスター名を入力します。

リモート ホストを選択し、[クラスターに追加] ボタンをクリックします。

これで、リモート ホストがクラスターに参加しました。 「OK」をクリックして保存します。

ここで、任意のリモート ホストの SSH セッションに任意のコマンドを入力します。同じコマンドがクラスター内のすべてのシステムに複製されます。たとえば、Ubuntu のターミナルで「ifconfig」コマンドを入力すると、同じコマンドが CentOS 6.6 サーバーで自動的に実行されます。

クラスターにコマンドを入力するときは注意してください。場合によっては、間違ったコマンドを入力すると、クラスター内のすべてのシステムが影響を受けます。

グループの作成

左上隅にある「新しいグループ」アイコンをクリックします。

グループ名を入力します。

新しく作成されたグループが「接続」セクションにリストされます。グループを右クリックし、「接続の追加」を選択します。

新しいノードの名前を入力します。

ノードの IP アドレス、ユーザー名、およびパスワードを入力します。最後に、「保存して閉じる」ボタンをクリックします。

同様に、必要なだけノードをグループに追加できます。

ここで、グループ内のノードを選択し、「接続」ボタンをクリックして、新しい SSH セッションを開始します。また、グループ名を右クリックして「新しいクラスターで実行」オプションを選択すると、すべてのノードの SSH セッションを一度に開始できます。

クラスター名を入力し、「OK」をクリックします。

これで、グループ内のすべてのノードの SSH セッションが自動的に開きます。

すでにご存じのとおり、SSH セッションでコマンドを入力すると、そのコマンドはクラスター内のすべてのノードで実行されます。だから気をつけて!

複数の SSH インスタンスを開始する

もう 1 つの優れた機能は、リモート ホストの複数の SSH インスタンス (最大 9 つ) を開くことができることです。

複数のインスタンスを開始するには、リモート ノードを右クリックして「開始」を選択します。 「開始」項目のサブメニューから、開きたいインスタンスの数を選択します。

以下のスクリーンショットにあるように、CentOS サーバーの 3 つの SSH セッションを実行しています。

マルチプロトコルのサポート

PAC Manager は、リモート サーバーのターミナルにアクセスするだけではありません。より高度な機能がいくつかあります。

FTP、SFTP、redesktop、MOSH、VNC、WEBDAV などのマルチプロトコルをサポートしています。たとえば、FTP プロトコルを使用してリモート サーバーにアクセスするには、次の手順を実行します。

まず、リモート システムに FTP サーバーがインストールされていることを確認してください。 RPM ベースのシステムに FTP サーバーをインストールするには、次のリンクを参照してください。

  • CentOS 7 での FTP サーバーのインストールと構成
  • CentOS、RHEL、Scientific Linux 6.5/6.4/6.3 での FTP サーバーのセットアップ
  • openSUSE 13.2/13.1 で FTP サーバーをセットアップする方法

次に、[接続] セクションでリモート ノードを右クリックし、[接続の編集] を選択します。

次のウィンドウが表示されます。 「方法」ドロップダウンボックスからFTPプロトコルを選択します。次に、「保存して閉じる」ボタンをクリックします。

次に、「接続」ボタンをクリックします。それでおしまい。 FTP を使用してリモート ノードに正常に接続しました。

リモートホストの編集、名前変更、削除などの誤った変更を防ぐことができます。

これを行うには、リモート ノードを右クリックし、「保護」オプションを選択します。

結論

これらのツールは、多数のリモート システムを管理する人に最適です。これら 2 つのツールのうち、PAC Manager は Cluster SSH よりも多くの機能を備えています。 PAC マネージャーには、マルチプロトコル、プロキシ サポート、KeepassX、自動保存セッション サポートなどがあります。これらのツールはシステム管理者の日常業務に役立ち、強く推奨されます。

乾杯!