はじめに
SSHで接続する場合、ユーザー名とパスワードを使用することが多いですが、セキュリティに煩い昨今、公開鍵認証を求められるケースが増えていると思われます。今回は、管理人の復習がてら、teratermを用いて簡単に公開鍵認証を行う方法を公開したいと思います。
公開鍵認証とは
クライアント側で生成したキーペアから、認証を行いたいサーバに公開鍵を配置することで、SSHログイン時にパスワードの代わりにクライアントの秘密鍵を用いてログインする方法です。
クライアント側からアクセスする場合は、認証情報をサーバに送信します。また、認証情報を秘密鍵で暗号化したものもサーバに送信します。サーバ側では、事前に配置されたクライアント側の公開鍵で暗号化されたデータを復号します。それを、送られてきた元のデータと比較して差分がなければ、クライアント認証が完了し無事にログインが成功します。
手順
SSHの起動状態を確認(サーバ側)
次のコマンドで確認できます。SSHでログインしている時点で起動していることは間違いないですが…。
/etc/init.d/ssh status ※Debian系
仮に起動していない場合は次のコマンドでSSHデーモンを起動します。
/etc/init.d/ssh start
公開鍵を配置するためのディレクトリとファイルの作成(サーバ側)
事前に作成されていない場合は専用のディレクトリとファイルを作成する必要があります。次のコマンドで対応します。
mkdir ~/.ssh ※.sshディレクトリを作成 cd .ssh ※ディレクトリの移動 touch authorized_keys ※authorized_keysファイルを作成 chmod 600 authorized_keys ※権限の設定(ユーザーのみ読み書き可能) cd .. ※カレントディレクトリへ移動
キーペアの作成(クライアント側)
teratermで行います。設定タブからSSH鍵生成をクリックします。
次に、鍵生成を行います。今回はRSAでビット数はデフォルトの2048とします。
問題なければ、生成ボタンをクリックします。
すると、保存ボタンがアクティブとなるので、公開鍵と秘密鍵をローカルに保存します。
秘密鍵は流出しないように厳重に管理してください。
公開鍵の転送(クライアント側)
公開鍵をサーバ側へ転送します。SCPコマンドを用いる方法もありますが、teratermの機能で行うことが出来ます。SCPコマンドって構文が少しややこしいのでteratermを使用することをお勧めします。
ファイルからSSH SCPを選択します。
上段のFromで公開鍵を選択してSendボタンをクリックします。
公開鍵をauthorized_keysに追加(サーバ側)
ログインしているユーザーのカレントディレクトリに公開鍵が送信されます。
ll | grep id_rsa.pub -rw-r--r-- 1 root root 394 May 18 04:18 id_rsa.pub
確認できたら、鍵ファイルを追加します。
cat id_rsa.pub >> ~/.ssh/authorized_keys
差分がないことを確認します。
diff id_rsa.pub .ssh/authorized_keys
試しにログインしてみる
認証方式としてESA/DSA~を使うのラジオボタンをアクティブにし、秘密鍵を選択します。その後、OKボタンをクリックします。すると、ログインに成功します。
コメント