目次

SSH

鍵認証

ssh-keygenコマンドやPuTTYgenで鍵を作成すると、秘密鍵(id_rsa)公開鍵(id_rsa.pub)が作成されます。
公開鍵はログインしたいサーバの公開鍵ファイル(authorized_keys)に登録、クライアントは秘密鍵と作成時に指定したパスフレーズでログイン、となります。

鍵作成と認証

秘密鍵と公開鍵のペアを作成する

以下の手順では、パスフレーズなしでSSH鍵が作成されます。

[root@lv-lvs01 ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 何も入力せずにEnter
Enter same passphrase again: 何も入力せずにEnter
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
ee:47:27:16:77:4a:cc:c8:c7:8e:39:aa:23:e4:75:17 root@lv-lvs01
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|                 |
|         . =     |
|          E B .  |
|        S  X o   |
|    . ... O +    |
|   o . ..= +     |
|    o ... .      |
|     ..o..       |
+-----------------+
[root@lv-lvs01 ~]# ls -al
total 60
dr-xr-x---.  4 root root 4096 Apr 11 06:58 .
dr-xr-xr-x. 24 root root 4096 Apr 11 06:54 ..
...
drwx------   2 root root 4096 Apr 11 06:59 .ssh
[root@lv-lvs01 ~]# cd .ssh
[root@lv-lvs01 .ssh]# ls -al
total 20
drwx------  2 root root 4096 Apr 11 06:59 .
dr-xr-x---. 4 root root 4096 Apr 11 06:58 ..
-rw-------  1 root root 1675 Apr 11 06:59 id_rsa     <= 秘密鍵
-rw-r--r--  1 root root  395 Apr 11 06:59 id_rsa.pub <= 公開鍵

公開鍵ファイルauthorized_keysを作成する

[root@lv-lvs01 .ssh]# mv id_rsa.pub authorized_keys
[root@lv-lvs01 .ssh]# chmod 600 authorized_keys

公開鍵認証を有効にする

[root@lv-lvs01 ~]# vi /etc/ssh/sshd_config

PubkeyAuthentication no
  ↓
PubkeyAuthentication yes

[root@lv-lvs01 ~]# /etc/init.d/sshd restart

クライアント(puttyやWinSCPなど)からログイン

秘密鍵(プライベートキー)にid_rsaを指定する。

-----BEGIN RSA PRIVATE KEY-----
~省略~
-----END RSA PRIVATE KEY-----

パスワード認証を無効にする

鍵認証でログインできることを確認したら、パスワード認証を無効にします。

[root@lv-lvs01 ~]# vi /etc/ssh/sshd_config

PasswordAuthentication yes
ChallengeResponseAuthentication yes
  ↓
PasswordAuthentication no
ChallengeResponseAuthentication no

[root@lv-lvs01 ~]# /etc/init.d/sshd restart

パスフレーズ無し鍵認証でサーバ間移動

鍵認証でログインしたいサーバに秘密鍵をおくる

[root@lv-lvs01 .ssh]# scp -r /root/.ssh ngx01:/root/
root@ngx01's password: 
authorized_keys                                                                    100%  395     0.4KB/s   00:00    
id_rsa                                                                             100% 1675     1.6KB/s   00:00    
[root@lv-lvs01 .ssh]# 

SSHログインを試してパスワードを要求される場合は、SELINUXを確認する

# getenforce 
Enforcing
# setenforce 0

公開鍵をリモートホストに登録

公開鍵をリモートホストのauthorized_keysに追加

ssh-copy-id -i ~/.ssh/id_rsa.pub [[masuda@192.168.1.1]]

【memo】ssh / ssl

Secure Socket Layer (SSL)

Apache暗号化通信など
「認証局」が必要

Secure SHell protocol (SSH)

「認証局」が不要

Secure Copy (SCP)

Secure Shell (ssh) に含まれるsshの機能を使ってセキュリティの高い(セキュアな)ファイル転送を行うコマンドの 1 つ

sshで初回ログイン時に「Are you sure you want to continue connecting (yes/no)? 」を自動処理する

SSH、SCPで初回ログイン時には、以下のようなメッセージが表示されて、yesを入力する必要がある。
これを表示されない(自動処理)ようにする。

# scp /etc/hosts 192.168.10.208:/etc/
The authenticity of host '192.168.10.208 (192.168.10.208)' can't be established.
RSA key fingerprint is 4b:99:f7:72:fd:41:ed:eb:7a:c2:1d:dc:83:47:ea:d1.
Are you sure you want to continue connecting (yes/no)? 

一時的

$ ssh -oStrictHostKeyChecking=no 192.168.10.208
Warning: Permanently added '192.168.10.208' (RSA) to the list of known hosts.

恒久的

$ vi ~/.ssh/config
host *
    StrictHostKeyChecking no

公開鍵のフォーマット

SECSH 形式

---- BEGIN SSH2 PUBLIC KEY ----
Comment: ""
AAAAB3NzaC1yc2EAAAABJQAAAIEAnlSZPvo75cuGUKVVSky8BgLq01Ieplkgizfp
5zyMNA9i8BbjjLKAGgLOW00QAStbfx1Xjr6CHDxKMoaZoiJvzlPgYfQWM5KMKzn0
A5pOq9oRhR9NsCKDSPwgYH+2d70yCgUi7fcZ/dZ9j3lC9cS9KFwZHe4d1KakEaaR
1bNqT2k=
---- END SSH2 PUBLIC KEY ----

OpenSSH 形式

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAnlSZPvo75cuGUKVVSky8BgLq01Ieplkgizfp5zyMNA9i8BbjjLKAGgLOW00QAStbfx1Xjr6CHDxKMoaZoiJvzlPgYfQWM5KMKzn0A5pOq9oRhR9NsCKDSPwgYH+2d70yCgUi7fcZ/dZ9j3lC9cS9KFwZHe4d1KakEaaR1bNqT2k=

型変換

$ ssh-keygen -i -f id_rsa.pub >> ~/.ssh/authorized_keys

実態は、改行を省いているだけ。

パスフレーズの解除

# cd /root/.ssh/
# vi id_rsa.org
~.pemから張り付ける

-----BEGIN RSA PRIVATE KEY-----
~所略~
-----END RSA PRIVATE KEY-----
# openssl rsa -in id_rsa.org -out id_rsa
# chmod 600 id_rsa*

コネクション数の制限・調整

# vi /etc/ssh/sshd_config

> MaxStartups 10:30:100
> MaxStartups 開始数:確率:最大数

10接続までは受け付け、以降は30%の確率で拒否し、100接続を超えると以降は全て拒否。

# /etc/init.d/sshd restart