sftp コマンド

ホスト間で暗号化されたSSH接続を介してファイルを安全に転送します。

概要

SFTP(Secure File Transfer Protocol)は、安全な接続を介してファイルアクセス、ファイル転送、ファイル管理を提供するネットワークプロトコルです。sftpコマンドはFTPに似たインタラクティブなファイル転送プログラムですが、すべての操作を暗号化されたSSH通信上で実行します。

オプション

-b バッチファイル

sftpコマンドのバッチファイルを処理します。

$ sftp -b commands.txt [email protected]
Connecting to remote.server...
sftp> get file.txt
Fetching /home/user/file.txt to file.txt
sftp> exit

-F ssh_config

sshの代替ユーザー設定ファイルを指定します。

$ sftp -F ~/.ssh/custom_config [email protected]
Connecting to remote.server...

-i identity_file

公開鍵認証に使用するアイデンティティ(秘密鍵)を読み込むファイルを選択します。

$ sftp -i ~/.ssh/private_key [email protected]
Connecting to remote.server...

-l limit

使用する帯域幅を制限します(Kbit/s単位で指定)。

$ sftp -l 100 [email protected]
Connecting to remote.server...

-P port

リモートホストに接続するポートを指定します。

$ sftp -P 2222 [email protected]
Connecting to remote.server...

-r

ディレクトリ全体を再帰的にコピーします。

$ sftp [email protected]
sftp> get -r remote_directory

-v

ログレベルを上げ、sftpが進行状況についてのデバッグメッセージを表示するようにします。

$ sftp -v [email protected]
OpenSSH_8.1p1, LibreSSL 2.7.3
debug1: Reading configuration data /etc/ssh/ssh_config
...

使用例

リモートサーバーへの接続

$ sftp [email protected]
Connected to remote.server.
sftp>

ファイルのダウンロード

$ sftp [email protected]
sftp> get remote_file.txt local_file.txt
Fetching /home/user/remote_file.txt to local_file.txt
sftp>

ファイルのアップロード

$ sftp [email protected]
sftp> put local_file.txt remote_file.txt
Uploading local_file.txt to /home/user/remote_file.txt
sftp>

ディレクトリの移動

$ sftp [email protected]
sftp> pwd
Remote working directory: /home/user
sftp> cd documents
sftp> pwd
Remote working directory: /home/user/documents
sftp> lcd ~/downloads
sftp> lpwd
Local working directory: /Users/localuser/downloads

ファイルの一覧表示

$ sftp [email protected]
sftp> ls
file1.txt  file2.txt  documents/  images/
sftp> lls
local_file1.txt  local_file2.txt  downloads/

ヒント:

タブ補完を使用する

SFTPはローカルとリモートの両方のファイルに対してタブ補完をサポートしており、完全なパスを入力せずに簡単にナビゲートしてファイルを転送できます。

頻繁に使用する接続にエイリアスを作成する

シェル設定ファイルに頻繁に使用するSFTP接続のエイリアスを追加します:

alias work-sftp='sftp [email protected]'

複数ファイル転送にワイルドカードを使用する

ワイルドカードを使用して一度に複数のファイルを転送します:

sftp> get *.txt

低速接続では圧縮を有効にする

-Cオプションを使用して圧縮を有効にすると、低速接続での転送速度が向上する場合があります:

$ sftp -C [email protected]

よくある質問

Q1. SFTPとFTPの違いは何ですか?

A. SFTPはSSHを使用して安全で暗号化されたファイル転送を行いますが、従来のFTPはデータ(パスワードを含む)を平文で送信するため、傍受される危険性があります。

Q2. ディレクトリ全体を転送するにはどうすればよいですか?

A. getまたはputコマンドで再帰オプションを使用します:get -r remote_directoryまたはput -r local_directory

Q3. SFTP転送を自動化できますか?

A. はい、SFTPコマンドを含むバッチファイルと-bオプションを使用するか、スクリプトでの簡単な転送にはscpの使用を検討してください。

Q4. SFTPセッションを終了するにはどうすればよいですか?

A. sftpプロンプトでexitまたはquitと入力するか、Ctrl+Dを押します。

Q5. SFTPで利用可能なコマンドを確認するにはどうすればよいですか?

A. sftpプロンプトでhelpまたは?と入力すると、利用可能なコマンドのリストが表示されます。

参考文献

https://man.openbsd.org/sftp.1

改訂履歴