【2/17】今年は「濃厚」技術トーク!@ITメールセミナー スラッシュドット    はてなブックマーク  Yahoo!ブックマークに登録  印刷

TCP/IPアレルギー撲滅ドリル【番外編】 第9回

軽快なscpか高機能なsftp、sshサーバに向いているのは?

福永勇二
インタラクティブリサーチ
2006/6/27

 sshファイル転送2つの方法、scpとsftp

 
scpの特徴は?
 

 図1はscpが動いているときのイメージを図にしたものです。利用者がサーバにあるファイルを取り出す指定をすると、scpのクライアントプログラムはsshサーバに接続して、「『自分あてにファイルを送る』コマンドを起動しなさい」という命令を送ります。

図1 scpの利用イメージ

  命令を受け取ったsshサーバは、シェルと呼ばれるプログラムを起動し、そのシェルが「sshの通信路を使ってファイルを送り返す」プログラムを起動します。これにはscpという名前のプログラムを使います。プロトコルと同じ名前が付いたプログラムです。

  このscpは指定のファイルを読み出して、同じ通信路に流し込みます。するとそのデータはscpクライアントに届きます。scpクライアントはこれを保存してゆくことで、ファイル転送を実現します。

  このときscpクライアントプログラムとsshサーバプログラムの間は、sshによる通信路を使っていますので、誰かに盗聴されても内容は分かりませんし、改ざんすることもできません。またsshの接続をするときに正しいサーバか、正しいユーザーかを確認しますので、なりすましも防ぐことができます。つまり、安全にファイル転送ができたことになります。

  ちなみにscpのプロトコルは、rcpという暗号化機能のないファイル転送用のプロトコルがベースになっています。これをsshの安全な通信路でやりとりすることで、安全なファイル転送を実現しています。

 
「UNIXスタイルのシェルで動かす」って何ですか?
 

 シェルは、UNIX系のシステムで使われている、コマンド処理プログラムのことです。Windowsでいうところの「コマンドプロンプト」に相当するものと考えると分かりやすいでしょう。ちなみに「コマンドプロンプト」とシェルを比べると、コマンドの種類はもちろん、その書き方も違います。このシェルを使うのはscpの特徴の1つです。

 
sftpの特徴は?
 

 ではsftpはどうでしょうか? sftpが動いているときのイメージを図2に示します。

図2 sftpの利用イメージ

  利用者がサーバにあるファイルを取り出す指定をすると、sftpのクライアントプログラムはsshサーバに接続して、「sftpサーバを起動して接続しない」という命令を送ります。

  命令を受け取ったsshサーバは、sftpサーバプログラムを起動して、クライアントとの間に通信路を準備します。

  この後、クライアントはsftpサーバに対して、sftpのコマンドを送り、必要なファイルを取り出します。コマンドには「ファイルを開く」「ファイルを閉じる」「ファイルを読み出す」「ファイルを書き込み」といったものがあります。

 
ファイル転送を途中で止められるsftp
 

  sftpでは、通信路をつないだ後に、コマンドを送るスタイルを取っていますので、1つのコマンドが終わった後に、次のコマンドを送ることができます。そのため、ファイル転送を途中で止めたり、途中から再開したり、ファイル転送をいろいろとコントロールできる特徴があります。

  sftpの場合も同様に、sftpクライアントプログラムとsshサーバプログラムの間は、sshによる通信路を使っていますので、盗聴などの心配はありません。

 軽快さをウリにするscp、高機能をウリにするsftp

 
scpとsftpの違いを一目で見たいのですが
 

 表1にscpとsftpの特徴を比較してみました。この表はWinSCPのWebページにある比較表を参照して、主要部分を抜き出して日本語化、また一部追記したものです。薄緑の背景は、一般的に考えて優れていると思われる方を表しています。

項目 scp sftp
速度 パケットの確認をしないので、速いことが多い。ただし確認しないことによる問題が発生することがある パケットの確認をするので、遅いことが多い。新しいバージョンでは改善されている
転送の再開 できない できる
大きなファイルの扱い 4GBを超えるファイルを取り扱えない 4GBを超えるファイルでも取り扱える
転送の中止 通信そのものを中断することで中止する 通信を維持したまま転送を中止できる。中止した後は、次のコマンドが送れる
ファイル名の変更 できる できる
ファイルの複製 できる できない
コマンド実行 できる できない
サーバの環境 UNIXスタイルのシェルがあることを想定している UNIXスタイルのシェルは不要
新旧でいうと…… どちらかというと古い どちらかというと新しい
特徴を一言でいうと…… シンプルで軽快 高機能だがやや重い
表1 scpとsftpの比較 (参照) http://winscp.net/eng/docs/protocols
※一般的に考えて、優れていたり汎用的と思われる方の背景色を薄緑にしています。どちらも同様の機能を備える項目、またその項目が短所長所の両面を持っていて甲乙つけ難いものは両方の背景を薄緑にしています

  発表時期はscpの方が古いのですが、特徴を比較する限りは、どちらか一方がずばぬけて優れているというわけではないようです。人によって見方は違うかもしれませんが、一言でいうなら軽快さをウリにするscp、高機能をウリにするsftp、といったところです。

  興味深いのは、サーバの環境です。scpはサーバにUNIXスタイルのシェルを備えている必要があります。それに対してsftpはUNIXスタイルのシェルは不要です。さまざまなOSへの対応のしやすさはsftpに軍配が上がるようです。

  また大きなファイルを取り扱う必要があるときにはscpでは対応できないことも起こり得ますので注意が必要です。


 
すべてのsshサーバがscpとsftpに対応しますか?
 

 sshサーバにはフリーで配布されているものと商品として販売されているものがあります。フリーで配布されている代表的なsshサーバ「OpenSSH」については、scpとsftpの両方の機能を持っています。一方、市販品のsshサーバの中には、sftpにのみ対応し、scpには対応していないものもあるので注意が必要です。

 
sshバージョン1や2との組み合わせは?
 

 sshのプロトコルには大きく2種類あります。それぞれバージョン1、バージョン2と呼びます。sshバージョン1はいくつか問題点が見つかり、使われない方向にありますが、まだ使われています。

  scpはsshバージョン1対応のプログラムの一部として、sftpはsshバージョン2対応のプログラムの一部として発表されました。しかしながら、sshバージョン1とsftpを組み合わせて使うことも、sshバージョン2とscpを組み合わせて使うこともできます。

 
代表的なクライアントは?
 

 Windowsで利用できる代表的なクライアントプログラムでは、何といっても「WinSCP」が有名です。WinSCPはhttp://winscp.net/eng/docs/lang:jpからダウンロードできます。WinSCPでは、転送プロトコルとしてscp、sftpの両方に対応しています。またsshのバージョンに関しても、バージョン1と2の両方に対応します。画面1は、これらの情報登録画面で、ホスト名やユーザー名などともに、使用するプロトコルを指定しているところです。「sftpが使えないときにはscpを使う」という設定も可能です。

表1 WinSCPの設定画面



安全なファイル転送とは

目次
  安全なファイル転送とは 安全なファイル転送って何ですか?/安全に行うにはどうするのでしょうか?/sshとファイル転送/sshはリモートコンソールではないのですか?sshのファイル転送は1種類だけですか?
軽快さをウリにするscp、高機能をウリにするsftp scpの特徴は?/「UNIXスタイルのシェルで動かす」って何ですか?/sftpの特徴は?/ファイル転送を途中で止められるsftp/scpとsftpの違いを一目で見たいのですが/すべてのsshサーバがscpとsftpに対応しますか?/sshバージョン1や2との組み合わせは?/代表的なクライアントは?
関連リンク
  連載:インターネット・プロトコル詳説




「Master of IP Network総合インデックス」

ホワイトペーパーTechTargetジャパン

Master of IP Network フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

スキルアップ/キャリアアップ(JOB@IT)

- PR -
- PR -

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Special -PR-
  企業の仮想化に足りない“発想”とは?
仮想化運用管理のキモは意外なところに!

New!
  操作もマニュアルも分かりやすい!
ユーザー視点で開発されたPC管理ツール

New!
  仮想化すればコストは削減できるか?
仮想化に必要な「3つの視点」を解説する

  セキュリティを知り尽くす上野氏が登壇!
@ITメールソリューションLive! in Tokyo

  運用管理の課題を“2つの観点”から分析
ユーザー満足度の高い「仮想環境」とは?

  世界に通用するストレージの作り方とは?
製品に込めた思いを富士通の開発者に聞く

  OSSで手間も時間も、障害も減った――
「マピオンの事例」オープンソース活用法

  「ノートPCの持ち出し禁止」で大丈夫?
情報漏えいを防ぐ管理手法とインフラは?

  1日の処理を1秒に――MySQLの達人が語る
「コスト削減」できるチューニング

  ドキュメント作成を自動化して、SEの作業
効率を大幅アップ! Visio 2007の魅力

  急速に広がるHyper-Vでのサーバ仮想化
そのベストプラクティスをデルが解説

  @IT主催セミナーで語られた、「担当者に
求められるセキュリティ対策」をレポート

  @IT「Windows 7」 特設サイトオープン!
最新情報・移行ノウハウを公開しています