sshdは攻撃されやすいので、できるだけ標準状態からport及び設定を見直すことを推奨。ここではパスワードを使わず公開鍵でsshを利用する。ここではCentOS5サーバの初期状態から設定追加する状況を想定した手順を書いておく。
1)自マシンで鍵を作成する(MacOSXをクライアントとする)
- $ ssh-keygen -t rsa -C "myaddress@example.com"
パスワード入力時にエンターを押すことでパスワード不要の鍵が作成可能
作成が完了すると以下に必要ファイルが作成される
~/.ssh/id_rsa(秘密鍵)
~/.ssh/id_rsa.pub(公開鍵)
上記はRSA鍵の場合。DSA鍵を作成する時は以下。
DSAではid_dsa,id_dsa.pubのファイルが作成される。
- $ ssh-keygen -t dsa -C "myaddress@example.com"
自アドレスを入力するのは後からキーの持ち主を判別するため。
実際に入力するテキストはなんでもOK。
2)公開鍵をサーバに送信する
リモートサーバにid_rsa.pubを送っておく
- $ scp ~/.ssh/id_rsa.pub root@xxx.xxx.xxx.xxx:/tmp
3)rootでサーバにログインしてsshdの設定を変更する
- # vi /etc/ssh/sshd_config
以下の3行を修正
port 10022
PermitEmptyPasswords no
PasswordAuthentication no
4)ssh用アカウント「remoteuser」を作成して公開鍵を登録する
- # adduser remoteuser
- # passwd remoteuser ←パスワード設定する
- # su remoteuser ←ユーザを変更する
- $ cd ~
- $ mkdir .ssh
- $ cat /tmp/id_rsa.pub > .ssh/authorized_keys
- $ chmod 0600 .ssh/authorized_keys
- $ chmod 0700 .ssh
- $ exit
5)iptablesを修正してsshdを再起動する
- # vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 10022 -j ACCEPT 行追加
- # service iptables restart
- # service sshd restart
6)クライアントからsshでアクセスして確認
- $ ssh -p 10022 remoteuser@xxx.xxx.xxx.xxx
うまくいかない時は -vを付けて確認
- $ ssh -v -p 10022 remoteuser@xxx.xxx.xxx.xxx
CentOS5では以下の行はコメントアウトのままで問題ないので外さなくてOK。
#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys
no comment untill now