サーバーに繋ぐときに「SFTP」とか「SSH」とか聞くけど、結局どっちが何なの?
って思ったんでしょう。
どちらも「サーバーに接続する」という点では同じだけど。
目的(やりたいこと)が全然違うって理解でどおかな。
今回は、似ているようで全然違う「SFTP」と「SSH」の違いについて、IT初心者でも分かるようにざっくり解説。
ひとことでざっくりと!(SFTPとSSHの決定的な違い)
まずは結論から!
ひとことで言うと、レイヤー(役割)が違うんだね。
- SSH(Secure Shell): サーバーを遠隔操作するための安全な土台(通信の仕組み)
- SFTP(SSH File Transfer Protocol): SSHの仕組みを使ってファイル転送をするための方法
つまり、「SFTPにはSSHという技術が使われている」という整理。
車で例えるなら、SSHが「安全に作られた専用道路」で、SFTPがその道路を走る「荷物運びのトラック」みたいなイメージかね。
どちらも通信が暗号化されているので、パスワードやデータが盗み見られる心配がなく安全。
だからプロは使う。
仕事で使う必須要素。
SFTPとは?(何に使うの?)
SFTPの主な用途は、ズバリ「安全なファイル転送」。
自分のパソコン(ローカル)と、遠くにあるサーバーの間で、ファイルをやり取りする時に使う。
遠くにあるサーバーと別のサーバーとの通信でも使う。
SFTPの主な利用シーン
たとえば以下。
- Webサイトの更新: ローカルで作ったHTMLファイルや画像をサーバーにアップロードする
- システムのコード転送: 開発したプログラムソースをサーバーに送る
- バックアップ: サーバー上のデータやログファイルを自分のパソコンや別のサーバーにダウンロードする
昔からある「FTP」というファイル転送方法は、通信が暗号化されておらずセキュリティ的に危険。
そこで、SSHの力を使ってFTPを安全にしたのが「SFTP」というわけ。
SFTPの代表的なツール(クライアントソフト)
SFTPをローカルで使うときは、専用の「SFTPクライアントソフト」を使うのが一般的。
マウス操作(ドラッグ&ドロップ)で簡単にファイルが送れて便利。
- WinSCP: Windowsユーザーならこれ一択レベルの定番ソフト。画面が見やすくて使いやすい!
- FileZilla: WindowsでもMacでも使える超有名ソフト。SFTPだけでなくFTPにも対応しています。
- Cyberduck: Macユーザーに人気のアヒルちゃんアイコンのソフト。見た目が可愛くて直感的。
【補足】SFTPとFTPSの違いって?
ちなみに、「SFTP」と似た名前で「FTPS」というのもあり。
混同されることがあるんだ。
名前は似てるがまったくの別物。
SFTPは「SSH」ベース。
FTPSは「SSL/TLS(Webサイトのhttpsと同じ仕組み )」ベース。
暗号化してるのは同じだけどね。
SFTPとFTPSの違いについては、すでに別の記事で詳しくまとめているので、気になる方はこちらをチェック!
SSHとは?(何に使うの?)
一方、SSHの主な用途は「サーバーの遠隔操作(リモートコントロール)」。
手元のパソコンから、遠くにあるサーバーの「黒い画面」を直接いじるための安全な通信手段。
それがSSH。
SSHの主な利用シーン
たとえば以下。
- フォルダー構成の変更: サーバーの中に入って、ディレクトリ(フォルダ)を作ったり消したりする
- デプロイ: プログラムをサーバー上で動かせる状態にする(本番環境への反映など)
- ログの確認: サーバーでエラーが起きていないか、テキストベースで確認する
- ソフトウェアのインストール: サーバーに必要なソフトを入れる
ファイルそのものを送るのではなく、サーバーに直接命令(コマンド)を出すときにSSHを使う。
SSHの代表的なツール(ターミナルソフト)
SSHでサーバーに接続するには、「ターミナル」と呼ばれる黒い画面のツールを使う。
- PuTTY: Windowsで昔からよく使われている定番のSSHクライアント。
- Tera Term: これもWindowsの定番。こっちのほうが古い。古参エンジニアにはお馴染み。
- Macの「ターミナル」: Macなら標準で入っている「ターミナル」アプリで、そのままSSH接続できる
- VS Code(Remote – SSH): 最近のトレンド!エディタの中から直接サーバーに繋いでコードがいじれる。
デプロイなら専用ツールを使うことも!
SSHを使って「デプロイ(本番環境への反映)」を自動化、効率化する専用のツールもある。
というか、でぷろいなら専用ツールのほうが楽だと思う。
手作業でコマンドを打つのは大変だしミスも怖いので。
実務ではこういうツールを使うことが多いでしょう。
- Capistrano(カピストラーノ): Rubyで作られたデプロイツールの老舗。歴史が長くて情報も多い。
- Deployer: PHPで作られたデプロイツール。PHPのプロジェクト(Laravelなど)でよく使われる。
- Ansible(アンシブル): サーバーの設定からデプロイまで、丸ごと自動化できちゃう構成管理ツール。Python製。
認証には「鍵」が必要?(公開鍵認証)
SSH(そしてそれを使うSFTP)でサーバーに接続するとき、パスワードだけで入ることもできるんだが。
最近の考え方だと、セキュリティ的にはちょっと不安。。
そこで、実務でよく使われるのが「公開鍵認証」という仕組み。
簡単に言うと、サーバー側に「公開鍵(南京錠)」を置いておき、手元のパソコンに「秘密鍵ファイル(合鍵)」を持っておく方式です。
この秘密鍵ファイルがないと絶対にログインできないため、パスワードが漏れても不正アクセスされにくく、とっても安全。
SFTPとかSSHで繋ぐときには、「パスワードなんですか?」じゃなくて「鍵ください」ってことになる。
初期設定の時には、先に「これ使ってね」って言われると思う。
目的で使い分けよう!
いかがでしたか?
最後にざっくりとおさらい。
- SSH: サーバーを直接操作する(コマンドを打つ)ための仕組み
- SFTP: SSHの仕組みを使って、安全にファイルを転送する仕組み
「サーバーの中身をいじりたい時はSSH」「ファイルをアップロード・ダウンロードしたい時はSFTP」と覚えておけばバッチリです!
自分のやりたい目的に合わせて、WinSCPやターミナルを使いこなしていきましょう!


ご意見やご感想などお聞かせください! コメント機能です。