sftp

Linux
この記事は約3分で読めます。


sftpとはSSH上で動作するファイル転送技術です。

ポートはデフォルトではsshと同じ22/TCPを使用します。

今回は通信対象サーバーとの間で予め公開鍵認証を済ませています(公開鍵認証の方法についてはこちら)。なので最初からパスワードなしでSSH接続が出来る環境になっています。

FTPについて

まずはFTPから。

“ftp” は旧式のファイル転送プロトコルで、現在はセキュリティ上、使用非推奨となっています。(デフォルトのポート番号は21)

これをSSH化してセキュリティ強化したものが “sftp” になります。

sftp接続の開始

sftpの開始の仕方です。

下記コマンドでセッションを開始します。

sftp open

プロンプトが “sftp>” に変わりますので、コマンドを入力すると対話型に応答があります。

pwd
ls
ls .ssh

ファイルの転送

ファイルの転送の仕方です。

ローカル → リモートへの転送

put

リモート → ローカルへの転送

ディレクトリの転送

ディレクトリの場合はディレクトリ名に “-r” オプションを付けます。

“-r” オプションは再帰的に最下層まで繰り返しコピーという意味です。

ローカル → リモートへの転送

リモート → ローカルへの転送

get

終了

“exit” でsftpセッションを終了してターミナルに戻ります。

exit

コマンド一覧

主なコマンドは以下の通り、詳細は “man sftp” にあります。

操作コマンド
リモートの場所確認pwd
ローカルの場所確認lpwd
リモート一覧ls
ローカル一覧lls
ディレクトリ移動cd dir
ローカル移動lcd dir
ファイル取得get file
ファイル送信put file
ディレクトリ取得get -r dir
ディレクトリ送信put -r dir
終了exit

ローカル側の操作は “l” を頭に付けます。
例) “ls” → “lls” 、  “cd” → “lcd”

ipwd
lls

“sftp” 内ではどんなコマンドでも使える訳ではなく、例えば “cat” などは使用できません。
cat

参考)FTPSについて

SFTPとよく似た(語順を入れ替えただけのようにも見える)FTPSというファイル転送プロトコルがあります。

これはSFTPとは別物です。

FTPSはセキュリティ上問題のあるFTPの旧資産を、TLS技術を用いて延命させたものです。

対比表

現在ではSFTPの方が推奨されています。

項目SFTPFTPS
正式名称SSH File Transfer ProtocolFTP over SSL/TLS
ベースSSHFTP + TLS
RFCRFC 4254RFC 4217
互換性FTPとは無関係FTPの拡張プロトコル
使用ポート22/TCPのみ21 + 動的にポート多数使用
通信経路単一セッション制御+データ分離
FW/NAT越え容易困難
パスワード認証可能可能
公開鍵認証標準なし
クライアント証明書不要必要な場合あり
障害解析容易難しい
attack surface

まとめ

“sftp” は、ローカル↔️リモート間の安全なファイル受け渡し手段です。

正確にはコマンド名というよりプロトコル名ですかね。

しかしながらターミナルからツールやコマンドと同じ感覚で起動出来、対話型で使えます。

SSH上のコピーコマンドには “scp” がありますが、これはセキュリティ上は非推奨となっており、 “sftp” の方が推奨されています。

コメント

タイトルとURLをコピーしました