Simple, Slowly

ブログを引っ越ししました。http://48.jp

秘密鍵を使ってパスワードなしでログインする

ログインの際にパスワードではなくSSH鍵を使うようにすると、セキュリティを向上させると同時に操作を簡素化でき非常に便利です。公開鍵と秘密鍵のペアを生成し、サーバーに登録します。


ローカル環境に.sshディレクトリを作成し、パーミッションを700に変更します。

local $ mkdir .ssh
local $ chmod 700 .ssh


ローカル環境上で鍵の作成を行います。

local $ ssh-keygen

鍵の作成場所を聞かれます。ここでは、そのままEnterを押します。
パスフレーズを聞かれるので、推測されにくパスフレーズを入力してください。
コマンドの実行が終了すると、.ssh/ディレクトリにid_rsaとid_rsa.pubという2つのファイルが生成されます。


続いて公開鍵をサーバ上に置きます。
この操作を自動化するためのbashの関数があるので、.bashrcに次の関数を追加してください。
ちなみに、以下の関数はサーバ上に~/.sshディレクトリがすでに作成されていることを前提にしているので、存在しない場合はあらかじめ作成しておいてください。

function authme {
  ssh $1 'cat >>.ssh/authorized_keys' < ~/.ssh/id_rsa.pub
}


変更が完了したら、.bashrcを読み込みます。

local $ source ~/.bashrc

以上の手順が済むとauthmeコマンドによって新しい鍵をサーバに置けるようになります。


以下のコマンドで実行します。
serverNameの部分はサーバ名に置き換えてください。

local $ authme serverName


パスワードを聞かれるので入力すると、鍵がサーバ上に登録されます。
以上で鍵の登録が完了しました。

sshでログインしてみましょう。

local $ ssh serverName


パスフレーズを聞かれるので、キーチェーンに登録しておけば以降はパスフレーズの入力なしでサーバにログインできるようになります。