まず,ぼやき。LINUXサーバはCUIで行くって一応決めたんだが,やっぱ慣れない。なんか何十年も時代を遡った気分になる。しかし,使い勝手は別にして,セキュリティの点から言うとあんまりいらないものというか,使わなくてすむものは入れないほうがいいんだろう。例えば,BINDだって,うちのレベルだとなければないですむ。
それと,もうひとつ悩んでいるのが,パッケージの利用。表題のSSHだってCentOS6.3標準のパッケージだと,openssh-5.3p1。開発元の最新だと,openssh-6.0p1。Apacheは2.2.15だし,PHPは5.3.3と来る。これまでのポリシーに反するから,やはり,自分でビルドすることに馴染むべきなのかなぁ。でも,Winだと最新バージョンを使うからって,ビルドまではやらないから,ホント馴染みがない。どうしよう。
ところで本題。今のところユーザがrootしかいない。昨今,SSHの接続には,rootを使わないのが主流みたい。というわけで,この際,-gオプション付きでグループ(users)を指定して,一般管理ユーザcentosを作る。ホームディレクトリが一緒に作られるようだ。パスワードも設定しておく。
# useradd -g users centos
# passwd centos
この一般ユーザをsudoで使いたいのだが,Minimalインストールの場合は,sudoそのものがインストールされていないので,これをインストールする。
# yum install sudo
あと,sudoersの編集をする。以下を追加。(注:sudoersファイルって,実は行単位で管理されているようで,追加場所は root の直下でなくて,末尾でも構わないようだ。)
centos ALL=(ALL) ALL
ひとまずログアウト,centosでログイン。プロンプトが# —->> $に変わる。
# exit
login: centos <<—- 作成したユーザ名
Password: <<—- 作成したユーザのパスワードを入力
$ pwd
/home/centos と表示され,ログイン直後はユーザのホームディレクトリにいることが分かる。
$ sudo -l <<—- このユーザのsudo権限を確認(表示結果は,sudo_-l.txt参照)
ところで,CentOS6の練習-#5で,SSHデーモンはデフォルトで動いていることが分かっているので,現時点のバージョンと設定を確認。
$ rpm -q openssh
と問い合わせると,openssh-5.3p1-81.el6.i686が戻ってきた。これは,インストール時と同じである。OpenSSHによれば,現時点の最新バージョンはopenssh-6.0p1なんだが,wikiをうろうろしていたら,Securing OpenSSHの8. Frequently Asked Question (FAQ)にUpstream Vendorが出すセキュリティ・パッチをきっちり当てていれば,無理に最新バージョンにする必要はないと書いてあった。前述のように悩んではいるのだが,独自にビルドしてインストールするのは,もう少しわかってきてからにして,今回はこのままで行くことにした。
さて,設定を弄るにあたってマニュアルを見たいのだが,installed.txtでわかるとおりMinimalでは,Manもインストールされていない。ここで,インストールする。
$ sudo yum install man
$ man sshd_config
で表示されたものを参考にしながら, /etc/ssh/sshd_configを見ていく。これの一番上の方に注釈として,コメントアウトの形で書いてあるのがデフォルトの設定で,アンコメントの分が特別に設定を変えてあるところだと書いてある。ずーっと見ていくと,まず,
- #Port 22 になっているのだが,これを Port xxxxx (0 ~ 65535なら何でもよい。)にする。
ssh のポート22っていうのはWELL KNOWNだから,自分しか使わない接続のポートとしては「変えておいた方が無難だよな」って程度。普通は,0からずっと開いてるポートをなめてくって形だろうから,時間かかったらあきらめてくれることを狙って,大きい数の方がいいのかな。今どき,時間もあんまり関係ないかなぁ。まっ,でも22のままよりはいいだろう。 - Protocol 2(つまり,SSH2)になってて,レガシー(つまり,SSH1)は殺されてるから,O.K.
- #ServerKeyBits 1024 —>> ServerKeyBits 2048
- #PermitRootLogin yes —>> PermitRootLogin no
- #RSAAuthentication yes だから,デフォルトで使えることになっているのだが,
RSAAuthentication yes にして,利用していることを明示しておく。そのほうが,あとで自分が確認するとき,混乱しなくて済む。<<— 設定はデフォルトのままだけど,自分がこれを使うと特に認識したいときは,すべてこの書き方で行く。ということで,
#PubkeyAuthentication yes —>> PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys —>> AuthorizedKeysFile .ssh/authorized_keys - #HostbasedAuthentication no —>> HostbasedAuthentication no
- PasswordAuthentication yes —>> PasswordAuthentication no
#PermitEmptyPasswords no —>> PermitEmptyPasswords no - ChallengeResponseAuthentication no になっているからてるから,O.K.
- GSSAPIAuthentication yes —>> GSSAPIAuthentication no にもどす。ここは,あとで変えるかもしれない。
- X11Forwarding yes —>> X11Forwarding no にもどす。ここも後で変えるかもしれない。
こんな感じかな。これで,
- SSH2 接続。
- 2048ビットのRSA公開鍵・秘密鍵
- 上記鍵ペアのパスフレーズ
を想定した接続になるはず。
$ sudo vi /etc/ssh/sshd_config
で設定を書き換える。
$ which sshd
でsshdの場所を調べる。
$ sudo /usr/sbin/sshd -t
で,テスト。bad configurationが戻ってきたら対処。今回は何も戻ってこないので,次へ進む。
$ sudo service sshd restart
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
が瞬時で戻ってきた。ハヤッ。
SSHのポートを変更したので,ファイアーウォールの設定(/etc/sysconfig/iptables)で,ポート22を上で設定したものに変更する。変更を適用するために,サービスをリスタート。
$ sudo service iptables restart
「2048ビットのRSA公開鍵・秘密鍵」のつもりなので,鍵を用意しなければいけない。ssh-keygenコマンドで,CentOS6上で生成できるようだが,鍵ペアのパスフレーズにかなり長いものを使うつもりなので,入力が不安。まぁ,出来るまで何度でもやればいいようなもんだが……それに,公開鍵・秘密鍵の性質から考えて,クライアント側で生成して,サーバに送るほうが安全だろう。秘密鍵はメールで送るわけにいかないが,公開鍵ならそれもできるわけだし。
どうせWin端末からリモートするから,ターミナルエミュレータとしてTera Termを導入することにした。Tera Termには鍵生成の機能もある。Tera TermはかなりあとまでSSH2やUTF-8に対応していなかったらしいが,現在はサポートするようになり,Tera Termプロジェクトが順調に動いているようなので,PuTTYでなくこちらを使うことにした。
さて,Tera Termを起動して,イントラ内から接続してみよう。
|
図1 |
今回の主たる参照先(上記ですでにリンクを貼っているところ以外)。
「CentOS6の練習-#6(SSHサーバ)。」への2件の返信
もうこの頃からは成長されているかもしれませんが。。
CUIは物凄く柔軟でいいですよww同じく、食わず嫌いしてたのでww
データベースをエクセル(GUI)で扱うか、SQL文(CUI)で扱うかの様な差と思いますよw
通りすがりさん,こんばんは。
いらっしゃいませ。初めまして。
> もうこの頃からは成長されているかもしれませんが。。
そうですね。もう, 2 年たってますから,だいぶましにはなってます(苦笑)。
> 同じく、食わず嫌いしてたのでww
食わず嫌いというよりは,本文にもありますように,「なんか何十年も時代を遡った気分になる」もんですからねぇ。ブラウザも,テキストブラウザに頑固にこだわっていた時代もありますが。
今は, VMWare 上で CentOS6 を弄ってますが, X は入れてます。とはいえ,どうしたって,端末は避けて通れませんね。 CUI でないとできないとか,そのほうが便利ってことも多いですし。
HN からすると,あまりその気はおありでないかもしれませんが,よろしければ,これを機会にちょくちょくおいでください。