SFTPを使った安全なファイル転送

 ファイル転送プロトコル(FTP)は、かつてコンピュータ同士でのファイル転送に最も広く用いられたプロトコルだった。しかし、FTPは認証情報およびファイルコンテンツを暗号化せずにケーブルを介して送るため、安全な通信方法とは言えない。Secure Copy(SCP)やもっとロバストなSSH File Transfer Protocol(SFTP)は、十分に暗号化されたチャネル上でデータを転送することによって、このセキュリティ上の懸念を解決している。こうした代替案を利用すれば、インターネットをはじめとするどんな信頼できないネットワーク上でもセキュアなファイル転送を行うことができる。

 SCPもSFTPも、その根底をなすプロトコルとしてSecure Shell(SSH)に頼っている。SSHは、PKI(Public Key Infrastructure)に基づく認証と暗号化を使ってコンピュータ間にセキュアで暗号化されたチャネルを確立する。SSHでは、セッションを起動するための認証データの交換とその後のデータ転送に暗号化を用いている。

 SSHのサーバおよびクライアントソフトウェアは、現在のOSの大半に備わっている。また、ほとんどのLinuxシステムでは、OpenSSHスイートの一部としてSCPやSFTPのクライアントが利用できる。SCPやSFTPだけでなく、SSHもまた、リモートシェルやGUIデスクトップのリモート接続の設定、コンピュータ間のトンネリング、セキュアなブラウジングのためのSOCKSプロキシの設定、ポート転送に適したプラットフォームとして機能する。

SCPとSFTP

 SCPの起源は、Remote Copy(RCP)にある。SCPは、FTPと違って、更新日時や参照日時、ファイルの転送モードを保存する必要があるかどうかを指定できる。またRCPとは異なり、必要に応じてパスワード入力を求めることができる。さらに、ローカルマシンとリモートホストとの間のファイルのコピーだけでなく、2台のリモートホストどうしでのファイル転送も可能だ。

 SCPは、バッチ処理用の便利なコマンドラインツールである。ただし、SCPが動作するSSH1は旧式で今後サポート予定のないバージョンのSSHなので、SSH2で動作するSFTPのような別のプロトコルを利用したほうがよいだろう。

 SFTPは本格的なファイル転送プロトコルで、リモートファイルの名前変更や削除などSCPでは処理できなかったものも含め、FTPにあるすべての操作を実現している。

 SFTPはSSHのサブシステムとして動作し、デフォルトの状態では標準のSSHポート番号22でファイル転送を行う。制御とデータトラフィックのためにポート20とポート21を開く必要があるFTPとは異なり、ファイアウォール上で複数の追加ポートを開く必要はまずない。SFTPクライアントは、大半のLinuxシステムが備えているOpenSSHスイートにsftpという名前で収められている。

 パスワードベースの認証(ただし、リモートホストがパスワードなしのSSH認証を許可していれば、パスワード入力の必要はない)を利用するときは、次のようにしてSFTPセッションを起動する。

sftp david@192.168.1.1

 sftpからパスワードの入力が求められ、認証に成功すると、sftp> というプロンプトのシェルが現れる。いったんsftpシェルに入ってしまえば、cdlcdlschmodchgrpgetputrenamermdirといったFTPで使えるコマンドが同じように実行できる。セッションを終了するには、プロンプトの後にexitと入力すればよい。

SFTPサーバ

 OpenSSHスイートは、最も普及しているSSHのオープンソース実装である。そのサーバはsshdと呼ばれている。SSHポートを監視して接続要求を受け入れるには、サーバ上でsshdを実行する必要がある。SFTPを有効化または無効化するには、デフォルトでは/etc/ssh/sshd_configにあるメインのsshd設定ファイルを編集する。デフォルトではSFTPが有効になっているが、次の行をコメントアウトすれば無効にできる。

Subsystem sftp /usr/libexec/openssh/sftp-server

 hosts.denyファイルを編集して次のような行を含めると、SCPやSFTP、その他のSSH機能へのアクセスを、接続してくるホストのIPアドレスに基づいて制限できる。

sshd: 192.168.1.1

 ネットワーク全体のブロックを行うには、次のように、そのネットワークとサブネットのアドレスを指定すればよい。

sshd: 192.168.1.0/24

または

sshd: 192.168.1.0/255.255.255.0

 SFTPサーバは、どんなオペレーティングシステム上で動作しているクライアントにもサービスを提供できる。Windows向けSFTPクライアントとしては、FileZillaWinSCPDataFreewayが有名である。

SFTP用GUIクライアント

 OpenSSHスイートのコマンドライン版クライアントに加え、GNOMEやKDEのような普及度の高いデスクトップ環境のファイルブラウザも、SFTPクライアント機能を備えている。GNOMEのNautilusやKDEのKonquerorで、ロケーションフィールドに次のように入力すればよい。

sftp://david@192.168.1.1:/home/david

 するとパスワードの入力が求められ、認証に成功すると、ファイルブラウザ画面にリモートサーバのファイルが一覧表示される。こうしたファイルは、ドラッグ&ドロップ操作によるコピーや、右クリックによる名前やパーミッションなどのプロパティ変更も行える。ファイルをダブルクリックすると、適当なエディタやビューアで開くことができる。また、次回以降にすばやくアクセスできるように、SFTP上のどんなディレクトリにもブックマークを付与できる。

 この領域では他にも、SFTPクライアントの上に実装されたSSH File Systemという新たなファイルシステムのような興味深い開発も行われており、これによってリモートファイルシステムのシームレスでセキュアなマウントが可能になる。

Murthy RajuはインドのRishi Valley Schoolでコンピュータ・サイエンスを教えるかたわら、Linuxコンピュータの小規模なネットワークを管理している。システムやネットワークの管理、Linux/Unix/Windowsプラットフォームのオープンソースおよび商用の各種プロダクトの技術サポートに7年間従事した経験を持つ。

NewsForge.com 原文