複数の 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 を使用して複数のリモート システムのターミナルにアクセスしたりすることが必要な場合があります。どうやってそれができる?心配ない。
この目的に役立つツールはほとんどありません。このチュートリアルでは、次のツールについて説明します。
- クラスター SSH ;
- 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.100 と 192.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マネージャー
PAC、Perl 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、自動保存セッション サポートなどがあります。これらのツールはシステム管理者の日常業務に役立ち、強く推奨されます。
乾杯!