OpenSSH公開鍵認証の設定方法 & 注意点メモ

Windows環境でLinuxサーバへ公開鍵認証方式でssh接続する際、設定をミスして、数時間も潰してしまった。
今後、同じミスを犯さないように、設定法を簡単にメモしておく。

環境

Windows(クライアント)側
Linux(サーバ)側
  • Debian Wheezy 7.6 (x86_64, kernel:2.6.32-042stab079.5)
  • openssh-server (1:6.0p1-4+deb7u2)

注意点

今回、以下の3点に気づかなくて、時間を無駄にしてしまった。以降、気をつける。

  • puttyegenで作成した公開鍵は、そのままではOpenSSHでは使用できない。

>> ssh-keygenを用いて、使用可能な形式に変換する必要がある。

  • authorized_keysの中身は、1行につき1公開鍵の対応関係にある。

>> この関係が何らかの形で壊れてしまうと、鍵認証がうまくいかない。

  • puttyegenで生成した公開鍵は、複数の行から構成されている。

>> 注意点1を忘れて、公開鍵を変換せずにauthorized_keysに書込んだ場合、認証がうまくできなくなる。

設定法

設定は、以下の手順で行う。

  1. 鍵ペアの生成 (クライアント側)
  2. 公開鍵の転送 (クライアント側)
  3. 公開鍵の形式変換 (サーバ側)
  4. 公開鍵の登録 (サーバ側)
鍵の生成

puttyegenを起動し、任意の暗号化法で鍵ペアを生成する。
生成した後、公開鍵と秘密鍵の両方を、任意の場所に保存しておく。

公開鍵の転送

セキュアな方法を使い、公開鍵をサーバに転送する。

公開鍵の形式変換

ssh-keygenを使い、公開鍵をOpenSSHで使用できる形式に変換する。


$ ssh-keygen -i -f putty_pubkey.pub > openssh_pubkey.pub

公開鍵の登録

変換した公開鍵を、authorized_keysに追記する。


$ cat openssh_pubkey >> $HOME/.ssh/authorized_keys

参考サイト

  1. 鍵交換方式による認証 - Penguin's campus note
    http://www14.plala.or.jp/campus-note/vine_linux/server_ssh/ssh_key.html