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

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

Rsync Files Over SSH Non-standard Port

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

ご存知のように、rsync、またはRemote Syncとしても知られているrsyncは、ローカルからローカル、またはローカルからリモートホストにファイル/ディレクトリをコピーおよび同期するために使用できる高速で多機能かつ強力なツールです。rsyncの詳細については、manページを参照してください:

# man rsync

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

  1. Rsync: LinuxでのRsyncコマンドの実用例10選

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

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

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

# vi /etc/ssh/sshd_config 

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

次のテキストを日本語に翻訳します。翻訳結果のみを返します。独自の番号を使用してください。このnetstat articleをチェックして、どのサービスがどのTCP/UDPポートで実行されているかを知ることができます。

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

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

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

RPMベースのシステム(たとえばRHELCentOSScientific Linux 7)では、新しいポートをファイアウォールやルーターを介して許可する必要があります。

# 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 -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 protected]:/backup1 /home/sk/backup2
サンプル出力
[email protected]'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を制限するファイアウォールの背後にいる場合も心配はいりません。デフォルトのポートを変更して、プロのようにファイルを同期できます。

Source:
https://www.tecmint.com/sync-files-using-rsync-with-non-standard-ssh-port/