
[PKI] [Linux SSH]
SSHの基礎知識
リモートシェルで使います。SSH1とSSH2がありますが、現在はSSH1の暗号強度は弱いため、SSH2が推奨されています。
注意: private key とsecret keyの区別のため private key の訳を私有鍵、secret key の訳を秘密鍵とするかもしれません。まだ
private key = 秘密鍵な状態です。
認証方法のいろいろ
SSHには、いくつかの認証方法があります。
どちらも最終的にはパスワードのような形で使えますが、公開鍵暗号を使用することをおすすめします。
パスワード認証
サーバとの間の通信を暗号化してから、アカウントとパスワードを送り認証します。
- サーバが固体IDと暗号情報を送る
- クライアントがアカウント・パスワードを送る
サーバは個別のIDを振られているので、既知のサーバIDと違う場合には別のサーバに接続してしまっている可能性などがあり、警告が表示されます。
公開鍵暗号
公開鍵暗号では、秘密鍵/公開鍵のペアを作成し、秘密鍵を本人証明として利用し、秘密鍵がないとサーバに接続できないようにします。
- サーバがID等を送信
- 利用者が秘密鍵のパスワードを解除 [パスワード → 秘密鍵]
- サーバが確認メッセージを公開鍵で暗号化して送信 [公開鍵で暗号化したメッセージ → クライアント]
- クライアント側で解除して、サーバに通知することで認証される [秘密鍵で読んだメッセージ → サーバ]
- 共通鍵を生成し、高速な通信をする
安全なわけ
- パスワードは秘密鍵に設定するので、サーバがパスワードを知ることはありません。
- 秘密鍵は、それ自信はユーザの手元に置いておき、サーバに通知されることはありません。
- 公開鍵で暗号化したデータを読めるかどうかで認証するため、ネットワーク上を秘密鍵やパスワードが流れることはありません。
利用者は、秘密鍵/公開鍵のペアを作り、公開鍵をサーバに登録します。秘密鍵は、パスワードをかけて他人に知られないよう保管しておきます。
公開鍵で暗号化したデータは秘密鍵でしか読むことができません。
ソフトウェア
クライアント、サーバ共に、定番のようなものがあります。
Unixサーバ
- OpenSSH (OpenSSLを使ったSSHの実装?)
Windowsクライアント
- PuTTY
- TeraTerm Pro + TTSSH (SSH1のみ)
- cygwinのOpenSSH
TeraTerm Pro + TTSSHは、SSH2に対応していないため、現在ではあまり使われません。
クライアントの設定
PuTTY
ダウンロード
http://yebisuya.dip.jp/Software/PuTTY/
ここから日本語化したPuTTYをダウンロードし、適当なディレクトリに解凍する。
英語版は、 http://www.chiark.greenend.org.uk/~sgtatham/putty/ こちらから。
鍵の生成
公開鍵暗号で認証するための鍵ペアを作成する。ここで作成した秘密鍵は本人を証明する鍵として使われるので秘密にする。公開鍵は、秘密鍵の確認のために使われるので公開してもよい。
- 鍵生成ソフト PuTTYgen を起動する

- 下のパラメータを[SSH2 RSA] にする
- [生成] ボタンを押す
- マウスを動かし、秘密鍵を生成する

- 「OpenSSHのauthorized_keysファイルにペーストするための公開鍵(P)」をコピーしてサーバ管理者に渡す

- 鍵のパスフレーズ/パスフレーズの確認にパスワードを設定する (あとから変更も可能)
秘密鍵のパスワードになります。
- [秘密鍵の保存] で秘密鍵を保存する (拡張子 .ppk)
秘密鍵の変更の場合も同じ手順で作成する
管理者に渡す代わりに、サーバの ~/.ssh/authorized_keys に公開鍵を追加することで、新しく生成した秘密鍵でログイン可能になる
パスワードの変更
- PuTTYgen を起動する
- [ファイル]→[秘密鍵の読み込み]で秘密鍵を読み込む
- 保存した秘密鍵ファイルを選択する
- パスフレーズを入力して暗号化を解除する
- パスフェーズを変更する
- [秘密鍵の保存]で再度保存する
パスワードは、ppkファイルのパスワードなので、管理者に再度公開鍵を渡す必要はない
ログイン設定
- putty.exe を起動する
- ホスト名、ポート 22を指定する

- カテゴリ [接続] を開く
- [自動ログインのユーザ名(U)]にアカウントを指定する
- カテゴリ [接続] [SSH] [認証] を開く
- 認証のためのプライベートキーファイルにPuTTYgenで生成した秘密鍵ファイルを指定する
- カテゴリ [ウインドウ] [変換] を開く
- 文字コードを変更する
- カテゴリ [セッション] を開く
- [保存] で設定した内容をセッションとして保存する
ログイン
- 保存したセッションを選択する
- [開く]を押す
参考
WinSCP
ファイル転送ソフト
OpenSSHのsftp コマンドも同様
ダウンロード
http://winscp.sourceforge.net/eng/
ここからWinSCP 3.6.7 英語版またはマルチランゲージ版をダウンロードする。
インストール
- 手順どおりにインストールする
ログインの設定
- メニューからWinSCPを起動する
- [セッション]を開き、ホスト名、ポート番号(22)、ユーザ名、秘密鍵ファイルを指定する

- [保存]する
ログイン
- 保存したセッションを選択する
- パスワードを入力する
ファイルの転送
- ドラッグ&ドロップでファイルを転送する
パスワードの変更は、puttygenで行う。
参考
- http://www.tab2.jp/~winscp/
Pagent
Pagentを使うと、ログイン時のパスワードを省略できる
- Pagentを起動し、タスクトレイからPagentを開く
- Add Keyで秘密鍵とパスワードを登録する
- PuTTYまたはWinSCPを開くとパスワードなしで接続できる
- 不要になったらPagentを終了させる