最近、rsync
を見ました 場所間でファイルを同期するためのコマンド。cp
を使用してファイルとディレクトリを複製する際の使用法と構文の類似性について説明しました。 指図。その記事では、同じボックス上、ファイルシステム間、またはデバイス間でビットを前後に移動する方法について説明しました。今後の記事では、rsync
について詳しく説明します。 リモートファイルシステムをローカルバージョンまたはバックアップバージョンと同期させるためのツールとして。この記事では、Linuxsysadminツールボックスで最も便利で使用されているツールの1つであるscp
を見ていきたいと思います。 コマンド。
SCPとは何ですか?
セキュアコピー、またはscp
、は古いrcp
の安全なバージョンです OpenSSHツールスイートに含まれているツール(現在も使用されていますが、あまり一般的ではありません)。
OpenSSHは、元のSSHセキュア通信プロトコルのBSDフォークとして開始されましたが、その後「非フリー」として再ライセンスされたため、Linuxでは一般的に利用できません。 OpenSSHは引き続きBSDライセンスの下で維持されており、幅広いプラットフォームで利用できます。キー生成、scp
など、安全なリモートアクセスのためのいくつかの一般的なツールが含まれています 、およびsftp
(FTPの安全なバージョン。これについては後で説明します。)
最近、OpenSSH開発者は、scp
を検討していることを示しています。 非推奨になります(「時代遅れで、柔軟性がなく、簡単に修正できない」と彼らは信じています)。 OpenSSHの将来のリリースでいつ利用できなくなるかは不明ですが、すぐに廃止されるとは想像しがたいです。
SCPを使用する
scp
の有用性 そのシンプルさにあります。シェルからリモートファイルシステムにファイルをすばやく移動するために使用します:
skipworthy ~ scp ./enable/foo/testfoo showme:/home/skipworthy/enable
skipworthy@showme's password:
testfoo 100% 25 8.0KB/s 00:00
やさしい。離れた場所からもファイルを入手できます:
skipworthy ~ scp showme:/home/skipworthy/enable/demofoo ~/enable/
skipworthy@showme's password:
demofoo 100% 0 0.0KB/s 00:00
skipworthy ~ ls ./enable
bar demofoo foo
使用可能な接続オプションは、ssh
の場合と同じです。 。例:
skipworthy ~ scp -P 2020 -i ~/.ssh/id_rsa ./test.txt showme:/home/skipworthy/enable/
test.txt 100% 0 0.0KB/s 00:00
-P
ssh
のポートを指定します 接続、-i
ssh
を指定します 認証に使用するidキー:これらのオプションは両方ともスクリプトに役立ちます。 scp -P
に注意してください ssh -p
とは異なります ポートを指定します。上記の例では、ssh
の場所を設定しました キー(~/.ssh/id_rsa
)—これもOpenSSHツールキットを使用して生成しました—リモートデバイスへのアクセスを認証します。 SSHファイルのコピーについてはこちらをご覧ください。
したがって、scp
を見ることができます あなたの指先で持っている本当に便利なツールです。安全な環境でこのツールを使用することの知恵についての議論がいくつかあるので、YMMV。読んで自分で決めることをお勧めします。
[次のこともお勧めします:システム管理者ツール:rsyncを使用してバックアップ、復元、ファイル同期を管理する]
代替案
なんらかの理由でscp
を使用できない場合はどうなりますか ?非常に使いやすい他の2つのオプションをお勧めします:rsync
、ここで説明しましたが、別の記事でさらに詳しく説明します。sftp
。これらのオプションはどちらもscp
ほど便利ではありませんが 、どちらにもいくつかの便利な機能があります。
sftp
ほぼそのように聞こえます:セキュアFTP。 SSH管理の接続を介したFTPのように機能します。 「1つで完了」のscp
ほど簡単に使用することはできませんが コマンドを使用すると、より高度なファイルシステムオプションの範囲と、リモートファイルシステムにインタラクティブに接続する機能が提供されます。ターゲットファイルシステムがsftp
用に構成されている必要があります アクセス。
sftp
に接続しましょう サーバーをインタラクティブに:
skipworthy ~ sftp enable@ganymede
enable@ganymede's password:
Connected to ganymede.
sftp> pwd
Remote working directory: /upload
sftp> mkdir test
sftp> ls -al
drwxr-xr-x 3 1002 1002 18 Nov 24 21:53 .
drwxr-xr-x 3 0 1002 20 Nov 24 21:33 ..
drwxr-xr-x 2 1002 1002 6 Nov 24 21:53 test
タブを押した場合 2回、シェルで使用可能なコマンドのリストを確認できます。
sftp>
bye cd chdir chgrp chmod chown df dir
exit get help lcd lchdir lls lmkdir ln
lpwd ls lumask mkdir mget mput progress put
pwd quit reget rename reput rm rmdir symlink
version ! ?
したがって、リモートファイルシステムと対話できることがわかります。繰り返しますが、主な欠点は、ターゲットをsftp
用に構成する必要があることです。 特定のディレクトリへのアクセスとアクセスは、そのシステムの管理者が構成および制限する必要があります。これにより、scp
よりも安全性が低くなりますが、便利ではありません。 。また、scp
のような即時のファイル転送を行うことは実際には不可能であることに注意してください。 、スクリプトを記述してシェルエイリアスを挿入することで、これがスムーズに機能するようにすることができます。
[セキュリティについて考えていますか?ハイブリッドクラウドのセキュリティを強化し、ビジネスを保護するためのこの無料ガイドをご覧ください。 ]
まとめ
最後の注意:これらのツールはどちらも、Linuxシステム管理の非常に重要な部分であるSSHツールボックスに依存しているため、慣れることを強くお勧めします。 Enable Sysadminライターによるこれらの優れた記事を検討してください:
- SSHが安全な通信を確立する方法
- システムでSSHアクセスを保護する8つの方法
- 公開鍵と秘密鍵のペアを使用したパスワードなしのSSH