セキュアなファイル転送の基本

LinuxLinuxIntermediate
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Linux コマンド ラインを使って SFTP、FTP、および SCP を使ってファイルを転送する基本方法について説明します。これらのツールは、リモート サーバーとの間でファイルを転送するために一般的に使用されており、サーバーにウェブサイト ファイルをアップロードしたり、リモート マシンからデータをダウンロードしたりするタスクに役立ちます。

我々は、実験環境で SFTP および FTP サーバーを構成しました。実際に使用する際には、リモート サーバーにアクセスするための必要な資格情報 (ユーザー名とパスワードなど) があり、サーバーが SFTP、FTP、および SCP を介したファイル転送を許可するように構成されていることを確認してください。

達成目標

  • sftp - セキュア ファイル転送プロトコル
  • ftp - ファイル転送プロトコル
  • scp - セキュア コピー

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/InputandOutputRedirectionGroup(["Input and Output Redirection"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/RemoteAccessandNetworkingGroup(["Remote Access and Networking"]) linux/BasicSystemCommandsGroup -.-> linux/exit("Shell Exiting") linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") linux/InputandOutputRedirectionGroup -.-> linux/redirect("I/O Redirecting") linux/SystemInformationandMonitoringGroup -.-> linux/service("Service Managing") linux/UserandGroupManagementGroup -.-> linux/sudo("Privilege Granting") linux/RemoteAccessandNetworkingGroup -.-> linux/ssh("Secure Connecting") linux/RemoteAccessandNetworkingGroup -.-> linux/scp("Secure Copying") linux/RemoteAccessandNetworkingGroup -.-> linux/sftp("Secure File Transferring") linux/RemoteAccessandNetworkingGroup -.-> linux/ftp("File Transferring") subgraph Lab Skills linux/exit -.-> lab-40{{"セキュアなファイル転送の基本"}} linux/grep -.-> lab-40{{"セキュアなファイル転送の基本"}} linux/redirect -.-> lab-40{{"セキュアなファイル転送の基本"}} linux/service -.-> lab-40{{"セキュアなファイル転送の基本"}} linux/sudo -.-> lab-40{{"セキュアなファイル転送の基本"}} linux/ssh -.-> lab-40{{"セキュアなファイル転送の基本"}} linux/scp -.-> lab-40{{"セキュアなファイル転送の基本"}} linux/sftp -.-> lab-40{{"セキュアなファイル転送の基本"}} linux/ftp -.-> lab-40{{"セキュアなファイル転送の基本"}} end

SFTP を使ってリモート サーバーに接続する

SFTP (Secure File Transfer Protocol) は、ローカル マシンとリモート サーバーの間でファイルを転送するためのセキュアな方法です。

SFTP を使ってリモート サーバーに接続するには、sftp コマンドの後にユーザー名とサーバーの IP アドレスまたはホスト名を入力します。たとえば:

sftpuser のパスワードは 123456 です。

sftp [email protected]
## サーバーの指紋を承認するには yes と入力します

ユーザーのパスワードの入力を求められます。正しいパスワードを入力すると、リモート サーバーに接続されます。

SFTP でファイルを転送する

リモートサーバーに接続したら、put コマンドと get コマンドを使用してファイルを転送できます。

ローカルマシンからリモートサーバーにファイルをアップロードするには、put コマンドの後にローカルファイルのパスを指定します。例:

put /home/labex/.zshrc

リモートサーバーからローカルマシンにファイルをダウンロードするには、get コマンドの後にリモートファイルのパスを指定します。例:

get .zshrc

ファイルの転送が完了したら、exit コマンドを使用して SFTP 接続を閉じることができます。

exit

「Continue」ボタンをクリックする前に、必ず SFTP 接続を閉じてください。

FTP を使ってリモート サーバーに接続する

FTP (File Transfer Protocol) は、ローカル マシンとリモート サーバーの間でファイルを転送するために使用される標準的なネットワーク プロトコルです。平文でデータを送信するため、SFTP よりもセキュリティが低いです。

次のコマンドを実行することで、FTP サービスの状態を確認できます。

sudo service vsftpd status

FTP サービスが実行されていない場合は、次のコマンドを実行して起動できます。

sudo service vsftpd start

FTP を使ってリモート サーバーに接続するには、ftp コマンドの後にサーバーの IP アドレスまたはホスト名を入力します。たとえば:

ftp のユーザー名は ftpuser、パスワードは 123456 です

ftp 127.0.0.1

サーバーのユーザー名とパスワードの入力を求められます。正しい資格情報を入力すると、リモート サーバーに接続されます。

FTP でファイルを転送する

リモートサーバーに接続したら、put コマンドと get コマンドを使用してファイルを転送できます。

ローカルマシンからリモートサーバーにファイルをアップロードするには、put コマンドの後にローカルファイルのパスを指定します。例:

## .zshrc ファイルをサーバーにアップロードし、zshrc-upload に名前を変更します
put /home/labex/.zshrc zshrc-upload

ファイルは、サーバーの現在のディレクトリ(/home/ftpuser)にアップロードされます。

リモートサーバーからローカルマシンにファイルをダウンロードするには、get コマンドの後にリモートファイルのパスを指定します。例:

get zshrc-upload

ファイルは、ローカルマシンの現在のディレクトリにダウンロードされます。

FTP シェルで help コマンドを実行すると、FTP コマンドの詳細が表示されます。

ファイルの転送が完了したら、bye コマンドまたは exit コマンドを使用して FTP 接続を閉じることができます。

bye

「Continue」ボタンをクリックする前に、必ず FTP 接続を閉じてください。

リモート サーバーにファイルをコピーする

SCP (Secure Copy) は、コマンド ライン ユーティリティで、ローカル マシンとリモート サーバーの間、または 2 つのリモート サーバーの間でファイルを安全に転送できます。転送中のデータを暗号化するために SSH (Secure Shell) を使用し、ファイルが安全に転送されることを確保します。

scp コマンドの基本構文は次のとおりです。

scp [オプション] [ソース] [宛先]

ソース宛先 の引数は、ローカル ファイルまたはディレクトリ、または username@host:path 形式のリモート ファイルまたはディレクトリです。

たとえば、ローカル マシンから IP アドレス 127.0.0.1 のリモート サーバーに file.txt ファイルをコピーするには、次のコマンドを使用します。

labex ユーザーのパスワードを取得するには、デスクトップ ターミナルで printenv | grep PASSWORD と入力します。

SCP コマンドの例
cd ~/project

## labex ユーザーのパスワードを表示する
printenv | grep PASSWORD

## ファイルをリモート サーバーにコピーする
scp file.txt [email protected]:/home/labex/file-scp.txt

## labex ユーザーのパスワードを入力する

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

リモート サーバーからファイルをダウンロードする際にも、scp を使用できます。

たとえば、IP アドレス 127.0.0.1 のリモート サーバーから file.txt ファイルをローカルにダウンロードするには、次のコマンドを使用します。

scp [email protected]:/home/labex/file-scp.txt /home/labex/file-scp-new.txt

また、ローカル ディレクトリを宛先として設定することもできます。この場合、パスに末尾のスラッシュ (/) を含めることを確認してください。

SCP の高度なオプション

scp には、ファイル転送をカスタマイズするために使用できるいくつかの高度なオプションもあります。最も一般的に使用されるオプションのいくつかを以下に示します。

  • -r - このオプションを使用すると、ディレクトリ全体を再帰的にコピーできます。
  • -C - このオプションを使用すると、ファイル転送中に圧縮が有効になります。低速な接続で大きなファイルを転送する際に便利です。
  • -P - このオプションを使用すると、接続に使用するポート番号を指定できます。

たとえば、圧縮を使用してポート番号を指定しながら、ローカル マシンの ~/Desktop ディレクトリを IP アドレス 127.0.0.1 のリモート サーバーにコピーするには、次のコマンドを使用します。

scp -r -C -P 22 ~/Desktop [email protected]:/home/labex/Code/

まとめ

この実験では、Linux の SFTP、FTP、および SCP コマンドを紹介しました。これらのコマンドは、ローカル マシンとリモート サーバーの間、または 2 つのリモート サーバーの間でファイルを転送するために使用されます。SFTP はファイルを転送する安全な方法であり、一方で FTP は SFTP よりもセキュリティが低い標準的なネットワーク プロトコルです。SCP は、コマンド ライン ユーティリティで、転送中のデータを暗号化するために SSH (Secure Shell) を使用して、ローカル マシンとリモート サーバーの間、または 2 つのリモート サーバーの間でファイルを安全に転送できます。また、SCP コマンドに利用可能ないくつかの高度なオプションについても説明しました。これらのオプションは、-r-C-P オプションなど、ファイル転送をカスタマイズするために使用できます。