====== 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