SSHのRSA公開鍵認証

ssh-keygenを使えば楽だけれど、AES256で秘密鍵を暗号化したいのでopensslより秘密鍵を作成してみた。

1.1 RSA秘密鍵の生成
2048bitのRSA鍵を作成する。この時、AES256で暗号化する。ファイル名はid_rsaで作成する。
パスフレーズを聞かれるので入力する。
[root@client ~]# mkdir ~/.ssh
[root@client ~]# chmod 700 ~/.ssh
[root@client ~]# openssl genrsa -out ~/.ssh/id_rsa -aes256 2048
Generating RSA private key, 2048 bit long modulus
......................................+++
.............................................................................................+++
e is 65537 (0x10001)
Enter pass phrase for /root/.ssh/id_rsa:
Verifying - Enter pass phrase for /root/.ssh/id_rsa:

1.2 SSH専用公開鍵の生成
公開鍵生成前に秘密鍵の権限を変更する。公開鍵はid_rsa.pubで作成する。
[root@client ~]# chmod 600 ~/.ssh/id_rsa
[root@client ~]# ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub
Enter passphrase:
[root@client ~]# chmod 600 ~/.ssh/id_rsa.pub

参考までに、所有者以外が読めてしまうパーミッションだと警告される。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: id_rsa

公開鍵をログイン対象サーバにファイル名authorized_keysとしてユーザのホームフォルダにコピーする。対象のサーバはSSHポートが20022ポート、ユーザーがuser01、サーバ名がsv.hogehoge.netとする。
[root@client ~]# scp -P 20022 .ssh/id_rsa.pub user01@sv.hogehoge.net:~/authorized_keys
The authenticity of host '[sv.hogehoge.net]:20022 ([xxx.xxx.xxx.xxx]:20022)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[sv.hogehoge.net]:20022,[xxx.xxx.xxx.xxx]:20022' (RSA) to the list of known hosts.
Password:
id_rsa.pub                                                        100%  381     0.4KB/s   00:00

1.3 サーバ側の設定
ログイン対象のサーバ側で、公開鍵認証出来るようにsshdの設定を変更する。
ログイン対象のユーザーにてホームフォルダで公開鍵を指定の場所にて権限等設定する。
[user01@sv ~]$ mkdir ~/.ssh
[user01@sv ~]$ chmod 700 ~/.ssh
[user01@sv ~]$ mv ~/authorized_keys ~/.ssh

次に、rootにてsshd_confの設定変更を行う。この時、rootのログインを禁止する。
また、ログイン確認後にパスワードログインも禁止する。
[user01@sv ~]$ su -
[root@sv ~]# vim /etc/ssh/sshd_config
  PermitRootLogin no
  RSAAuthentication yes
  PubkeyAuthentication yes
  AuthorizedKeysFile      .ssh/authorized_keys
  PasswordAuthentication no  (ログイン確認後)

1.5 秘密鍵を利用してサーバーにログインする
クライアントからRSA公開鍵認証を行う。秘密鍵を指定してサーバにSSH接続する。
この時、秘密鍵のパスフレーズを入力して認証する。
[root@client ~]# ssh -i ~/.ssh/id_rsa user01@sv.hogehoge.net -p 20022
Enter passphrase for key '.ssh/id_rsa':
Last login: Sun Dec 28 21:41:39 2013 from xxx.xxx.xx.jp
[user01@sv ~]$

OpenSSLで自己署名等

2.1 作成したCSRよりX509証明書の作成
[user01@sv ~]# openssl x509 -days 30 -sha512 -req -signkey server.key -in req01.csr -out ~/crt01.crt
Signature ok
subject=/C=JP/O=Home Lab Inc./OU=Home Office/CN=www.network.home
Getting Private key

最終更新:2014年05月29日 02:27