0

ssh接続 鍵認証 — 公開鍵はサーバ側~/.ssh 。秘密鍵はクライアント~/.ssh/configで管理し、セキュアで簡略したssh接続を実現する —

新人さんの流入の多い時期。
備忘を兼ね、纏めました。

a
[2016/03/09 更新]

デフォルトではssh接続は公開鍵認証ではなく、パスワード認証されるよう設定されています。
この状態では、パスワードを知っているサーバーに誰でもアクセス出来、プロダクト環境では危険です。

以降の操作において、コマンド窓は下記で統一してあります。

接続元でコマンド投入→ 薄いグレーの背景
接続先でコマンド投入→ 濃いグレーの背景

■クライアント(接続元)で鍵を作成
まず、クライアント(接続要求)側で鍵を作ります(例では、id_rsa_scps-ishikari-seagrape というRSA鍵を作成)

$pwd
/Users/updeepdj/.ssh
$ ssh-keygen -f id_rsa_scps-ishikari-seagrape -t rsa
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_rsa_scps-ishikari-seagrape.
Your public key has been saved in id_rsa_scps-ishikari-seagrape.pub.
The key fingerprint is:
SHA256:aqMATv92Kzh1jBlyyavZjCqfFzqCVxt56SqXlpEjrNM updeepdj@hachimjp-mbp.local
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|                 |
|    . .          |
|   . =           |
|.o  oo*.S        |
|+++++++++        |
|.+.=O@=          |
|* EOOB.o         |
|.*+*=oo..        |
+----[SHA256]-----+

ssh-keygen:Windowsの場合はCygwinを使えば作成できます。
-f オプション
鍵の名前を指定します。指定を省略するとid_xxx、id_xxx.pubと言う名前で鍵が生成されます。

-tオプション
鍵の種類を指定します。DSA鍵を作成する場合は、-tの後にdsaをつけます。

■ホームフォルダ配下に .ssh フォルダが作成され、以下のような鍵が作成されます。

$ ll ~/.ssh| grep scps
-rw-r--r--  1 updeepdj  staff    409  3  9 15:39 id_rsa_scps-ishikari-seagrape.pub	公開鍵
-rw-------  1 updeepdj  staff   1675  3  9 15:39 id_rsa_scps-ishikari-seagrape		秘密鍵

→ id_rsa_scps-ishikari-seagrape
 秘密鍵です。認証時に使うため、クライアント(接続元)に保存します。
→ id_rsa_scps-ishikari-seagrape.pub
 公開鍵です。サーバ側に配置し、鍵認証でのリモートログオンが可能になります。

鍵を接続先サーバに登録

その前に

接続先ホストに ~/.sshディレクトリがない場合、mkdir -m 700 ~/.ssh で作成しておいてください。

scpコマンドで公開鍵(.pubファイル)を転送します。

$ scp ~/.ssh/id_rsa_scps-ishikari-seagrape.pub hachim@接続先ホスト:~/.ssh
192.168.1.100 ‘s password:
id_rsa_scps-ishikari-seagrape.pub      100%   16   0.0 KB/s   00:00

sshでリモートサーバへ接続

$ ssh -l hachim 接続先ホスト
hachim@接続先ホスト ‘s password:(パスワードを入力)
Last login: Sat Apr 16 16:26:25 2015 from 192.168.1.55
$

authorized_keysというファイルに今回追加する公開鍵を追記します。

$ pwd
/home/hachim/.ssh
$ cat ~/.ssh/id_rsascps-ishikari-seagrape.pub >> ~/.ssh/authorized_keys

authorized_keysに実行権限を600を付与します。
$ chmod 600 ~/.ssh/authorized_keys

scpでもってきた公開鍵(.pub)は削除します。

$ rm ~/.ssh/id_rsa_scps-ishikari-seagrape.pub
$ ll ~/.ssh/
合計 4
-rw------- 1 hachim hachim 409  3月  9 15:45 2016 authorized_keys

いったんログアウトしてログインしてみましょう。

$ exit
Connection to dev.hachim.jp closed.
$ ssh -i ~/.ssh/id_rsa_scps-ishikari-seagrape hachim@[HOStNAME or IP ADDRESSS]
Last login: Sat Apr 16 16:27:00 2015 from 192.168.1.55      ←成功
$

設定を間違っていなければ、パスワード無しで認証出来るようになったはずですが。。

毎回、鍵指定はめんどくさい。。

鍵認証部分の自動化

接続元:~/.ssh/config で接続先の秘密鍵を管理

ここにssh接続先のホスト情報追記し接続簡略化できます。

$ cat ~/.ssh/config | grep scps -A5
HOST scps          ←ホスト名をつける
HostName xx.xx.xx.xx  ←接続先IP
Port 22           ←接続先SSHポート番号
User hachim       ←接続ユーザ
identityFile ~/.ssh/id_rsa_scps-ishikari-seagrape ←本人であることを証明する本人しか持ち得ない秘密鍵の格納先

接続確認

$ ssh scps
Last login: Wed Mar  9 16:17:10 2016 from p111061-ipngn4501 minatoku.tokyo.ocn.ne.jp 

←OK!!! [hachim@seagrape ~]$

最後にセキュリティ強度を上げたい場合

パスワード認証を不可にし鍵認証のみとしたい場合は、
/etc/ssh/sshd_configファイルに下記のとおり、
書きます。(PJのセキュリティ要件をご確認ください)

# vi /etc/ssh/sshd_config
PassfwordAuthentication yes
↓
PasswordAuthentication no

# service sshd restart
sshd を再読み込み中:                                       [  OK  ]

以上です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です