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

sftpコマンドの使い方

sftpコマンドを利用して安全なファイル転送を実現しよう

Linuxサーバを運用していると、サーバへファイルをアップロードしたり、ログファイルやバックアップデータを取得したりする機会が頻繁にあります。

そのような場面で利用される代表的な仕組みがSFTP(SSH File Transfer Protocol)です。

SFTPはSSHを利用してファイル転送を行うため、通信内容が暗号化され、安全にデータをやり取りできます。

FTPのようにユーザー名やパスワードが平文で流れることもありません。

現在では企業環境やクラウド環境において、FTPの代替として広く利用されています。

本記事ではsftpコマンドの基本操作から実務での活用方法まで詳しく解説します。

SFTPとは何か

SFTP(SSH File Transfer Protocol)はSSHプロトコルを利用したファイル転送方式です。

名前が似ているためFTPの拡張版と思われがちですが、実際には別のプロトコルです。

SFTPの特徴です。

  • 通信が暗号化される
  • SSH認証を利用できる
  • 公開鍵認証に対応
  • ファイアウォール設定が簡単
  • Linux標準環境で利用可能

現在では最も一般的な安全なファイル転送方式の一つです。

FTPとの違い

項目FTPSFTP
通信平文暗号化
認証パスワード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> ls

Linuxのlsと似た感覚で利用できます。

リモートディレクトリを移動する

cdコマンドを利用します。

sftp> cd /var/log

サーバ側のディレクトリが変更されます。

ローカルディレクトリを確認する

ローカル側はlpwdを利用します。

sftp> lpwd

現在のPC側の作業ディレクトリが表示されます。

ローカルディレクトリを変更する

lcdを利用します。

sftp> lcd /tmp

ローカル側の作業場所が変更されます。

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

ローカルからサーバへ送信する場合です。

sftp> put test.txt

test.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> quit

SSHセッションも終了します。

秘密鍵認証を利用する

公開鍵認証の場合です。

sftp -i ~/.ssh/id_ed25519 student@192.168.60.101

実務ではこちらが一般的です。

別ポートへ接続する

SSHポート変更環境の場合です。

sftp -P 2222 student@192.168.60.10

scpと同様に大文字Pを利用します。

sftpとscpの違い

項目sftpscp
操作方法対話型一括実行
ファイル操作可能限定的
自動化やや不向き向いている

手動操作なら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 sshd

Permission denied

認証失敗です。

  • パスワード誤り
  • 公開鍵未登録
  • 権限不足

SSHログも確認しましょう。

まとめ

SFTPはSSHを利用した安全なファイル転送方式であり、現在の企業環境ではFTPに代わる標準的な仕組みとなっています。

sftpコマンドを利用すると、対話形式でファイル転送やディレクトリ操作を行うことができます。

Webサイト運用やログ回収、バックアップ取得など実務で利用する場面は非常に多いため、Linux管理者であれば基本操作を習得しておきたいところです。

まずはputとgetの操作から覚え、実際にファイル転送を試してみましょう。