- ベストアンサー
sshとftpの違いとsshの利点
- 質問文章では、sshとftpの違いやsshの利点について詳しく知りたいという内容です。
- 質問者はwordpressでサイト構築を行っており、サイト改ざんの被害を受けた経験があります。
- 質問者はsshを利用してサイト管理を考えており、セキュリティの面やCUIの知識に興味があります。また、自身の環境についても相談しています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
SSHにも、SFTPというファイル転送プロトコルが存在します。 (サーバにSSHでログインできるように設定しているのであれば、さらにSFTP接続を許可することで、SFTPでのファイル転送が可能になります) OSXでもXPでも、例えばFilezilla といったFTPクライアントを使えば、GUIでのファイル転送ができます。 http://sourceforge.jp/projects/filezilla/ SFTPとFTPの違いを簡単に言えば、以下の2点でしょう。 ・通信が暗号化されているので、通信途中で盗聴や改ざんされる恐れがない。 ・クライアント認証ができるので、サーバからのパスワード漏洩などによる第三者ログインの心配が少ない このうち、後者の方がサイト改ざん対策としては重要です。 FTPの場合、サーバ側でパスワードを設定しておき、クライアントからはそのパスワードで接続します。そのため、パスワードが安直な文字列で推測で破られてしまうとか、サーバからパスワードが漏れたりすると、悪意の第三者でもログイン可能になって改ざんできてしまいます。 SFTP(SSH)で「公開鍵認証」を使う場合、認証の流れが逆になります。 クライアント毎に、クライアント側で「認証鍵」(公開鍵と秘密鍵のペア)を作成し、その「公開鍵」をサーバに登録します。 そうして、サーバに登録された「公開鍵」に対応する「秘密鍵」を持っているクライアントからのアクセスであればログインできるようになります。 そのため、サーバから公開鍵が漏れたとしても、その鍵に対応する秘密鍵は漏れてませんから「サーバにログインして改ざんする」ことはできません。 「クライアント側の秘密鍵」が漏れないかぎりは大丈夫なわけです。 あとはサーバ側の設定の注意点ですが、SSHのサーバ側設定として、 「パスワード認証」と「公開鍵認証」のどちらも有効無効が設定可能です。 SSHでもパスワード認証を有効にしたままだと、たとえ質問者さんが公開鍵認証でログインしていても、 攻撃者がパスワード認証でログインして改ざんする、ということが可能になってしまいます。 公開鍵認証は、最初に使用したいクライアントの鍵を登録する必要がありますので、 最初から「公開鍵認証のみ有効で、パスワード認証は無効なサーバ」にはログインする手段がありません。 そのため、初期状態ではパスワード認証は有効になっている場合が多いです。 公開鍵認証の鍵登録が終わって動作確認ができたら、パスワード認証は無効に設定を変えることが最重要です。
その他の回答 (1)
- hanabutako
- ベストアンサー率54% (492/895)
sshがどうやって安全性を担保しているかやどういう認証方法があるのかについては#1さんもある程度書いていますし、長々と自分が説明するよりも次のサイトをチラッと見てもらったほうが早いです。 http://www.unixuser.org/~euske/doc/openssh/book/chap3.html #1の回答で抜けているように思ったところをちょっと補足します。 sshでは通信そのものの暗号化とホストの認証で安全性を担保しています。前者は通信回線を盗聴するというのを防ぎ、後者はなりすましを防ぎます。#1の回答にはなりすまし防止の話題がなかったようなので、補足します。詳しくはリンク先の3.2.3節を見てください。 ブートキャンプ内はWindows XPとのことですが、Windows XPでGUIの環境を使いたかったらWinSCPが使えます。 http://winscp.net/eng/docs/lang:jp また、CUIでつなぐ場合は、Poderosa、Putty、TTSSHなどがあります。 sshの利点という質問がそもそも難しい質問だと思います。 あまり良い例えではないかもしれませんが、携帯電話を電話としてだけ使っている人が、「アプリの利点って何?」と聞くような感じです。違いすぎて答えられません。 ざっくり言うと、ftpだと基本的にファイル操作だけですが、sshなどでリモートのホストにログインできると権限とソフトさえあればそのホストを手元のコンピュータと同じように扱うことが可能です。接続先がLinuxならLinuxマシンを新たに所有したようなものです。 あと、sshを使う場合の特徴はポートフォワーディングだと思います。 ポートフォワーディングはログイン先のホストからさらに別のホストのポートに接続する機能で、ログイン先からしかアクセスできないようなサービスにsshの接続元から接続できます。 例えば、サービスを動かしているホストからしか接続できないMySQLサーバーもそのサーバーのポートにポートフォワーディングすることで手元のmysqlコマンドから直接つなぐことが可能になります。 ポートフォワーディングを逆に動かすとサービスを動かしているホストから手元のサーバーで動かしている実験環境のmysqlサーバーに繋がせることもできます。 また、Xをポートフォワーディングすることで、ssh先のGUIソフトをローカルから使うこともできます。 なお、お使いのソフト名とポートフォワーディングで検索すると設定の方法から活用方法まで見つかると思います。 > やはりリナックスの環境を構築したほうがより利点があるのでしょうか。 構築したら勉強にはなるし、趣味として遊んでみたらよいと思いますが、率直に言って、時間の無駄でしょうね。 Linuxに非常に特化したことをしない限りはMacとLinuxとでそんなに違いを感じることはないでしょうし、Linuxマシンにsshでログインできるならそのマシンを自分のセカンドマシンとして使い倒すこともできます。 Macのターミナルを使い倒して、Linux実機でやらないとどうにもならないと思ったらLinux環境を構築したらよいと思います。
お礼
hanabutakoさん、ご回答ありがとうございます。 参考URLありがとうございました。 すみません、自分の知識不足で少し理解するのに時間がかかりそうですが、上記サイトを熟読させていただきます。 リナックスはやはり大変そうですが、もうちょっとターミナルをいじってみたいと思います。sshも標準で入ってるみたいですし、仕事関連のソフトが完全にmac移行できれば便利かも知れないと思い始めてますが。。。難しいところです^^; 詳しいご説明ありがとうございました!
お礼
mtaka2さん、ご回答ありがとうございます。 教えていただいたことを実践してからお礼をと思ったのですが すみません。私の知識不足で公開鍵設定のところで躓いてしまっています。 また自分で少し調べて進めてみて改めて質問させていただくかもしれません。 しかし、認証の方法論や仕組みがなんとなくイメージでき 大変参考になりました。 ご丁寧な回答ありがとうございました!