
SFTP(SSHファイル転送プロトコル)は、暗号化されたSSHトランスポートを介してファイルにアクセス、管理、および転送するために使用される安全なファイルプロトコルです。
従来のFTPプロトコルと比較すると、SFTPはFTPのすべての機能を提供しますが、より安全で構成が簡単です。
ファイル転送のみをサポートするSCPとは異なり、SFTPを使用すると、リモートファイルに対してさまざまな操作を実行し、ファイル転送を再開できます。
このチュートリアルでは、Linuxのsftp
の使用方法を紹介します。 コマンド。
SFTP経由でファイルを転送できるようにするには、リモートシステムでの書き込み権限が必要です。
大きなファイルを転送する場合は、sftp
を実行することをお勧めします スクリーンまたはtmuxsession内のコマンド。
sftp
を実行するディレクトリ コマンドはローカルの作業ディレクトリです。
SFTP接続の確立#
SFTPは、クライアントサーバーモデルで機能します。これはSSHのサブシステムであり、すべてのSSH認証メカニズムをサポートしています。
リモートシステムへのSFTP接続を開くには、sftp
を使用します コマンドの後にリモートサーバーのユーザー名とIPアドレスまたはドメイン名を続けます:
sftp remote_username@server_ip_or_hostname
パスワード認証を使用してホストに接続している場合は、ユーザーパスワードの入力を求められます。
接続すると、sftp
が表示されます プロンプトが表示され、リモートサーバーとの対話を開始できます:
Connected to remote_username@server_ip_or_hostname.
sftp>
リモートSSHサーバーがデフォルトのポート22でリッスンしていない場合は、-P
を使用します SFTPポートを指定するオプション:
sftp -P custom_port remote_username@server_ip_or_hostname
SFTPコマンド#
ほとんどのSFTPコマンドは、Linuxシェルコマンドと類似または同一です。
使用可能なすべてのSFTPコマンドのリストを取得するには、help
と入力します 、または?
。
help
これにより、各コマンドの簡単な説明を含む、使用可能なすべてのコマンドの長いリストが出力されます。
Available commands:
bye Quit sftp
cd path Change remote directory to 'path'
...
...
version Show SFTP version
!command Execute 'command' in local shell
! Escape to local shell
? Synonym for help
SFTPでのナビゲーション#
リモートサーバーにログインすると、現在の作業ディレクトリはリモートユーザーのホームディレクトリになります。次のように入力して確認できます:
pwd
Remote working directory: /home/remote_username
ファイルとディレクトリを一覧表示するには、ls
を使用します コマンド:
ls
別のディレクトリに移動するには、cd
を使用します 指図。たとえば、/tmp
に切り替えるには 入力するディレクトリ:
cd /tmp
上記のコマンドは、リモートロケーションをナビゲートして操作するために使用されます。
SFTPシェルは、ローカルナビゲーション、情報、およびファイル管理のためのコマンドも提供します。ローカルコマンドの前には、文字l
が付いています。 。
たとえば、ローカルの作業ディレクトリを印刷するには、次のように入力します。
cd lpwd
Local working directory: /home/local_username
SFTPを使用したファイルの転送#
SFTPを使用すると、2台のマシン間でファイルを安全に転送できます。
デスクトップマシンで作業している場合は、WinSCPorFileZillaなどのGUISFTPクライアントを使用してリモートサーバーに接続し、ファイルをダウンロードまたはアップロードできます。
sftp
このコマンドは、GUIを使用せずにサーバーで作業していて、ファイルを転送したり、リモートファイルで他の操作を実行したりする場合に便利です。
SFTPコマンドを使用したファイルのダウンロード#
リモートサーバーから単一のファイルをダウンロードするには、get
を使用します コマンド:
get filename.zip
出力は次のようになります。
Fetching /home/remote_username/filename.zip to filename.zip
/home/remote_username/filename.zip 100% 24MB 1.8MB/s 00:13
sftp
でファイルをダウンロードする場合 、ファイルは、sftp
を入力したディレクトリにダウンロードされます。 コマンド。
ダウンロードしたファイルを別の名前で保存する場合は、2番目の引数として新しい名前を指定します。
get filename.zip local_filename.zip
リモートシステムからディレクトリをダウンロードするには、再帰的な-r
を使用します オプション:
get -r remote_directory
ファイル転送が失敗または中断された場合は、reget
を使用してファイル転送を再開できます。 コマンド。
reget
の構文 get
の構文と同じです :
reget filename.zip
SFTPコマンドを使用したファイルのアップロード#
ローカルマシンからリモートSFTPサーバーにファイルをアップロードするには、put
を使用します コマンド:
put filename.zip
出力は次のようになります。
Uploading filename.zip to /home/remote_username/filename.zip
filename.zip 100% 12MB 1.7MB/s 00:06
アップロードするファイルが現在の作業ディレクトリにない場合は、ファイルへの絶対パスを使用してください。
put
を使用する場合 get
で使用できるのと同じオプションを使用できます コマンド。
ローカルディレクトリをアップロードするには、次のように入力します。
put -r locale_directory
中断されたアップロードを再開するには:
reput filename.zip
SFTPを使用したファイル操作#
通常、リモートサーバーでタスクを実行するには、SSH経由でサーバーに接続し、シェルターミナルを使用して作業を行います。ただし、状況によっては、ユーザーがリモートサーバーにアクセスできるのはSFTPのみである場合があります。
SFTPを使用すると、いくつかの基本的なファイル操作コマンドを実行できます。以下は、SFTPシェルの使用方法の例です。
-
リモートシステムのディスク使用量に関する情報を取得します:
df
Size Used Avail (root) %Capacity 20616252 1548776 18002580 19067476 7%
-
リモートサーバーに新しいディレクトリを作成します:
mkdir directory_name
-
リモートサーバー上のファイルの名前を変更します:
rename file_name new_file_name
-
リモートサーバー上のファイルを削除します:
rm file_name
-
リモートサーバー上のディレクトリを削除します:
rmdir directory_name
-
リモートシステム上のファイルの権限を変更します:
chmod 644 file_name
-
リモートシステム上のファイルの所有者を変更します:
chown user_id file_name
chown
にユーザーIDを指定する必要があります およびchgrp
コマンド。 -
リモートファイルのグループ所有者を次のように変更します:
chgrp group_id file_name
作業が終了したら、bye
と入力して接続を閉じます またはquit
。
結論#
このチュートリアルでは、sftp
の使用方法を説明しました。 リモートSFTPサーバーにファイルをダウンロードしてアップロードするコマンド。
SSHキーベースの認証を設定し、パスワードを入力せずにLinuxサーバーに接続することもできます。同じシステムに定期的に接続している場合は、SSH構成ファイルですべての接続を定義することでワークフローを簡素化できます。
ご不明な点やご意見がございましたら、お気軽にコメントをお寄せください。