Webデザイナーなら知っておくべき サーバ知識相談室

第2回 ファイル転送はFTPじゃなくてSFTP? SSHで安全にサーバへ入ろう

この記事を読むのに必要な時間:およそ 5 分

サーバにリモートで入るには「SSH」を使おう

サーバにリモートで入るには,サーバのSSHというサービスを使います。

前回のサーバとかクラウドサーバってどんなもの?で述べたとおり,サーバとはクライアントに対してサービスを提供するもののことです。ビールサーバなら「客に対してビールを提供するもの」で,Webサーバなら「客に対してWebページを提供するもの」となります。

そして聞きなれないかも知れませんが,SSHが働いているサーバのことをSSHサーバと言います。ではビールサーバ,Webサーバときて,SSHサーバは何のサービスを提供してくれるのでしょう?

SSHは「サーバに入れて」と他の場所から言われたら,身元を確認した上で入れてくれます。つまりSSHサーバは,アクセスしてきた人に対して「ネットワークを介してサーバにログインできる」サービスを提供します。それにより,リモート(=遠くにいてネットワークでつながっている)のサーバと,自分が使っている目の前のパソコンとを安全につながることができるのです。

ちなみにSSHはSecure Shellの略です。このShell(シェル)は,ユーザの操作を受けとって,そこから与えられた「ファイルをアップする」「ファイルを削除する」などの指示をサーバに伝えるソフトのことです。

SSHが自分のパソコンとサーバを繋いでくれることで,遠くにいるサーバにファイルをアップロードしたり,操作したりすることができます。しかもこのときネットワーク上を流れるデータは暗号化されるため,一連の操作はすべて安全に行うことができます。

SSHって素晴らしいですね!

「FTPが使えない」と言われたのはなぜ?

SSHと似た仕組みにFTP(File Transfer Protocol⁠⁠」や「Telnet(Telecommunication network⁠⁠」があります。FFFTP(FTPでファイル転送するためのソフト)なら使ったことがある!という方も多いのではないでしょうか。

FFFTP Projectが配布しているフリーソフトウェアのFFFTP

FFFTP Projectが配布しているフリーソフトウェアのFFFTP

しかしFTPやTelnetだと通信内容は暗号化されず,そのまま(平文)で送られるため,通信経路を盗聴されるとアカウントやパスワードが簡単に盗まれてしまうという問題点があります。要は自分のパソコンからサーバまで,データが全部透明なトンネルを通っていくようなものだと思ってください。丸見えです。

そこで最近はFTPではなく,SSHの仕組みを用いた「SFTP」(SSH File Transfer Protocol)SCP⁠Secure Copy)というファイル転送の仕組みがよく使われています(最初に述べたWinSCPは,WindowsでSCPを使ってファイル転送をするソフトなので,WinSCPという名前なのです⁠⁠。

SFTPやSCPなら,たとえ通信経路を盗聴されても,そこを流れていくアカウントやパスワードは暗号化されているので安全です。データが中の見えないトンネルを通っていくようなものです。

SSHを猫にたとえてパスワード認証と鍵認証を理解しよう

ファイルをアップするときはサーバにリモートでSSHで入ったほうが良いことは理解できたと思います。ではリモートでSSHで,具体的にどう入るのでしょう?

サーバにはSSHの「パスワード認証」または「鍵認証」で入ります

パスワード認証はともかく,鍵認証の仕組みはとても複雑です。そこで,サーバに入るまでのやり取りを分かりやすくするため,ここでSSHを猫にたとえてみましょう。SSHは猫です。ふかふかした毛並みの猫だと思ってください。SSHである猫は安全第一と書かれたヘルメットをかぶり,サーバの「SSH」と書かれたドアの前で短い腕を組んで待ち構えています。

SSHでサーバに入るには,2つのやり方があります。1つ目はユーザ名とパスワードによるパスワード認証です。ちなみに「認証」とは,⁠サーバに入れてもいい人か?」⁠その人が名乗っている本人なのか?」を判断することです。それではパスワード認証でサーバに入ってみましょう。

Webデザイナー「ユーザ名はdesignerで,パスワードはM?\#:y&a{61です!」

SSH「パスワードが違うニャ!お前誰だニャ!」

Webデザイナー「ま,間違えました。ユーザ名はdesignerで,パスワードはke9Q@\*v83Aです!」

SSH「よし,入れニャ!」

パスワード認証の流れ

パスワード認証の流れ

やりました! SSHのパスワード認証でサーバの中に入ることができました。しかしこのパスワード認証には問題があります。

パスワード認証でサーバにログインするとき,ユーザ名とパスワードは,パソコンからサーバまでネットワーク上をだーだーと流れていきます。たとえSSHで暗号化されていても,その途中で誰かにパスワードを盗聴される可能性はゼロではありません。

盗聴されても,暗号化されているんだから問題ないのでは?と思うかもしれませんが,人が覚えられるパスワードはせいぜい6文字~10文字がいいところです。10文字程度の暗号を解読するのにそう時間はかかりませんし,正しいパスワードに行きつくまで,ひたすらありとあらゆる文字の組み合わせを試してみる総当たり攻撃を受けて,侵入されてしまう可能性もあります。

かといって長すぎるパスワードは人間には覚えられません。パスワードを30文字にしたはいいけど,覚えられなくてメモしたばかりにメモを他人に盗み見られるということもあり得ます。

そこで出てくるのが2つ目のやり方,秘密鍵と公開鍵の鍵ペアによる「鍵認証」です。

著者プロフィール

堀越良子(ほりこしよしこ)

株式会社アイ・エム・ジェイのインフラエンジニア。ウェブインテグレーションの下支えとなるサーバホスティングサービスの構築と運用を担当している。

モバイルサイトのエンジニア,SIerとソーシャルゲームの広報を経て,2013年より現職。「分からない気持ち」に寄り添える技術者になれるように日々奮闘中。