ホーム テクノロジー LINUX 15 Linux での SFTP コマンドの例

15 Linux での SFTP コマンドの例

SFTP (Secure File Transfer Protocol) は、ファイル転送プロトコル (FTP) に基づく安全なリモート ファイル転送ユーティリティです。

FTP トラフィックは暗号化されておらず安全ではないため、ほとんどが SFTP に置き換えられています。

SFTP は、デフォルトで TCP ポート 22 上の SSH プロトコル上で実行され、SSH と同じ一連のセキュリティおよび暗号化機能を提供します。 Linux システム上で OpenSSH サーバーの一部として実行されるデフォルトの SSH デーモンは、デフォルトで SFTP プロトコルの基本機能をサポートしますが、追加機能やカスタマイズを取得するように構成できる vsftpd などの個別の専用ソフトウェアが利用可能です。

この記事では、コマンド ラインからの SFTP の使用法について説明します。ここでは Ubuntu システムを使用しますが、ここにリストされているコマンドは sftp クライアントを備えたどの Linux システムでも動作します。

コマンドに入る前に、 SCP が非推奨になりつつあること を知っておく必要があり、その代替手段として SFTP コマンドについてよく理解しておくことをお勧めします。 SCP で行うこととほぼすべてのことを SFTP で行うことができます。

15 Linux での SFTP コマンドの例
15 Linux での SFTP コマンドの例

ファイルのコピー

SFTP は、サポートされている一部のユースケースで SCP (Secure Copy) コマンドの代わりとして使用できます。そのようなケースの 1 つは 、SCP を使用してリモート サーバーからファイルを一度にプッシュまたはプルする場合です。

SCP コマンドを使用して アップロードする ための構文は次のようになります。

 $ scp {local-path} {user}@{remote-host}:{remote-path}

そして、次のように ダウンロードする 場合:

 $ scp {user}@{remote-host}:{remote-file-path} {local-path}

同様に、次の sftp コマンド構文を使用してファイルをリモート サーバーにアップロードできます。

 $ sftp {user}@{host}:{remote-path} <<< $'put {local-path}'

以下は、ワンライナーとして sftp を使用したファイルのアップロードを 示す 1 つのデモです。

 $ sftp ftpuser@192.168.1.231:/home/ftpuser/remote_test_dir <<< $'put /home/abhisheknair/new_file'
ftpuser@192.168.1.231's password:
Connected to 192.168.1.231.
Changing to: /home/ftpuser/remote_test_dir
sftp> put /home/abhisheknair/new_file
Uploading /home/abhisheknair/new_file to /home/ftpuser/remote_test_dir/new_file
/home/abhisheknair/new_file                                                           100%    9     7.2KB/s   00:00
$

リモート サーバーからファイル をダウンロードする には、次のコマンド構文を使用します。

 $ sftp {user}@{remote-host}:{remote-file-name} {local-file-name}

以下は、sftp を使用してファイルを 1 行でダウンロードするデモです。

 $ sftp ftpuser@192.168.1.231:/home/ftpuser/new_file1 /home/abhisheknair/new_local_dir
ftpuser@192.168.1.231's password:
Connected to 192.168.1.231.
Fetching /home/ftpuser/new_file1 to /home/abhisheknair/new_local_dir/new_file1
/home/ftpuser/new_file1                                                               100%   12     3.6KB/s   00:00
$

パスワードなしの認証用に SSH キーを交換することもできます。

15 Linux での SFTP コマンドの例
15 Linux での SFTP コマンドの例

SFTPサーバーへの接続

SFTP 接続を開始するには、ユーザー名とリモート ホストの名前または IP を指定して sftp コマンドを使用します。これが機能するには、デフォルトの TCP ポート 22 が開いている必要があります。そうでない場合は、 -oPort フラグを使用してポートを明示的に指定します。

IP 192.168.1.231 の SFTP サーバーに接続しています。初めて SFTP サーバーに接続するときは、SSH と同様にサーバーのフィンガープリントを確認するように求められます。 「 yes 」と入力して確認すると、接続が続行され、ユーザーのパスワードの入力を求められます。

接続に成功すると、 sftp> プロンプトが表示されます。

 $ sftp ftpuser@192.168.1.231
The authenticity of host '192.168.1.231 (192.168.1.231)' can't be established.
ECDSA key fingerprint is SHA256:k90E28Pfnjoiq1svFw18dA2mazweoCmR5Hqi8SH0mj0.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.1.231' (ECDSA) to the list of known hosts.
ftpuser@192.168.1.231's password:
Connected to 192.168.1.231.
sftp>
15 Linux での SFTP コマンドの例
15 Linux での SFTP コマンドの例

バージョンの確認

SFTP のバージョンは、 sftp プロンプトで version コマンドを使用して確認できます。

 sftp> version
SFTP protocol version 3
sftp>
15 Linux での SFTP コマンドの例
15 Linux での SFTP コマンドの例

助けを求める

SFTP で使用可能なコマンドと構文に関するヘルプを表示するには、「 ?」 を使用します。 ‘ または ‘ ヘルプ ‘。

 sftp> ?
Available commands:
bye Quit sftp
cd path Change remote directory to 'path'
chgrp [-h] grp path Change group of file 'path' to 'grp'
chmod [-h] mode path Change permissions of file 'path' to 'mode'
chown [-h] own path Change owner of file 'path' to 'own'
df [-hi] [path] Display statistics for current directory or
filesystem containing 'path'
exit Quit sftp
get [-afpR] remote [local] Download file
help Display this help text
lcd path Change local directory to 'path'
lls [ls-options [path]] Display local directory listing
lmkdir path Create local directory
ln [-s] oldpath newpath Link remote file (-s for symlink)
lpwd Print local working directory
ls [-1afhlnrSt] [path] Display remote directory listing
lumask umask Set local umask to 'umask'
mkdir path Create remote directory
progress Toggle display of progress meter
put [-afpR] local [remote] Upload file
pwd Display remote working directory
quit Quit sftp
reget [-fpR] remote [local] Resume download file
rename oldpath newpath Rename remote file
reput [-fpR] local [remote] Resume upload file
rm path Delete remote file
rmdir path Remove remote directory
symlink oldpath newpath Symlink remote file
version Show SFTP version
!command Execute 'command' in local shell
! Escape to local shell
? Synonym for help
sftp>
15 Linux での SFTP コマンドの例
15 Linux での SFTP コマンドの例

作業ディレクトリを表示

リモートサーバーに接続している場合、 pwd コマンドを使用してリモートシステムの現在の作業ディレクトリを表示できます。

 sftp> pwd
Remote working directory: /home/ftpuser
sftp>

ローカル システムの現在の作業ディレクトリを表示するには、 lpwd コマンドを使用します。

 sftp> lpwd
Local working directory: /home/abhisheknair
sftp>

ファイルをリストする

ls コマンドを使用して、リモート作業ディレクトリ内のファイルを一覧表示できます。

 sftp> ls
remote_file1     remote_file2     remote_file3     remote_test_dir
sftp>

ローカル作業ディレクトリ内のファイルを一覧表示するには、 lls コマンドを使用します。

 sftp> lls
bin  file1  file2  file3  lib  oci-scripts  sys_info.sh  test.tgz  testdir
sftp>

ディレクトリの切り替え

リモート作業ディレクトリの切り替えは cd コマンドを使用して行うことができます。以下の例を参照してください。

 sftp> pwd
Remote working directory: /home/ftpuser
sftp> ls
remote_file1     remote_file2     remote_file3     remote_test_dir
sftp> cd remote_test_dir
sftp> pwd
Remote working directory: /home/ftpuser/remote_test_dir
sftp>

ローカル作業ディレクトリを切り替えるには、 lcd コマンドを使用します。以下は、 lcd の使用法を示す簡単な例です。

 sftp> lpwd
Local working directory: /home/abhisheknair
sftp> lls
bin  file1  file2  file3  lib  oci-scripts  sys_info.sh  test.tgz  testdir
sftp> lcd testdir
sftp> lpwd
Local working directory: /home/abhisheknair/testdir
sftp>

ファイルをアップロードする

単一のファイルをアップロードするには、 put コマンドを使用します。 put コマンドを使用してローカル file1 を リモート作業ディレクトリにアップロードする方法を見てください。リモート作業ディレクトリの内容を出力する ls コマンドを使用して確認できます。

 sftp> pwd
Remote working directory: /home/ftpuser
sftp> lpwd
Local working directory: /home/abhisheknair
sftp> ls
remote_file1     remote_file2     remote_file3     remote_test_dir
sftp> lls
bin  file1  file2  file3  lib  oci-scripts  sys_info.sh  test.tgz  testdir
sftp> put file1
Uploading file1 to /home/ftpuser/file1
file1                                                                                                                                                                          100%    6     6.0KB/s   00:00
sftp> ls
file1            remote_file1     remote_file2     remote_file3     remote_test_dir
sftp>

複数のファイルを一度にアップロードするには、以下に示すように mput コマンドを使用します。正規表現パターン file[23] mput を使用します。これは基本的に file2 file3 をアップロードし、前のステップですでにアップロードされている file1 をスキップします。 mput では、任意のワイルドカードまたは正規表現を使用できます。

 sftp> pwd
Remote working directory: /home/ftpuser
sftp> lpwd
Local working directory: /home/abhisheknair
sftp> ls
file1            remote_file1     remote_file2     remote_file3     remote_test_dir
sftp> lls
bin  file1  file2  file3  lib  oci-scripts  sys_info.sh  test.tgz  testdir
sftp> mput file[23]
Uploading file2 to /home/ftpuser/file2
file2                                                                                                                                                                          100%    6     6.5KB/s   00:00
Uploading file3 to /home/ftpuser/file3
file3                                                                                                                                                                          100%    6     5.3KB/s   00:00
sftp> ls
file1            file2            file3            remote_file1     remote_file2     remote_file3     remote_test_dir
sftp>

ファイルをダウンロードする

SFTP を使用した単一ファイルは、 get コマンドを使用してダウンロードできます。以下は、sftp を使用して Remote_file4 をダウンロードした例です。

 sftp> pwd
Remote working directory: /home/ftpuser/remote_test_dir
sftp> lpwd
Local working directory: /home/abhisheknair/testdir
sftp> ls
remote_file4
sftp> lls
file4
sftp> get remote_file4
Fetching /home/ftpuser/remote_test_dir/remote_file4 to remote_file4
/home/ftpuser/remote_test_dir/remote_file4                                                                                                                                     100%   13     5.2KB/s   00:00
sftp> lls
file4  remote_file4
sftp>

複数のファイルをダウンロードするには、 <strong>mget</strong> コマンドを使用します。ここでは、リモート作業ディレクトリ内のパターン remote_file* に一致するすべてのファイルをローカル作業ディレクトリにダウンロードしています。最後に <strong>lls</strong> コマンドを使用して、ダウンロードしたファイルを確認します。

 sftp> pwd
Remote working directory: /home/ftpuser
sftp> lpwd
Local working directory: /home/abhisheknair/testdir
sftp> ls
remote_file1     remote_file2     remote_file3     remote_test_dir
sftp> lls
file4  remote_file4
sftp> mget remote_file*
Fetching /home/ftpuser/remote_file1 to remote_file1
/home/ftpuser/remote_file1                                                                                                                                                     100%   12     5.9KB/s   00:00
Fetching /home/ftpuser/remote_file2 to remote_file2
/home/ftpuser/remote_file2                                                                                                                                                     100%   13     5.8KB/s   00:00
Fetching /home/ftpuser/remote_file3 to remote_file3
/home/ftpuser/remote_file3                                                                                                                                                     100%   13     7.3KB/s   00:00
sftp> lls
file4  remote_file1  remote_file2  remote_file3  remote_file4
sftp>

ディレクトリの作成

mkdir コマンドを使用して、リモート サーバー上に新しいディレクトリを作成できます。

 sftp> pwd
Remote working directory: /home/ftpuser
sftp> ls
file1            file2            file3            remote_file1     remote_file2     remote_file3     remote_test_dir
sftp> mkdir new_dir
sftp> ls
file1            file2            file3            new_dir          remote_file1     remote_file2     remote_file3     remote_test_dir
sftp>

同様に、sftp プロンプトからローカル システムの現在の作業ディレクトリに新しいディレクトリを作成する場合は、 lmkdir コマンドを使用します。

 sftp> lpwd
Local working directory: /home/abhisheknair
sftp> lls
bin  file1  file2  file3  lib  oci-scripts  sys_info.sh  test.tgz  testdir
sftp> lmkdir new_local_dir
sftp> lls
bin  file1  file2  file3  lib  new_local_dir  oci-scripts  sys_info.sh  test.tgz  testdir
sftp>

ディレクトリの削除

空のリモート ディレクトリは、 rmdir コマンドを使用して削除できます。空でない場合はエラーが発生することに注意してください。

 sftp> pwd
Remote working directory: /home/ftpuser
sftp> ls
file1            file2            file3            new_dir          remote_file1     remote_file2     remote_file3     remote_test_dir
sftp> rmdir new_dir
sftp> ls
file1            file2            file3            remote_file1     remote_file2     remote_file3     remote_test_dir
sftp>

ファイルの削除

リモート ファイルは rm コマンドを使用して削除できます。

 sftp> pwd
Remote working directory: /home/ftpuser
sftp> ls
file1            file2            file3            remote_file1     remote_file2     remote_file3     remote_test_dir
sftp> rm remote_file3
Removing /home/ftpuser/remote_file3
sftp> ls
file1            file2            file3            remote_file1     remote_file2     remote_test_dir
sftp>

ファイルの名前を変更

リモート ファイルの名前は、 rename コマンドを使用して簡単に変更することもできます。

 sftp> pwd
Remote working directory: /home/ftpuser
sftp> ls
file1            file2            file3            remote_file1     remote_file2     remote_test_dir
sftp> rename remote_file1 new_file1
sftp> ls
file1            file2            file3            new_file1        remote_file2     remote_test_dir
sftp>

ファイルシステムの使用状況

「path」を含む現在のディレクトリまたはファイルシステムの統計を表示するには、 df コマンドを使用します。 -h フラグを使用すると、人間が読める形式で統計を表示できます。表示される統計は、ローカル マシンのファイル システムではなく、リモート SFTP サーバーのそれぞれのファイル システムに関するものであることに注意してください。

 sftp> df
        Size         Used        Avail       (root)    %Capacity
    17811456      1845472     15965984     15965984          10%
sftp> df -h
    Size     Used    Avail   (root)    %Capacity
  17.0GB    1.8GB   15.2GB   15.2GB          10%
sftp>

SFTPセッションを終了する

SFTP セッションを終了するには、 bye exit または quit コマンドのいずれかを使用します。 SFTP を終了すると、OS プロンプトに戻ります。

 sftp> exit
$

結論

SFTP は、安全かつ使いやすい、利用可能な最良のオプションの 1 つです。 CLI および GUI 機能を提供し、さまざまなプラットフォームでサポートされています。詳細については、 sftp マニュアル ページを参照してください。

 $ man sftp

さらに詳しく知りたい場合は、この Udemy Linux マスターコース をご覧ください。

「 15 Linux での SFTP コマンドの例」についてわかりやすく解説!絶対に観るべきベスト2動画

scpコマンドとFTPサーバによるファイル転送方法
【すぐできる!】誰でも簡単!Linux をコマンド操作してみよう! #1 パッケージ管理 #Linux #APT