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

そのため、SSHのデフォルトポート番号を推測が非常に難しい異なる番号に変更することが義務付けられています。そのような場合、どのようにしてファイル/フォルダをリモートサーバーと同期させるのでしょうか?心配しないでください。それほど難しいことではありません。ここでは、非標準のSSHポートを使用してrsyncを使用してファイルとフォルダを同期する方法を見ていきます。
ご存知のように、rsync、またはRemote Syncとしても知られているrsyncは、ローカルからローカル、またはローカルからリモートホストにファイル/ディレクトリをコピーおよび同期するために使用できる高速で多機能かつ強力なツールです。rsyncの詳細については、manページを参照してください:
# man rsync
または以下のリンクから以前のガイドを参照してください。
SSHポートを非標準ポートに変更
皆さんご存知のように、デフォルトではrsyncはローカルからリモートホスト、およびその逆にファイルを同期するためにデフォルトのSSHポート22を使用します。リモートサーバーのSSHポートを変更してセキュリティを強化する必要があります。
これを行うには、SSH構成ファイル/etc/ssh/sshd_configを開いて編集します:
# vi /etc/ssh/sshd_config
次の行を見つけてコメントを外し、お好みのポート番号を変更します。推測が非常に難しい番号を選択することをお勧めします。
次のテキストを日本語に翻訳します。翻訳結果のみを返します。独自の番号を使用してください。このnetstat articleをチェックして、どのサービスがどのTCP/UDPポートで実行されているかを知ることができます。
たとえば、ここではポート番号1431を使用しています。
[...] Port 1431 [...]
ファイルを保存して閉じます。
RPMベースのシステム(たとえばRHEL、CentOS、Scientific 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/