sftpコマンドの使い方|SSHベースで安全にファイル転送する方法

目次
sftpコマンドを利用して安全なファイル転送を実現しよう
Linuxサーバを運用していると、サーバへファイルをアップロードしたり、ログファイルやバックアップデータを取得したりする機会が頻繁にあります。
そのような場面で利用される代表的な仕組みがSFTP(SSH File Transfer Protocol)です。
SFTPはSSHを利用してファイル転送を行うため、通信内容が暗号化され、安全にデータをやり取りできます。
FTPのようにユーザー名やパスワードが平文で流れることもありません。
現在では企業環境やクラウド環境において、FTPの代替として広く利用されています。
本記事ではsftpコマンドの基本操作から実務での活用方法まで詳しく解説します。
SFTPとは何か
SFTP(SSH File Transfer Protocol)はSSHプロトコルを利用したファイル転送方式です。
名前が似ているためFTPの拡張版と思われがちですが、実際には別のプロトコルです。
SFTPの特徴です。
- 通信が暗号化される
- SSH認証を利用できる
- 公開鍵認証に対応
- ファイアウォール設定が簡単
- Linux標準環境で利用可能
現在では最も一般的な安全なファイル転送方式の一つです。
FTPとの違い
| 項目 | FTP | SFTP |
|---|---|---|
| 通信 | 平文 | 暗号化 |
| 認証 | パスワード | SSH認証 |
| 利用ポート | 21番 | 22番 |
| セキュリティ | 低い | 高い |
現在の企業環境ではSFTPの利用が推奨されています。
sftpコマンドとは
sftpはOpenSSHに含まれるクライアントプログラムです。
FTPクライアントに似た操作方法でファイル転送を行えます。
利用可能か確認してみましょう。
$ sftp -VまたはOpenSSHがインストールされていれば利用可能です。
基本的な接続方法
SSHと同じように接続できます。
$ sftp student@192.168.60.101
認証後、以下のようなプロンプトが表示されます。
sftp>ここから対話形式で操作できます。
現在のリモートディレクトリを確認する
接続先サーバのカレントディレクトリを確認します。
sftp> pwd
表示例です。
Remote working directory: /home/studentリモートディレクトリの内容を確認する
lsコマンドを利用します。
sftp> lsLinuxのlsと似た感覚で利用できます。
リモートディレクトリを移動する
cdコマンドを利用します。
sftp> cd /var/logサーバ側のディレクトリが変更されます。
ローカルディレクトリを確認する
ローカル側はlpwdを利用します。
sftp> lpwd現在のPC側の作業ディレクトリが表示されます。
ローカルディレクトリを変更する
lcdを利用します。
sftp> lcd /tmpローカル側の作業場所が変更されます。
ファイルをアップロードする
ローカルからサーバへ送信する場合です。
sftp> put test.txttest.txtがサーバへコピーされます。
最もよく利用する操作の一つです。
別名でアップロードする
sftp> put test.txt backup.txtサーバ側ではbackup.txtとして保存されます。
ファイルをダウンロードする
サーバから取得する場合です。
sftp> get messages現在のローカルディレクトリへ保存されます。
別名でダウンロードする
sftp> get messages log.txtローカル側で別名保存できます。
ディレクトリをアップロードする
再帰的にコピーする場合は-rを利用します。
sftp> put -r website配下のファイルもまとめて転送できます。
ディレクトリをダウンロードする
sftp> get -r logsディレクトリごと取得できます。
ディレクトリ作成
サーバ側にディレクトリを作成します。
sftp> mkdir backupリモート側で実行されます。
ファイル削除
サーバ側のファイル削除です。
sftp> rm old.log慎重に利用しましょう。
接続終了
終了する場合は以下です。
sftp> exit
または
sftp> quitSSHセッションも終了します。
秘密鍵認証を利用する
公開鍵認証の場合です。
sftp -i ~/.ssh/id_ed25519 student@192.168.60.101実務ではこちらが一般的です。
別ポートへ接続する
SSHポート変更環境の場合です。
sftp -P 2222 student@192.168.60.10scpと同様に大文字Pを利用します。
sftpとscpの違い
| 項目 | sftp | scp |
|---|---|---|
| 操作方法 | 対話型 | 一括実行 |
| ファイル操作 | 可能 | 限定的 |
| 自動化 | やや不向き | 向いている |
手動操作ならsftp、スクリプトならscpが向いています。
実務での利用例
企業環境では以下のような用途があります。
- Webコンテンツ更新
- ログ回収
- バックアップ取得
- 取引先とのファイル交換
- クラウドサーバ管理
特に企業間ファイル連携では非常に多く利用されています。
OpenSSHサーバ側の設定
SFTPは通常OpenSSH Serverに含まれています。
設定確認です。
# grep Subsystem /etc/ssh/sshd_config
一般的には以下になっています。
Subsystem sftp /usr/libexec/openssh/sftp-serverこの設定によってSFTP機能が提供されます。
よくあるトラブル
Connection refused
sshdが起動していない可能性があります。
# systemctl status sshdPermission denied
認証失敗です。
- パスワード誤り
- 公開鍵未登録
- 権限不足
SSHログも確認しましょう。
まとめ
SFTPはSSHを利用した安全なファイル転送方式であり、現在の企業環境ではFTPに代わる標準的な仕組みとなっています。
sftpコマンドを利用すると、対話形式でファイル転送やディレクトリ操作を行うことができます。
Webサイト運用やログ回収、バックアップ取得など実務で利用する場面は非常に多いため、Linux管理者であれば基本操作を習得しておきたいところです。
まずはputとgetの操作から覚え、実際にファイル転送を試してみましょう。





