連載
» 2006年06月27日 00時00分 UPDATE

セキュリティプロトコルマスター(8):軽快なscpか高機能なsftp、sshサーバに向いているのは? (2/2)

[福永勇二,インタラクティブリサーチ]
前のページへ 1|2       

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

scpの特徴は?

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

図1 scpの利用イメージ 図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の利用イメージ 図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の設定画面 表1 WinSCPの設定画面

前のページへ 1|2       

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。