sshを鍵方式でログインできるようにする手順は以下です。クライアント、サーバー側ともにLinux(CentOS)で、opensslはインストール済みであることを前提とします。
まずは接続元のクライアント側での作業。鍵ペアを作成します。
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): <<<< Enterキー
Created directory '/home/user/.ssh'.
Enter passphrase (empty for no passphrase): <<<< パスワード入力
Enter same passphrase again: <<<< パスワード入力
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff user@local.local
The key's randomart image is:
+--[ RSA 2048]----+
|.................|
|.................|
|.................|
|.................|
|.................|
|.................|
|.................|
|.................|
|.................|
+-----------------+
以上で、鍵ペア(公開鍵と秘密鍵)ができましたので、公開鍵を接続先のサーバーにscpで転送します。
$ scp .ssh/id_rsa.pub user@remote.net:
The authenticity of host '[remote.net] ([99.999.999.999])' can't be established.
RSA key fingerprint is ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:f.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[remote.net],[99.999.999.999]' (RSA) to the list of known hosts.
user@remote.net's password:
id_rsa.pub
次はサーバー側の作業です。ちゃんと公開鍵が転送されているかを確認します。
$ pwd
/home/user
$ ll | grep id_rsa.pub
-rw-r--r-- 1 user user 408 Jul 8 20:41 id_rsa.pub
次に、.ssh/authorized_keysに公開鍵の内容を登録します。.sshディレクトリがない場合、作成しておいてください。
$ cat id_rsa.pub >> .ssh/authorized_keys
authorized_keysのパーミッションを変更します。
$ chmod 600 .ssh/authorized_keys
転送した公開鍵を削除しておきます。
$ rm id_rsa.pub
次に、クライアントから鍵方式で接続できるかを確認します。
$ ssh -i ~/.ssh/id_rsa user@remote.net
接続できました!