web-dev-qa-db-ja.com

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

通常、私はscpコマンドを使って* nix上のファイルを転送します。

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

155
nos

一言で言えば、SCPはファイルの転送にしか使用できず、対話的ではありません(つまり、すべてをコマンドラインで指定する必要があります)。 SFTPはより手の込んだもので、対話型コマンドでディレクトリの作成、ディレクトリやファイルの削除(もちろんシステムの許可の対象となります)などのことができます。

97
Alex

から ウィキペディア

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

そして

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

101
Jarvin

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

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

2つのコマンド間の他の重要な違いは、sftpは、リモートファイルを取得することはできますが、単一のコマンドラインを使用してローカルファイルをリモートロケーションにコピーします。一方、scpは両方ともできます。

sftpリモートファイル取得

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

scpリモートファイル取得

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

scpリモートファイルを置く

scp /path/to/local.file user@Host:[/path/to/remote.file]
8
Stéphane Ch.

SSHSecureSHell)はリモートログインやその他のネットワークサービスが安全でないネットワーク上で安全に動作できるようにするための暗号化ネットワークプロトコル。

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

類似性:両方のSCP(SecureCopyProtocol)andSFTPSSHFileT転送Protocol)はネットワークです。プロトコル。ネットワーク上のホスト間のファイル管理をサポートします。どちらもSSHを使用しています。

もっと

2
Premraj

2つのプロトコルの違いの大部分は、他の回答で、より詳細には https://unix.stackexchange.com/q/8707/19088 で既に述べられています。

別の違いは、 curlのドキュメント によると、SCPプロトコルはそれほど移植性がなく、通常はUnixシステム間でしか機能しないことです。

ちなみに curl は両方のプロトコルを実装しており、デフォルトのOpenSSH SFTPクライアント実装とは異なり、SFTPとSCPの両方で非インタラクティブです。

また、SCP(またはSFTP)を必要とせずにSSH経由でファイルを転送できる FISH プロトコルもあります。私が知っている限りでは、FISHはあまり普及していませんが、現在は少数のファイルマネージャ( Midnight Commander およびKDEベースのもの)と Lftp で実装されています。

1
Pere