ubuntu ssh 公開鍵 public key SSHを使ってパスワードなしで接続

http://ubuntu.u-aizu.ac.jp/004/index.html
まず、自分の端末側で、秘密鍵と公開鍵を作成する。
最初に、ディレクトリ .ssh を作成する。このディレクトリは自分だけが読み書きできるようになっている必要がある。
mkdir .ssh chmod 700 .ssh
続いて、鍵を作成する。
最初に "Enter which ..." と聞かれている部分は、デフォルトであればそのままリターンでよい。
次にパスフレーズを入力する。このパスフレーズはできるだけ長い方がよい。
"-t dsa" を省略すると、RSA形式で鍵を作る。

test1:~> ssh-keygen -t dsa

Generating public/private dsa key pair. Enter file in which to save the key (/home/test/.ssh/id_dsa): (入力)
Enter passphrase (empty for no passphrase): (入力)
Enter same passphrase again:
Your identification has been saved in /home/test/.ssh/id_dsa.
Your public key has been saved in /home/test/.ssh/id_dsa.pub.
The key fingerprint is: xxxxxxxxxxxx test@test1

ここで、.sshというディレクトリの下に id_dsa というファイルと id_dsa.pub の2つのファイルができる。前者が秘密鍵、後者が公開鍵である。

公開鍵である id_dsa.pub を、リモートログインしたい端末へ転送する。フロッピーディスクやUSBメモリ経由でもよいし、SFTPやscpなどを使ってもよい。

サーバへリモートログインする。先ほどのid_dsa.pubが転送されていることを確認したあと、まずサーバ側にも .ssh ディレクトリを作成する。こちらも、パーミッションは700とする。
server1:~> mkdir .ssh server1:~> chmod 700 .ssh


id_dsa.pubファイルを、authorized_keysというファイルに加える。
server1:~> cd .ssh server1:~> cat ~/id_dsa.pub >> authorized_keys server1:~> chmod 600 authorized_keys
なお、authorized_keysは、authorized_keys2という名前になる場合がある。
また、同時に、ホームディレクトリが、本人にのみ読み書き・アクセス可能(700)になっていることを確認する。

サーバ側では、証明書でのログインを許す設定を /etc/ssh/sshd_config ファイル(またはsshdの設定ファイル)に加える。あるいは、既にyesとなっていることを確認し、もしなっていないようであればyesに変更し、sshを再起動する。
PubkeyAuthentication yes


以上で準備は完了である。サーバからログアウトし、改めてsshでログインする。
最初の1回は、次のような表示が出て、鍵を作るときに入力したパスフレーズの入力が要求される。慌てずにゆっくり、確実に入力する。

パスフレーズの入力要求画面


正常にアクセスできることを確認する。次回以降のログインでは、パスワードを入力することなくアクセスができるはずである。それが確認出来れば、パスワード入力を禁止してしまってもよい。改めてサーバ側の /etc/ssh/sshd_config を以下のように変更する。パスワード認証とルートログインをできないように

# PasswordAuthentication yes

PasswordAuthentication no

に変更,

PermitRootLogin yes

PermitRootLogin no
PasswordAuthentication no
変更したらsshを再起動する。
server1:~> service ssh restart