MacOSX(Tiger)でssh+公開鍵認証

自宅サーバにsshのポートをあけているのですが、悪い人がいろんなアカウントで入ろうとしてきました。セキュリティを強化します。

まず、/etc/hosts.allowでローカルのみにアクセスを制限。

さらにMacOSXではsshのdefaultの設定はログインパスワードがONなのですが、これをOFFにして鍵認証onlyにします。

鍵の作成およびsshクライアントとしてputtyを使うことにしました。

PuTTY ごった煮版
鍵の作成手順
1) puttygen.exeを起動
2)鍵の生成を行い、マウスを適当に動かします
3)鍵を保存します
–難しめのパスフレーズを入力
–公開鍵: id-rsa.pub
–秘密鍵: id-rsa.ppk
公開鍵をサーバにアップ、putty/pscp.exeを使います。Windowsのコマンドプロンプトから

>pscp source id-rsa.pub username@192.168.x.x:/Users/username

で、MacOSのuserフォルダに公開鍵がアップできます。

MacOSX側で公開鍵をauthorized_keysに追加します。

# cd ~
# cat id-rsa.pub >> .ssh/authorized_keys
# rm id-rsa.pub

念のためアクセス制限をファイルにかけておきます。

# chomod 0700 .ssh
# chomod 0600 .ssh/authorized_keys

次にputtyでkeyを作成するとkeyのビット数が1024で作成されます。これにあわせてサーバのkeyの強度を768から1024にあげます。

#sudo vi /etc/sshd_config
ServerKeyBits 1024

あとはputtyを起動して適切な情報
– セッション:接続先の指定:ホスト名(N)
– 接続:データ:ログインの詳細:自動ログインのユーザ名(U):
– 接続先:SSH:認証:認証のためのプライベートキーファイル(K)
を入力して開く(O)を押します。

開く前にセッションを保存しておくことをお勧めします。

passphraseが聞かれたら成功です。

失敗すると通常のログインパスワードを聞かれてしまいます。

うまくログインできたら、sshからの通常のログイン入力を禁止にします。

# sudo vi /etc/sshd_config
PasswordAuthentication no
UsePAM no

これで終わりです。

秘密鍵+パスフレーズも良いんだけどこれをType Tの指紋認証と連携できたらうれしいなぁ。