SCPとSFTPの違いは何ですか?


162

通常、このscpコマンドを使用して* nixesでファイルを転送します。

SFTPとSCPの違いは何ですか?両方ともSSHで動作しませんか?

回答:


98

一言で言えば、SCPはファイルの転送にのみ使用でき、非対話型です(つまり、すべてをコマンドラインで指定する必要があります)。SFTPはより複雑で、ディレクトリの作成、ディレクトリとファイルの削除(もちろん、すべてシステムのアクセス許可の対象)などの操作をインタラクティブなコマンドで実行できます。


34
対話性について:説明する違いは、OpenSSHに実装されている特定のSFTP / SCPクライアントに関するものです。プロトコル自体については何もありません。インタラクティブSCPクライアントまたは非インタラクティブSFTPクライアントを実装することは完全に可能です。
マーティンPrikryl 14年

4
もう1つ:サーバーがline経由のSFTPアクセスのみを許可している場合、scpは機能しませんForceCommand internal-sftp。私はPermitTTY noまた、scpアクセスを防ぎますが、sftpアクセスを許可します。しかし、これらの2つのことはsftpを妨げるべきではありません。出典:個人的な経験。
ecube

SFTPサーバーもSCP転送を受け入れることができると想定できますか?
gus

@gusいいえ、ecubeのコメントを参照してください
ペール

104

ウィキペディアから:

ファイル転送のみを許可する以前のSCPプロトコルと比較して、SFTPプロトコルは、リモートファイルに対する一連の操作を許可します。これは、リモートファイルシステムプロトコルに似ています。SCPクライアントと比較したSFTPクライアントの追加機能には、中断された転送の再開、ディレクトリリスト、およびリモートファイルの削除が含まれます。[1]これらの理由により、GUI SCPクライアントと比較してGUI SFTPクライアントの実装は比較的簡単です。

そして

SCPとSFTPはどちらも同じ一般的なレベルのオーバーヘッドでファイル転送中に同じSSH暗号化を利用しますが、SCPは通常、特に高遅延ネットワークでのファイル転送でSFTPよりもはるかに高速です。これは、SCPがより効率的な転送アルゴリズムを実装しているためです。転送アルゴリズムは、パケットの確認を待つ必要がありません。これにより速度は向上しますが、転送を中断できないという犠牲が伴うため、SFTPとは異なり、セッションを終了しないとSCP転送をキャンセルできません。


18
「ファイルを転送する場合、通常、SCPはSFTPよりもはるかに高速です。」
ミカボレン

3
「しかし、転送を中断できないという犠牲が伴います」。それは非常に重要なトレードオフです。
aaaaaa

aaaaaa、「セッションを終了せずに」これは、すべてのセッションがファイルをコピーすることである場合、大したことではありません。大量のファイルをコピーしている場合、クライアントは個々のファイルのコピーが完了するまで待つこともできます。
ビクターセルジエンコ

9

純粋にコマンドラインの観点から:

  • scpには対話モードがなく、コマンドスクリプトを読み取ることもできません。つまり、すべてをコマンドラインで記述する必要があります。
  • sftpには対話モードがあり、ファイルからコマンドを読み取ることができます。

2つのコマンド間の他の重要な違いがあることですSFTPは、単一のコマンドラインを使用してリモートロケーションにローカルファイルを置くことができない、それは、リモートファイルを取得することができますが、一方で、SCPは、両方を行うことができます

sftp get remote file

sftp user@host:/path/to/remote.file [/path/to/local.file]

scpはリモートファイルを取得します

scp user@host:/path/to/remote.file [/path/to/local.file]

scp putリモートファイル

scp /path/to/local.file user@host:[/path/to/remote.file]

2
ファイルを置く:sftp {user}@{host}:{remote_dir} <<< $'put {local_file_path}'
gdw2

3

SSHS ecure SH ell)は、暗号化されたネットワークプロトコルであり、リモートログインおよびその他のネットワークサービスが、セキュリティで保護されていないネットワーク上で安全に動作できるようにします。

違い: SFTPは対話モード(セッション)で動作し、SCPは非対話モードで動作します。SFTPを使用して、リモートファイルシステムにアクセスできます。つまり、ファイルの作成、削除、および一覧表示です。

類似性: SCP(両方S ecure C OPY P rotocol)とSFTPS SH F ILEのTの ransferのPの rotocol)は、ネットワーク上のホスト間でファイル管理をサポートしているネットワークプロトコルです。両方ともSSHを使用します。

もっと


2

2つのプロトコルのほとんどの違いは他の回答ですでに述べられており、https: //unix.stackexchange.com/q/8707/19088でより詳細に述べられています

curlドキュメントによると、もう1つの違いは、SCPプロトコルは移植性が低く、通常はUnixシステム間でのみ機能することです。

ところで、curlは両方のプロトコルを実装しており、デフォルトのOpenSSH SFTPクライアント実装とは異なり、SFTPとSCPの両方に対して非対話的です。

また、FISHプロトコルもあり、SCPまたはSFTPを使用せずにSSH経由でファイルを転送できることに注意してください。私が知る限り、FISHはあまり人気がなく、現在、いくつかのファイルマネージャー(Midnight CommanderとKDEベースの一部)とLftpに実装されています。


2
「別の違いは、curlのドキュメントによると、SCPプロトコルはあまり移植性がなく、通常はUnixシステム間でのみ機能するということです」あなたの答えのこの部分の皮肉なことは、最も人気のあるSCP GUIはWinSCPと呼ばれ、そしてあなたが推測した-それはWindowsプログラムです。
ブレット

1
@brettで最も人気のあるクライアントはおそらくOpenSSHのscpであり、高度に展開されていると言えます。WinSCPはSCP / SFTP / etcクライアントですが、今日では主に(S)FTPクライアントとして使用されています。それにもかかわらず、定評のある「WinSCP」という名前は保存されていました。」(WinSCPの履歴から:winscp.net/eng/docs/project_history)
ペール
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.