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プログラムを使用している