ウェブサイト検索

非標準の SSH ポートで Rsync を使用してファイル/ディレクトリを同期する方法


今日は、非標準の SSH ポートで rsync を使用してファイルを同期する方法について説明します。なぜ標準以外の SSH ポートを使用する必要があるのか疑問に思われるかもしれません。それはセキュリティ上の理由によるものです。 22 が SSH のデフォルト ポートであることは誰もが知っています。

したがって、SSH のデフォルトのポート番号を、推測が非常に難しい別の番号に変更することが必須です。このような場合、ファイル/フォルダーをリモート サーバーとどのように同期しますか?心配しないでください、それはそれほど難しいことではありません。ここでは、非標準の SSH ポートで rsync を使用してファイルとフォルダーを同期する方法を見ていきます。

ご存知かもしれませんが、リモート同期とも呼ばれるrsyncは、ファイル/ディレクトリをローカルからローカルにコピーおよび同期するために使用できる、高速かつ多用途かつ強力なツールです。ローカル、またはローカルからリモートホストへ。 rsync の詳細については、マニュアル ページを確認してください。

man rsync

または、以下のリンクから以前のガイドを参照してください。

  1. Rsync: Linux における Rsync コマンドの 10 の実践例

SSHポートを非標準ポートに変更する

ご存知のとおり、デフォルトでは、rsync はデフォルトの SSH ポート22を使用して、ローカル経由でリモート ホストに、またはその逆にファイルを同期します。セキュリティを強化するには、リモート サーバーの SSH ポートを変更する必要があります。

これを行うには、SSH 構成 /etc/ssh/sshd_config ファイルを開いて編集します。

vi /etc/ssh/sshd_config 

次の行を見つけます。コメントを解除して、選択したポート番号を変更します。推測が非常に難しい番号を選択することをお勧めします。

既存のサービスで使用されていない一意の番号を使用していることを確認してください。どのサービスがどの TCP/UDP ポートで実行されているかを知るには、この netstat の記事を確認してください。

たとえば、ここではポート番号 1431 を使用します。

[...]
Port 1431
[...]

ファイルを保存して閉じます。

RHELCentOSScientific Linux 7 などの RPM ベースのシステムでは、新しいポートがファイアウォールまたはルーターを通過できるようにする必要があります。

firewall-cmd --add-port 1431/tcp
firewall-cmd --add-port 1431/tcp --permanent

RHEL/CentOS/Scientific Linux 6 以降では、 ポートを許可するようにselinux 権限も更新する必要があります。

iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1431 -j ACCEPT
semanage port -a -t ssh_port_t -p tcp 1431

最後に、SSH サービスを再起動して変更を有効にします。

systemctl restart sshd        [On SystemD]
OR
service sshd restart          [On SysVinit]

次に、非標準ポートで rsync を使用してファイルを同期する方法を見てみましょう。

非標準の SSH ポートで Rsync する方法

ターミナルから次のコマンドを実行して、非標準の SSH ポートで Rsync を使用してファイル/フォルダーを同期します。

構文:
rsync -arvz -e 'ssh -p <port-number>' --progress --delete user@remote-server:/path/to/remote/folder /path/to/local/folder

このチュートリアルでは、2 つのシステムを使用します。

リモート システムの詳細:

IP Address: 192.168.1.103
User name: tecmint
Sync folder: /backup1

ローカル システムの詳細:

Operating System: Ubuntu 14.04 Desktop
IP Address: 192.168.1.100
Sync folder: /home/sk/backup2

リモート サーバーの /backup1 フォルダーの内容をローカル システムのフォルダー /home/sk/backup2/ に同期してみましょう。

sudo rsync -arvz -e 'ssh -p 1431' --progress --delete [email :/backup1 /home/sk/backup2
サンプル出力
[email 's password: 
receiving incremental file list
backup1/
backup1/linux-headers-4.3.0-040300-generic_4.3.0-040300.201511020949_amd64.deb
        752,876 100%   13.30MB/s    0:00:00 (xfr#1, to-chk=2/4)
backup1/linux-headers-4.3.0-040300_4.3.0-040300.201511020949_all.deb
      9,676,510 100%   12.50MB/s    0:00:00 (xfr#2, to-chk=1/4)
backup1/linux-image-4.3.0-040300-generic_4.3.0-040300.201511020949_amd64.deb
     56,563,302 100%   11.26MB/s    0:00:04 (xfr#3, to-chk=0/4)

sent 85 bytes  received 66,979,455 bytes  7,050,477.89 bytes/sec
total size is 66,992,688  speedup is 1.00.

リモートサーバーの /backup1/ フォルダーの内容を確認してみましょう。

sudo ls -l /backup1/
サンプル出力
total 65428
-rw-r--r-- 1 root root  9676510 Dec  9 13:44 linux-headers-4.3.0-040300_4.3.0-040300.201511020949_all.deb
-rw-r--r-- 1 root root   752876 Dec  9 13:44 linux-headers-4.3.0-040300-generic_4.3.0-040300.201511020949_amd64.deb
-rw-r--r-- 1 root root 56563302 Dec  9 13:44 linux-image-4.3.0-040300-generic_4.3.0-040300.201511020949_amd64.deb

ここで、ローカル システムの /backup2/ フォルダーの内容を確認してみましょう。

ls /home/sk/backup2/
サンプル出力
backup1

上記の出力に見られるように、/backup1/ の内容はローカル システムの /home/sk/backup2/ ディレクトリに正常にコピーされました。

/backup1/ フォルダーの内容を確認します。

ls /home/sk/backup2/backup1/
サンプル出力
linux-headers-4.3.0-040300_4.3.0-040300.201511020949_all.deb            
linux-image-4.3.0-040300-generic_4.3.0-040300.201511020949_amd64.deb
linux-headers-4.3.0-040300-generic_4.3.0-040300.201511020949_amd64.deb

リモート システムとローカル システムの両方のフォルダーに同じファイルがあることがわかります。

結論

Rsync と SSH を使用してファイル/フォルダーを同期するのは簡単なだけでなく、高速かつ安全な方法です。ポート 22 を制限するファイアウォールの内側にいる場合でも、心配する必要はありません。デフォルトのポートを変更するだけで、プロのようにファイルを同期できます。