satoshiabe.jp : SSH login without password

HOME > DOCUMENTS > SSH login without password

SSH login without password

Updated : 2007/07/16
Created : 2006/04/19

まえがき

ローカルホストの設定

リモートホストの設定

接続する

パスフレーズを入力せずにログインする (1)

パスフレーズを入力せずにログインする (2)

リンク

まえがき

このページは、ssh を使用してリモートホストにログインする際の設定をメモしたページ。 よりセキュアなリモート接続を実現するため、パスワード認証を禁止し、パスフレーズを使用した認証を有効にする。 パスフレーズを入力せずにログインする方法も簡単に説明する。

ローカルホストの設定

パスワード認証を使用して SSH によりリモートホストへのログインする場合、ローカルホストに OpenSSH がインストールされているなら、基本的に何も準備しなくて十分だろう。 ただし、今回はパスフレーズによる認証を有効にするため、鍵のペア(公開鍵と秘密鍵)を作成する。 鍵を作成するために、ssh-keygen コマンドを実行する。 鍵の作成に使用するオプションは以下のとおり。

本ページでは、SSH version 2 を使用する。 SSH クライアントが version 2 に対応していないこともあるため、附属のドキュメントを読んでおくこと。

ssh-keygen (1) -t rsa1 SSH version 1 -t dsa SSH version 2 -t rsa SSH version 2

ssh-keyget コマンドを実行する。 passphrase として任意の文字列を指定する。

localhost% ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/satoshi/.ssh/id_rsa): <-- 何も入力せずに [ENTER] キーを押下する Enter passphrase (empty for no passphrase): <-- ここでパスフレーズを入力する Enter same passphrase again: <-- もう一度パスフレーズを入力する Your identification has been saved in /home/satoshi/.ssh/id_rsa. Your public key has been saved in /home/satoshi/.ssh/id_rsa.pub. The key fingerprint is: 58:50:72:f0:e2:df:1d:3f:ac:fb:c1:df:1a:07:23:82 satoshi@example.com localhost%

${HOME}/.ssh ディレクトリに鍵のファイルが作成された。 id_rsa が秘密鍵で、id_rsa.pub が公開鍵だ。

localhost% ls -l ~/.ssh/ total 8 -rw------- 1 satoshi satoshi 1743 4 19 02:12 id_rsa -rw-r--r-- 1 satoshi satoshi 408 4 19 02:12 id_rsa.pub localhost%

リモートホストの ~/.ssh ディレクトリに存在する authorized_keys ファイルに、ローカルホストで生成した id_rsa.pub ファイルの内容をコピーする。 既に authorized_keys ファイルが存在する場合、id_rsa.pub ファイルの内容を追記する。 authorized_keys ファイルが存在しない場合、authorized_keys ファイルを作成し、id_rsa.pub ファイルの内容を記述する。 尚、この状態で、まだリモートホストはパスワード認証を許可している。

localhost% scp .ssh/id_rsa.pub remotehost:/home/satoshi/ localhost% ssh remotehost remotehost% cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

リモートホストの設定

続いて、リモートホスト上で作業をする。 パーミッションを変更する。

remotehost% chmod 700 ~/.ssh remotehost% chmod 600 ~/.ssh/authorized_keys

sshd_config を編集するため root になる。

remotehost% su - # vi /etc/ssh/sshd_config RSAAuthentication yes # RSA 認証を有効にする # プロトコル Versison 1 のみ適用される PubkeyAuthentication yes # 公開鍵による認証を有効にする PasswordAuthentication no # パスワードによる認証を無効にする :wq #

sshd のプロセスを再起動し、sshd_config を改めて読み込ませる。

remotehost# kill -HUP PID

接続する

ssh で接続する。 パスフレーズの入力を要求されるため、入力してログインする。

localhost% ssh remotehost

パスフレーズを入力せずにログインする (1)

ssh コマンドを使用し、リモートホストへ接続したり切断したりしていると、パスワードの入力を面倒に感じるかもしれない。 そういうときに利用する方法をひとつ。 まず、ssh-agent コマンドに引数に使用している shell を指定し、実行する。 その後、ssh-add コマンドを実行し、パスフレーズに指定した文字列を入力して Enter キーを押下する。

localhost% echo $SHELL /bin/bash localhost% localhost% ssh-agent bash localhost% ssh-add Enter passphrase for /home/satoshi/.ssh/id_rsa: パスフレーズを入力して ENTER キーを押下する Identity added: /home/satoshi/.ssh/id_rsa (/home/satoshi/.ssh/id_rsa) localhost%

リモートホストにログインしてみる。

localhost% ssh remotehost login successful... remotehost%

パスフレーズを入力せずにログインする (2)

ssh-keygen コマンドを実行した後、パスフレーズを入力するところで何も入力せず Enter キーを押下する。 同様に手順で、作成された公開鍵をリモートホスト上に設置しておけば、パスフレーズの入力なしでログインできるようになる。

リンク

OpenSSH (openssh.com)

LiNUX Horizon - SSH Without Password (linuxhorizon.ro)

Common threads: OpenSSH key management, Part 1 (ibm.com)

Common threads: OpenSSH key management, Part 2 (ibm.com)

SSH User Identities (securityfocus.com)

Email to Satoshi ABE