2拠点サーバー間でSSH暗号化通信する方法

この記事は 2 分で読めます。
概要

SSH通信とは、「SSHプロトコル」と呼ばれる暗号化を利用して、クライアントとサーバー間の接続を保護します。この暗号化の利点は、「ユーザー認証」、「コマンドの入出力」、「ファイル転送」においてネットワーク内の攻撃から保護してくれるところです。この安全性を利用して、2拠点サーバー間通信のSSH接続をパスワードなしで相互接続する方法をここで解説します。

目次

SSHプロトコルとは

SSH通信は「SSHプロトコル」と呼ばれる暗号化を利用して、クライアントとサーバー間の接続を保護します。

この暗号化により、「ユーザー認証」、「コマンドの入出力」、「ファイル転送」においてネットワーク内の攻撃から保護してくれます。

上記の暗号化にはクライアントとサーバー間に暗号化を解読するための鍵(SSHキー)を受け渡さないといけません。

以下SSHキーの作成とクライアントーユーザー間での鍵の交換について解説します。

2拠点サーバー間でのSSH通信

下記のように、イントラネット側にてサーバー機Aとサーバー機Bがありこの2拠点間でのSSH通信を試みます。

サーバー機Aからサーバー機BへのSSH暗号化通信接続

サーバー機A側

サーバーA機(プライベートIP=192.168.12.20)で、暗号化キー生成のために以下のコマンドを入力します。

$ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:

[ここにfingerprintが表示されます。]

自動的にユーザー(user)内の、~/.ssh/ ディレクトリに 「id_rsa」 (秘密鍵)と「 id_rsa.pub」 (公開鍵)が生成されていることがわかるかと思います。

次に、「 id_rsa.pub」 (公開鍵)を「authorized_keys」にコピーしてパミッションを600に変更します。

これは後に述べますが、今後サーバー機が増えた際にauthorized_keysに暗号化キーを集約させるためです。

$cat id_rsa.pub>> authorized_keys
$chmod 600 authorized_keys

次に生成さえれた暗号化鍵をサーバーB機(プライベートIP=192.168.12.20)に送ります。

■ssh接続したいクライアントサーバーB機側に公開鍵(public key)を覚えさせる。

$ ssh-copy-id -i ~/.ssh/id_rsa.pub user@192.168.12.10:
usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/user/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
user@192.168.12.10's password:

サーバーB機の「ip address」=192.168.12.20のパスワードを入力し、

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'user@192.168.12.20'"
and check to make sure that only the key(s) you wanted were added.

と表示されれば成功です。

確認のために、サーバーB側へ移動後に、id_rsa.pubをauthorized_keys へコピーします。これはid_rsa.pubは生成ファイルですが、authorized_keysが後々、多くのキーを格納するファイルだからです。

authorized_keysの中身は以下のように複数のkeysが統合されています。

ssh-rsa XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX user@192.168.12.20
ssh-rsa XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX user@192.168.12.10

以下のように行っても大丈夫です。

これによりクライアント機からパスワードなしでサーバー機にアクセスできるようになります。

サーバーBからサーバ-AへのSSH暗号化通信接続

上記の手続きをサーバーBからサーバーAへも暗号化キーを送りすれば2拠点間をパスワードなしで自由に行き来が出来ます。

そして、このキー交換のメリットとして

(1) SSH接続ユーザー名・パスワードがなくてもサーバー間の移動できる。

例えば、IPアドレス「192.168.12.10」のサーバーから

$ssh 192.168.12.20

とコマンド入力するだけでユーザー名とパスワードを省いてログイン・ログアウトが自由に出来てしまいます。

(2) SFTP接続ユーザー名・パスワードがなくてもファイルの移動できる。

といったメリットモあります。

サーバーとWindowsもしくはMacでのSSH接続

今まではLinux サーバー間のSSH接続に限って説明してきましたが、LinuxサーバーとWindowsクライアント間でもSSH接続が可能です。この件の詳細は以下の記事をご参照下さい。

まとめ

本記事のポイント

これら一連の動作をまとめると以下のようになります。

関連リンク

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次