2012 年 6 月 のアーカイブ

いいかげん公開鍵くらいサクっと作りたい

2012 年 6 月 5 日 火曜日

ということでSSHの公開鍵の覚え書き。
今までコピペとかで済ませていたので。
ちなみに今回はサーバーごとに個別に鍵を用意する。

作業環境

MacOSX SnowLeopard
ターミナル

手順

公開鍵をペアで作成。
-t rsa は公開鍵の種類。通常はrsaでOKみたい。

ssh-keygen -t rsa

下記のメッセージが表示されるのでそのままEnter。
(ここで余計なことしたら後でうまく動作しなかった)

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/ユーザーフォルダ/.ssh/id_rsa):

パスフレーズ入力してと言われるので入力。
(パスフレーズはパスワードが長いってだけ)

Enter passphrase (empty for no passphrase): パスフレーズ入力
Enter same passphrase again: パスフレーズ入力

これで公開鍵できましたよ〜的なメッセージが出て
id_rsa,id_rsa.pubの2ファイルが.sshフォルダに作成される。
id_rsaが秘密鍵(自分用)、id_rsa.pubがサーバー側に設置する用の公開鍵。

次にサーバー側に公開鍵を設置する。
ターミナルからアップする方法もあるけど今回は設置だけSFTPでやる。
サーバーに接続したら /var/ユーザーフォルダ/.ssh にid_rsa.pubをアップする。
(ユーザーフォルダは環境によって場所が変わる。.sshが無ければ作成)

アップが完了したら再びターミナルに戻って以下の設定をする。
ターミナルからサーバーにログイン。

ssh ユーザー名@ホスト名(192.168.1.3とか)

id_rsa.pubをauthorized_keysにリネーム。
authorized_keysのパーミッションを正しく設定。

chmod 600 /var/ユーザーフォルダ/.ssh/authorized_keys

更にパスワード認証を無効にして公開鍵のみの接続に制限する。
(これは鍵の接続が確認できてからのほうが良い。手順間違うと接続できなくなるので)
まずはsshd_configのバックアップをとる。(変更できない場合はroot権限で実行する)

su
Password: // パスワード入力
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.YYYYMMDD // バックアップ

viでsshd_configを編集。

vi /etc/ssh/sshd_config

以下を設定する。(不要な行は省略してます)
rootでの接続不可、公開鍵認証を使用する(場所も指定)、パスワード認証不可。

# HostKey /etc/ssh/ssh_host_key version
PermitRootLogin no root
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
# To disable tunneled clear text passwords,
change to no here! PasswordAuthentication no

変更が完了したらsshdを再起動して設定を有効にする。

/etc/init.d/sshd restart

これで完了。初回のみ接続時にパスフレーズを聞かれるので入力すれば以降はパス入力を省略して接続できる。

サーバーごとに鍵を使用する場合

自分の場合、id_rsaの名前を変更するとうまくいかなかったので、フォルダを作って鍵を分けました。

server00 >> /Users/ユーザーフォルダ/.ssh/server00/
server01 >> /Users/ユーザーフォルダ/.ssh/server01/

次に.sshフォルダにconfigという名前でファイルを作成。
以下を記述。(ホスト名は任意)

Host server00
  HostName     192.168.1.1
  Port          22
  User         ユーザー名
  IdentityFile ~/.ssh/server00/id_rsa

Host server01
  HostName     192.168.1.2
  Port          2222
  User         ユーザー名
  IdentityFile ~/.ssh/server01/id_rsa

これでsshの接続も分けれるし、入力を省略できる。

ssh server00 // ~/.ssh/server00/id_rsaを適用してくれる

手順は上記以外にも色々あるけど、今回僕がとった手順です。
これである程度セキュリティが保てるのではないかと。

参考にしたサイト

iPhoneのOpenSSHを安全に使う設定(jailbreak後)
http://iphone.goodegg.jp/archives/186