SSH接続(公開鍵認証方式)の設定方法

SSH接続(公開鍵認証方式)の設定方法

SSH接続(公開鍵認証方式)の設定方法

公開鍵認証方式でのSSH設定を記載します。

 

 

 

SSH接続にはパスワード認証方式も有ります。
それぞれのSSH接続方法でのTeraTermマクロでの
自動ログイン設定については以下のページに記載しました。

 

またCentOS7でのSSH接続(公開鍵認証方式)の設定方法は以下のページに記載しました。

 

本ページの目次

 

 

A. 接続先(SSHサーバ)がCentOS5_2、接続元(SSHクライアント)がWindowsの場合

基本的にはWindows端末(接続元)でキーペアを作成し、公開鍵を接続先へ渡す方法のほうが
推奨されるよう(秘密鍵を渡すのはリスクが伴なうため)ですが今回は敢えて接続先でキーペアを
作成し、接続元へ秘密鍵を渡す手順で行ないます。

 

 

事前設定

 

まず始めにSSH接続用にユーザーを作成します。

[root@centos52 ~]# useradd user1
[root@centos52 ~]# passwd user1

 

この時点で正しくSSH接続(パスワード認証)を行えることを
確認します。TeraTermを使用しSSH接続を行いました。
この接続ウィンドウはそのまま残しておきます。

 

SSHサーバがインストールされているか検索します。

[root@centos52 ~]# rpm -qa | grep ssh
openssh-4.3p2-41.e15
openssh-clients-4.3p2-41.e15
openssh-askpass-4.3p2-41.e15
openssh-server-4.3p2-41.e15

 

/etc/sshディレクトリには以下のものが有りました。

[root@centos52 ~]# ls /etc/ssh
moduli
ssh_config
sshd_config
ssh_host_dsa_key
ssh_host_dsa_key.pub
ssh_host_key
ssh_host_key.pub
ssh_host_rsa_key
ssh_host_rsa_key.pub

 

 

 

sshd_configの設定変更

 

sshd_configのバックアップを取っておきます。

[root@centos52 ~]# cp -a /etc/ssh/sshd_config /etc/ssh/sshd_config_old

※-aオプションの意味は、「できるだけ属性や構造を保持する。」

 

SSHの設定をするためにviエディタでsshd_configを編集します。

[root@centos52 ~]# vi /etc/ssh/sshd_config

 

以下の4点を編集しました。

rootログインを拒否する。
#PermitRootLogin yes
PermitRootLogin no

 

空パスワードでのログイン禁止にするために
#PermitEmptyPasswords no
PermitEmptyPasswords no

 

パスワードでのログインは拒否
PasswordAuthentication yes

PasswordAuthentication no

へ変更しました。

 

公開鍵認証方式を使用する
#PubkeyAuthentication yes

PubkeyAuthentication yes

へ変更しました。

 

編集後、SSHサービスを再起動します。

[root@centos52 ~]# /etc/rc.d/init.d/sshd restart

 

 

 

公開鍵/秘密鍵ペアの作成

 

ユーザーをuser1へ切り替えます。

[root@centos52 ~]# su user1

 

公開鍵/秘密鍵のペアを作成します。

[user1@centos52 ~]$ ssh-keygen -t rsa

 

※~/.sshディレクトリが作成され、そこに2つの鍵ファイルが作成されます。
パスフレーズは1~4文字では弾かれるようです。

 

2つのファイルが作成されたことを確認します。
「id_rsa」が秘密鍵、「id_rsa.pub」が公開鍵です。

 

[user1@centos52 ~]$ ls ~/.ssh
id_rsa
id_rsa.pub

 

公開鍵を公開鍵リストに追加

 

「id_rsa.pub」の内容を「authorized_keys」という名前の
新規ファイルへ入れこみます。
教科書的に言えば、「生成した公開鍵を公開鍵リストに追加します。」

[user1@centos52 ~]$ touch /home/user1/.ssh/authorized_keys
[user1@centos52 ~]$ cd /home/user1
[user1@centos52 ~]$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys

 

※「authorized_keys」には複数の公開鍵の内容を入れられるため
今後追記することも想定してか、初回から「>>」を使用するのが一般的のようです。

 

※RSA公開鍵を使用する場合は、RSA公開鍵の内容を 「authorized_keys」に入れ、
DSA公開鍵を使用する場合は、DSA公開鍵の内容を「authorized_keys2」 に入れます。

 

「authorized_keys」のパーミッションを600に設定します。

[user1@centos52 ~]$ chmod 600 .ssh/authorized_keys

 

 

秘密鍵を接続先(CentOS)から接続元(Windows)へ渡す。

 

「id_rsa」ファイルをWindowsへコピーします。
ネットワークを経由せずに記憶媒体で送る方が安全ではあります。
今回はSSH(パスワード認証)で「id_rsa」ファイルをコピーしました。
先ほどから接続していたTeraTermのメニューの「ファイル」→
「SSH SCP」から「id_rsa」ファイルをコピーします。

 

コピーし終わったら接続先(CentOS SSHサーバ)内の「id_rsa」は削除しておきます。
残りの「id_rsa.pub」の扱いについては、他のSSHサーバでも流用しないのであれば削除で
良いかと思います。

 

 

Windowsから公開鍵認証方式にてSSH接続

 

SSH接続ソフトはTera Termを使用しました。

 

Tera Term(UTF-8やSSH/SSH2に対応した「Tera Term Pro」の拡張版)ダウンロードページ

 

接続先のIPアドレスを入力し、SSH2を選択して「OK」をクリックします。
クリックした後、5秒くらい待つと初回接続時はknown_hostsファイルへ
登録するかを確認してくるので承認して下さい。

 

 

キーを作成したユーザー名、作成した際のパスフレーズ、RSA鍵の場所を
指定し「OK」をクリックします。

 

 

ログイン出来ました。

 

 

 

B. 接続先(SSHサーバ)、接続元(SSHクライアント)共にCentOS5_2の場合

接続元でキーペアを作成し、公開鍵を接続先へ渡す方法です。

 

事前設定

はじめに接続元でSSH接続用にユーザーを作成します。

[root@centos52_NO2 ~]# useradd user5
[root@centos52_NO2 ~]# passwd user5

 

ユーザーをuser5へ切り替えます。

[root@centos52_NO2 ~]# su user5

 

 

接続元で公開鍵/秘密鍵ペアの作成

 

[user5@centos52_NO2 ~]$ ssh-keygen -t rsa

※~/.sshディレクトリが作成され、そこに2つの鍵ファイルが作成されます。
パスフレーズは1~4文字では弾かれるようです。

 

2つのファイルが作成されたことを確認します。
「id_rsa」が秘密鍵、「id_rsa.pub」が公開鍵です。

 

[user5@centos52_NO2 ~]$ ls ~/.ssh
id_rsa
id_rsa.pub

 

 

公開鍵を接続元から接続先へ渡す。

「id_rsa.pub」の方を接続先へ送ります。
今回はファイル共有で接続先の /home/user5/ へ送りました。
送った後の接続元の「id_rsa.pub」は削除しておきます。

 

※SCPコマンドで送る場合

接続先の/etc/ssh/sshd_configファイルをviエディタで開き、

PasswordAuthentication yes

に編集します。

 

その後接続元から接続先へSCPで送ります。

[user5@centos52_NO2 ~]$ scp .ssh/id_rsa.pub 192.168.179.128:/home/user5/

 

「The authenticity of host........ 」と表出され、
承認すると「known_hosts」が作成されます。

 

 

 

受領した公開鍵を公開鍵リストに追加

 

接続先での操作に移ります。
接続先でも同じ名前のユーザーを作成します。

 

[root@centos52 ~]# useradd user5
[root@centos52 ~]# passwd user5

 

ユーザーをuser5へ切り替えます。

[root@centos52 ~]# su user5

 

ホームディレクトリ直下に「.ssh」ファイルを作成します。

[user5@centos52 ~]$ mkdir .ssh

 

「.ssh」ファイルの権限を700にします。

[user5@centos52 ~]$ chmod 700 .ssh

 

接続元から貰った「id_rsa.pub」の内容を「authorized_keys」という
名前の新規ファイルへ入れこみます。
教科書的に言えば、「接続元で生成した公開鍵を接続先の公開鍵リストに追加します。」

[user5@centos52 ~]$ touch /home/user1/.ssh/authorized_keys
[user5@centos52 ~]$ cd /home/user1
[user5@centos52 ~]$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys

 

※「authorized_keys」には複数の公開鍵の内容を入れられるため
今後追記することも想定してか、初回から「>>」を使用するのが一般的
のようです。

 

※RSA公開鍵を使用する場合は、RSA公開鍵の内容を「authorized_keys」 に入れ、
DSA公開鍵を使用する場合は、DSA公開鍵の内容を「authorized_keys2」 に入れます。

 

「authorized_keys」のパーミッションを600に設定します。

[user5@centos52 ~]$ chmod 600 .ssh/authorized_keys

 

 

接続先でsshd_configの編集

 

rootユーザーへ変更します。

 

sshd_configのバックアップを取っておきます。

[root@centos52 ~]# cp -a /etc/ssh/sshd_config /etc/ssh/sshd_config_old

※-aオプションの意味は、「できるだけ属性や構造を保持する。」

 

SSHの設定をするためにviエディタを使用してsshd_configを編集します。

[root@centos52 ~]# vi /etc/ssh/sshd_config

 

以下の4点を編集しました。

 

①rootログインを拒否する

#PermitRootLogin yes
PermitRootLogin no

 

②空パスワードでのログイン禁止にする

#PermitEmptyPasswords no
PermitEmptyPasswords no

 

③パスワードでのログインは拒否する

PasswordAuthentication yes

PasswordAuthentication no

へ変更しました。

 

④公開鍵認証方式を使用する

#PubkeyAuthentication yes

PubkeyAuthentication yes

へ変更しました。

 

編集後、sshdサービスを再起動します。

[root@centos52 ~]# /etc/rc.d/init.d/sshd restart

 

 

接続元から公開鍵認証方式にてSSH接続

接続元の操作に移ります。

 

「ssh 接続先のIPアドレス」を入力します。

[user5@centos52_NO2 .ssh]$ ssh 192.168.179.128

 

※入力した時点で、万一「.ssh」ディレクトリに
秘密鍵「id_rsa」が無い場合はログインできません。

[user5@centos52_NO2 .ssh]$ ssh 192.168.179.128

Permission denied (publickey,gssapi-with-mic).

 

通常は以下のように聞かれるので「yes」と入力します。

※入力した時点で「.ssh」ディレクトリの中に「known_hosts」ファイルが作成されます。
※「.ssh」ディレクトリの中に「known_hosts」が作成されれば次回からは聞かれません。

 

The authenticity of host ,192.168.179.128 (192.168.179.128), can,t be established.
RSA key fingerprint is f3:6f:b3:99:4b:db:29:f1:66:72:ea:b4:3b:92:93:08.
Are you sure you want to continue connecting (yes/no)? yes

 

以下のように聞かれるのでパスフレーズを入力します。

Warning: Permanently added ,192.168.179.128, (RSA) to the list of known hosts.
Enter passphrase for key ,/home/user5/.ssh/id_rsa,:

 

ログインできました。

Last login: Sat Sep 4 22:31:21 2010 from 192.168.179.129

 

パスフレーズの入力を省く方法は以下です。
※通常ユーザーでは実行不可でした。

eval `ssh-agent`

 

ssh-add ~/.ssh/id_rsa

 

ssh-agentについては以下のサイトが詳しいです。