SFTPとSSHってどう違うの?用途からツールまでサクッと解説【図解なしでも分かる】

サーバーに繋ぐときに「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クライアントソフト」を使うのが一般的。
マウス操作(ドラッグ&ドロップ)で簡単にファイルが送れて便利。

  • WinSCPWindowsユーザーならこれ一択レベルの定番ソフト。画面が見やすくて使いやすい!
  • 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やターミナルを使いこなしていきましょう!

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

タイトルとURLをコピーしました