バナー

coreserverでSSH鍵認証

はじめに

coreserverではSSHを利用してサーバにログインしてSHELLにて作業することができますが、SSHはそれだけでなくファイルの転送にも使用することができます。また、認証に関してサーバに登録したID、パスワードによる認証と秘密鍵と公開鍵を使用した鍵認証もサポートしています。鍵認証を使用すればサーバに登録した鍵ではなく自分で生成した秘密鍵につけたパスワードでログインすることができます。サーバに登録したID,パスワード認証の場合は、IDとパスワードが盗まれると他人でもログインできてしまいますが、鍵認証の場合は秘密鍵のパスワードと秘密鍵を盗まれなければログインすることはできません。通常のID,パスワードは認証のためにネットワークを通じてサーバに送られるのに対して、秘密鍵はサーバに送る必要は無いのでネットワーク上で盗まれる事も無く安全性が高いと思われます。
ローカル端末にてssh-agentに秘密鍵のパスワードを一度入力すれば、ローカル端末からログアウトするまでパスワードを再入力しなくても良くなりますので使い勝手も向上します。

ここではサーバはcoreserver、クライアントはOpenSolarisとして説明します。

仕組み

鍵認証を行うには、クライアントにて公開鍵と秘密鍵の鍵ペアを生成する必要があります。公開鍵で暗号化したものは秘密鍵でしか復号化できず、秘密鍵で暗号化したものは公開鍵でしか復号化できません。まず自分の公開鍵を相手に渡します。次に、相手に送りたい文書を秘密鍵で暗号化して相手に送ります。相手はあらかじめもらっておいた公開鍵で送られてきた文書を復号化できれば正しい相手(自分)が書いた文書であることがわかります。

クライアントで鍵生成

ssh-keygenコマンドを使用してキーを生成します。

bash-3.2$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/export/home/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /export/home/user/.ssh/id_rsa.
Your public key has been saved in /export/home/user/.ssh/id_rsa.pub.
The key fingerprint is:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx user@host

コマンドを実行すると表示されているように秘密鍵がid_rsa、公開鍵がid_rsa.pubに生成されます。

公開鍵をサーバに設定

生成された公開鍵id_rsa.pubの内容をサーバの"$HOME/.ssh/authorized_key"というファイルを作成またはファイルに追加します。これで、クライアント側からsshコマンドで接続すると秘密キーのパスワードを聞いてきますので入力するとログインすることができます。