SSHでtrixbox(もちろんLinuxでもMACでもOK)にパスワードなしでログインする方法

最近、かなり忙しくってブログさぼっていたら、こないだ友人に「やっぱくじけたか・・・。」とボソッと言われたので久々の更新。
ブログネタは結構多いけど、文章にする時間が無くってさ・・・。ふん。

今日は、以前書いた「trixboxにSSHで接続する方法」をちょいとレベルアップしてみます。
通常、SSHで接続する度にパスワードを聞かれますが、今日はパスワードを入力しなくても良くって、良くもまぁと思うほど色々な名前でログインを試みてくる知らない人からもサーバーを守れる方法を書きたいと思います。
Windowsの方は、trixboxProFAQの「RSA認証でtrixboxを保護する」を読んでください。
ウチはいつもの事ながら、MACからの利用法です。

MACのターミナルを起動してローカルマシン上で ssh-keygen というコマンドを使って公開鍵・秘密鍵のペアを作成します。


$ ssh-keygen -t rsa

Generating public/private rsa key pair.
Enter file in which to save the key (生成先): ←そのままでEnter
Enter passphrase (empty for no passphrase):  ←パスフレーズを入力
Enter same passphrase again:  ←パスフレーズを再入力
Your identification has been saved in (生成先)/id_rsa.
Your public key has been saved in (生成先)/id_rsa.pub.
The key fingerprint is:
*********

って表示されて自分のホームディレクトリの下にある~./sshにid_dsa と id_dsa.pub という 2つのファイルができあがります。
どちらもテキストファイルで、この 2つが鍵ペアとなり、拡張子 .pub はその名の通り公開鍵(public key)だから、こちらの方をリモートのサーバに転送します。

Linuxとかだと、ssh-copy-id でコピーすると手っ取り早いけど、残念ながらMACにはssh-copy-idと言うコマンドはありません。
ターミナルから下の方法を実行すれば、一発でOKです。


# cat .ssh/id_rsa.pub | ssh remote_username@remote_host.com "cat >> .ssh/authorized_keys"
trixboxだと、rootになるでしょうから実例だと

# cat .ssh/id_rsa.pub | ssh root@s123456.trixbox.fonality.com "cat >> .ssh/authorized_keys"
でOKです。

実際にSSHで接続すると、いままでパスワードを聞いてた所で、何にもなしでログイン出来るようになりました。


# ssh -l root s123456.trixbox.fonality.com
便利ですな。

あとは、今までID/PWでログインしていたtrixboxをRSA認証キーだけを受け付けるように変更することです。trixboxにSSHでアクセスし、以下を実行します。


# vi /etc/ssh/sshd_config

PasswordAuthentication no ←yesをnoに書き換える

上書き保存をしてviを終了してください。
:wq

あとはサービスを再起動します。

service sshd restart
これでID/PWでのログインは出来なくなっているはずですので、知らない人からのID/PWの連射攻撃を喰らっても偶然ログインは出来なくなっているはずです。
試しにID/PWでのログインを行ってみて、ログインできなければ成功です。

ID/PWのログインより楽で安全ですから、必ず行うことをオススメします。

ちなみに、MAC_Aで作ったRSA認証キーをMAC_Bでも利用したい場合は、MAC_AからMAC_Bの同じディレクトリにid_rsaをコピーするだけでは利用できません。

MAC_Bで


ssh-add
を実行すれば、パスフレーズを聞いてきますので、MAC_Aで鍵を生成したときに入力したパスフレーズを入力するとMAC_Bに取り込まれ、利用できるようになると思います。