SSHによる暗号方式
「SSH」とは
Secure Shell(セキュアシェル)。暗号や認証の技術を利用して、安全にリモートコンピュータと通信するためのプロトコル。単純にSSHと言った場合、OpenSSHの実装系を指していることが多い
OpenSSHが使われる理由
・単純で、導入・使用が簡単である
・フリーである
・OpenBSDプロジェクトによって厳格な検査が行われている
・インターネット上のUNIX系サーバの90%近くが使用している
OpenSSHのノード
・クライアント=sshコマンド byユーザ
・サーバデーモン=sshdプログラム by管理者
SSHの通信手順
1.SSH-TRANS(トランスポートレイヤプロトコル)
2.SSH-USERAUTH(ユーザ認証プロトコル)
3.SSH-CONNECT(コネクションプロトコル)
SSH-CONNECTが提供する4つのサービス
・対話型セッション
・リモートコマンド実行
・TCP/IPポート転送
・X11コネクション転送
SSHの設定手順
1.OpenSSHのインストール(OSインストール時に同時に行う)
2.構成ファイルの設定変更
3.ssh認証鍵の生成/登録
4.クライアント用sshツールのインストール/設定
OpenSSHで使用できる公開鍵暗号方式の種類
・RSA
・DSA
※デフォルトではRSA
OpenSSHにおいて、ユーザがログインする際の認証
・ホスト認証 …そのサーバが本当にユーザのログインしたいサーバであるか確認
・ユーザ認証 …そのユーザがサーバにログインする資格があるか確認
ホスト認証の仕組み
クライアント上に、サーバのホスト公開鍵が登録されている。サーバ上にはホスト秘密鍵が格納されている。この2つのホスト鍵により、“RSA公開鍵暗号をつかった認証の仕組み”を利用する
ユーザ認証
・パスワード認証 …ユーザがあらかじめ登録したパスワードを使った認証
・公開鍵認証 …ユーザがあらかじめ登録した秘密鍵、公開鍵ペアを使った認証
・Hostbased認証
公開鍵認証によるユーザ認証の仕組み
1.クライアントがサーバに接続
2.クライアントは、自分がある公開鍵に対応する秘密鍵を持っていることを宣言する
3.サーバは、ユーザの秘密鍵がサーバ上の公開鍵に対応するものであることの証明を求める(チャレンジ)
4.クライアントが秘密鍵の所有を証明する(レスポンス)。このとき、ユーザは秘密鍵を使用するためにパスフレーズを入力するが、このパスフレーズはネットワーク上に流れない
5.正しいレスポンスが送られてくると、サーバはユーザが秘密鍵を持っていることを確信し、ログインを許可する
ユーザ認証において公開鍵認証を使うメリット
・パスワード(あるいはそれに類する情報)が一切ネットワークに流れない
・秘密鍵がクライアントから持ち出されたり、送信されることはない
・サーバ上の公開鍵から秘密鍵を推測することはできない
・認証エージェントが使える
・ユーザごとの動作をより細かくコントロールできる
・パスワードの推測攻撃に対して安全
・アカウントを作るとき、ユーザが管理者にパスワードを教える必要はない。したがって、遠隔地から安全にアカウントを発行できる
OpenSSHにおいて、秘密鍵と公開鍵ペアを生成するプログラム
ssh-keygen
認証エージェントを使う手順
1.ssh-agentを起動する
2.ssh-addコマンドを実行してパスフレーズを入力し、ssh-agent bathプロセスに秘密鍵を登録する
3.sshコマンドを実行してサーバにログインする(パスフレーズは要求されない)
4.すべてのsshコマンドの実行が終わったあと、ssh-agentプロセスを終了する
「PuTTY」とは
パティ。Windows上で広く使われているSSHクライアント
「WinSCP」とは
ウィンエスシーピー。Windows上で動くSFTPクライアント。エクスプローラ風の直感的なインターフェースを備えている
「Fugu」とは
Mac OS X上で動くファイル転送クライアント。内部でOpenSSHのsftpプログラムを使用している