2016年3月6日日曜日

sshで接続@鍵認証

IPアドレスの固定化が出来たので、遠隔からログイン出来るようにしておきたい。
とは言っても、既にssh-serverは導入済みのはずなので、クライアント側の設定を行えばいい。
クライアント側は、Windowsならteratermやputty等を使えば、すぐにログイン出来るようになると思う。
ここでは、teratermとputtyの中のpagentを使い、agent認証でログインできるようにする。
が、まずは鍵認証が出来るように。

teratermのインストールが終わったら、まずは鍵ペアを作成しよう。
teratermの起動直後の「新しい接続」ダイアログは「キャンセル」。
メニューバーの「設定」から、「SSH鍵生成」を選択しよう。
鍵生成のダイアログが出てくる。

鍵の種類は色々あるけど、汎用性があってそこそこ使えるのはRSA。鍵長(ビット数)も、2048でとりあえずは十分だろう。これを長くすると、暗号強度は高まるが、処理にかかる負担も大きいので、大きくしたとしても4096までにしておいた方がいいだろう。
鍵の種類とビット数を決めたら「生成」ボタンを押す。
しばらくすると、ダイアログが以下のように変わるはずだ。


ある程度慣れている人だと、パスフレーズ無しの方が使い勝手がいい、ということで、パスフレーズ無しにしている人も多いと思うけど、agentを使うことも考えているので、ここはパスフレーズを入力しておく。


後は、「公開鍵の保存」と「秘密鍵の保存」の両方のボタンを押して、それぞれをファイルに保存しておこう。
(既に作っている鍵もあるので、ファイル名はそれぞれ id_rsa_usekey.pub と id_rsa_usekey にしてある)



ここまで出来たら、ログイン確認をする。
デフォルトでは確か、パスワード認証も鍵認証も両方許可されていたと思うので、ここでは両方試してみる。

まずはパスワード認証。
メニューバー「ファイル」から「新しい接続」を選ぶ。


ホストの欄に、前回設定したIPアドレスを、サービスはSSH(ポートも22番)で、SSHバージョンはSSH2にしておこう。(既にSSH1では接続出来ないはず。)


これで「OK」を押すと、以下のダイアログに変わるはずだ。
(初回接続時は、ホスト鍵保存していいか?というダイアログが出てくる。OKを押しておこう。)
下の方のラジオボタンは「プレインパスワードを使う」にしておこう。
ユーザ名にUbuntu上のアカウント名、パスフレーズに、そのアカウントのパスワードを入力し、「OK」を押すと、ログイン出来るはずだ。


通常のパスワードでログイン出来るのが確認できたら、次は先ほど作成した鍵を用いて認証出来るか試してみよう。

鍵認証を使用するためには、サーバ側(Ubuntu側)に、先ほど作成した鍵のうち、公開鍵を登録しておく必要がある。
ホームディレクトリの下に、sshというディレクトリを作成し、その中で authorized_keys というファイルに、鍵を追記していく形になる。
ログインしたままのteratermがあるはずなので、以下の手順でディレクトリを作成しておこう。

mkdir .ssh
chmod 755 .ssh

自分自身以外が書き込み出来ないよう、パーミッションを変更するのも合わせてやっておく。

先ほど作成した鍵(.pub となっている方)をサーバへアップロードする必要があるのだが、teratermなら簡単に出来る。
ログインしたままのteratermで、メニューバー「ファイル」から「SSH SCP」を選択する。


以下のダイアログが表示されるので、Fromに先ほどの鍵を、Toには、~/.ssh/id_rsa_usekey.pub と入力し、「Send」ボタンを押そう。


そうすれば、先ほど作成したファイルが、サーバ上に格納されているはずだ。

ls ~/.ssh/id_rsa_usekey.pub
/home/******/.ssh/id_rsa_usekey.pub

後は、このファイルを authorized_keys に追記すればいい。

cat ~/.ssh/id_rsa_usekey.pub >> ~/.ssh/authorized_keys

さて、鍵認証が出来るかどうか、もう一枚teratermを立ち上げて試してみよう。
ログイン先やサービスは先程と同じようにして、認証画面を以下のようにしよう。
ラジオボタンは「RSA/DSA/ECDSA...を使う」とし、秘密鍵を先ほど作成した鍵(.pubではない方)を選択する。
画面上部の「ユーザ名」は、サーバ側のアカウント、パスフレーズは、秘密鍵を作成した時に入力したパスフレーズだ。(OS側で設定したパスワードではない)


これで「OK」を押すと、すんなりログイン出来るようになるはずだ。

ただ、これではログインするたびに毎回パスフレーズを入力しなければいけない。
メンドウだ。
なので、次回はagent(pagent)を用いて、パスフレーズ入力を一回限りにするようにしてみたい。

0 件のコメント:

コメントを投稿