ウェブサイト検索

Linuxでsftpを使用してファイルを安全に転送する方法


リモートサーバーへのファイルの送受信をしたいですか?Linuxでsftpコマンドを使用して、インターネット上でデータを安全に転送してください。

このガイドでは、ネットワークを介して2つのLinuxコンピュータ間でファイルを安全に転送するためのコマンドラインプログラムであるsftp(SSHファイル転送プロトコル)の使用方法を探ります。

SFTPとは何ですか?

SFTPを定義する前に、一歩引いてSFTPの前身であるFTP(ファイル転送プロトコル)を理解することが重要です。

FTPは、ネットワーク上の2つのコンピュータ、通常はサーバーとクライアントの間でファイルを転送するために使用されるネットワーク通信プロトコルです。

SFTPは、FTPのより安全なバージョンです。これは、SSH(Secure Shell)プロトコルを利用して、2台のコンピュータ間で交換されるデータを暗号化することで安全性を維持します。一方、FTPはネットワーク上でデータを平文で送信します。

SFTPは、GDPRやCCPAなどの特定のコンプライアンス規制を満たすためにも、あなたとあなたの組織を支援することができます。これらの規制では、機密データを可能な限り安全な方法で転送することが求められています。

リモートPCにアクセスする

Linuxは主にsftpプログラムを使用してSFTPでファイルを転送することを許可します。Sftpは、SSHを介してファイルを安全かつインタラクティブに転送するための堅牢なコマンドラインソフトウェアです。

次のコマンドを使用して、sftpを介してリモートサーバーに接続できます。プレースホルダーの「username」と「ip-address-of-remote-pc」を正しいユーザー名とサーバーのIPアドレスに置き換えることを忘れないでください。

sftp username@ip-address-of-remote-pc

プロンプトが表示されたら、サーバーのパスワードを入力してください。ターミナルが接続完了のステータスであなたを迎えれば、それは接続が成功したことを意味します。点滅しているカーソルは、sftpがインタラクティブモードであることを示しています。

注意: リモートサーバーと対話する必要がない場合は、次のコマンドを実行することで、ローカルでsftpを試すことができます。

sftp 127.0.0.1

インタラクティブSFTPコマンド

インタラクティブモードに入ると、リモートPCとやり取りするためにいくつかのコマンドを使用できます。最も重要なコマンドのいくつかは以下に示されています。ほとんどのLinuxコマンドとは異なり、sftpコマンドは大文字と小文字を区別しないことに注意してください。

リモートサーバー上のファイルの一覧表示

最も重要なタスクの一つは、ディレクトリ内のファイルをリストアップして、転送したいものの概要を把握することです。また、リモートPCのファイルやフォルダーの情報、保存されたファイルのサイズやアクセス権も取得できます。

リモートPC上のファイルをリストするには、次のコマンドを使用できます。

ls

ls コマンドのほとんどのフラグ、例えば -a や -l などを使用することができ、問題なく動作します。

ローカルの作業用PC上のファイルをリストするには、以下のコマンドを使用できます。

lls

現在の作業ディレクトリをリストする

リモートPC上で現在の作業ディレクトリのパスを pwd を使って出力することもできます。 pwdコマンドはカレントワーキングディレクトリを意味します。

pwd

ローカルPC上で現在の作業ディレクトリをリストするには:

lpwd

インタラクティブターミナルの出力をクリアするには、 Ctrl + L キーボードショートカットを使用してください。

サーバーへのファイルアップロード

ローカルPCからリモートサーバーにファイルを転送するには、putコマンドを使用してください。例えば、ホームフォルダからLinux ManjaroのISOイメージを転送するには、以下のコマンドを使用します。-Rフラグを使うと、ディレクトリを再帰的にコピーできます。

put manjaro-xfce-21.0.7-minimal-210614-linux54.iso

出力は、以下に示されるものに似ています。Sftpはファイル転送の進行状況をリアルタイムで表示します。

また、リモートサーバーへのファイルパスが指定されていないため、sftpはファイルをローカルPCと同様のパスに配置します。

複数のファイルをコピーしたい場合は、代わりにmputコマンドを使用してください。たとえば、ディレクトリ内のすべてのExcelスプレッドシート(XLS)ファイルをコピーするには:

mput *.xls

サーバーへのファイル転送を中断または停止するには、キーボードショートカットCtrl + Cを使用できます。

サーバーからファイルをダウンロードする

サーバーからローカルPCにファイルをダウンロードするには、getコマンドを使用します。たとえば、サーバーからindex.htmlという名前のHTMLファイルをコピーするには、次のコマンドを実行してください:

get index.html

サーバーから複数のファイルを取得するには、mget コマンドを使用します。たとえば、サーバーのカレント作業ディレクトリからすべてのHTMLファイルをローカルシステムにコピーするには:

mget *.html

ファイルの権限を変更する

インタラクティブターミナル内でchmodコマンドを使用して、リモートサーバー上のファイルのアクセス許可を変更することもできます。たとえば、index.htmlファイルにすべてのアクセス許可を付与するには、次のコマンドを実行します:

chmod 777 index.html

sftpセッションを終了する

sftpインタラクティブターミナルを終了するには、単にbyeコマンドを入力するだけです。あるいは、exitまたはquitコマンドも使用できます。

コマンドラインヘルプを取得する

コマンドを暗記する代わりに、必要な時にコマンドラインからヘルプを得る方法を学ぶことが最善です。

Sftpは良いドキュメントが付属しています。インタラクティブなターミナルウィンドウ内で、以下のいずれかのコマンドを入力するだけでヘルプを得ることができます。

help?

SFTPの実用的な応用

このガイドでは、sftpコマンドを使用して、Linuxコンピューター間でデータを安全かつインタラクティブに転送する方法を示しました。もしあなたがRaspberry Piユーザーであれば、Raspberry PiからPCにデータを転送するさまざまな方法についても知りたいかもしれません。

関連記事: