VirtualBoxのCentOSにsshで接続
VirtualBoxにインストールしたCentOSでいろいろ実験するシリーズ。
今回は、sshで接続する設定のメモ。
標準の設定のままでssh
とりあえず、CentOSをインストールしたときの設定のままで、sshで接続。
1.VirtualBoxでポートフォワーディングを設定
※あらかじめ、仮想マシンをシャットダウンしておく
ホストPCで使われてないポートを、ポートフォワーディングを使用してCentOSのポートに割り当て。
とりあえず、ホスト側は2222を使用。ゲスト側は標準のままなので22。
メモ:ポート番号の指定は、本当は49152以上にした方が良いか?
設定が終わったら仮想マシンを起動。
2.ホストPCからsshで接続
ホストPCから、適当なsshクライアントソフトでVirtualBoxの中のCentOSに接続。とりあえず、手元にあったPuTTYで実験してみた。
ホストの指定は「localhost」、ポート番号は2222で接続。初回接続の場合、サーバーを確認するメッセージが出るはずなので了解して続行。
何かやらかしてなければ、そのまま接続できるはず。ユーザー名とパスワードを入力してログイン。
sshで使用するポート番号を変更
仮想マシンで動かすだけなら標準の設定で問題ないけど、ポート番号の変更も実験してみる。
1.ポートフォワーディングの設定を変更
ポートフォワーディングの設定で、CentOS側のポートを別の物に変更。
とりあえず、ホスト側は2222のままで、ゲスト側は10022にしてみた。
2.sshd_configを修正してポート番号を変更
「/etc/ssh/sshd_config」を修正して、以下の行を追加。
Port 10022
3.iptablesの設定を変更
「/etc/sysconfig/iptables」を修正。
22へ通してた部分を10022へ通すように変更。
とりあえず、ここまで作業したところで再起動。
4.適当なクライアントで接続
ホストの指定は「localhost」、ポート番号は2222で前と同じ。問題がなければ普通につながるはず。
これでつながらない場合、あやしいのはこんなところか?
- 仮想マシンを再起動してみる
- VirtualBoxのポートフォワーディングの設定を見直す
- sshd_configの設定を見直す
- iptablesの設定を見直す
- それ以外
いろいろ試してみて、おかしいところを修正。
TCP Wrapperでフィルタリング
仮想マシンで動かすだけなら気にすることはないんだろうけど、ついでに、アクセス制御の設定もやってみる。
1.hosts.denyの設定を変更
「/etc/hosts.deny」を修正して、以下の行を追加。
ALL: ALL
※hosts.denyでは、可能な限り多く拒否するように設定
2.hosts.allowの設定を変更
「/etc/hosts.allow」を修正して、以下の行を追加。
sshd: 10.0.2.0/255.255.255.0
※hosts.allowでは、可能な限り少なく許可するように設定
メモ:どうして、プライベートアドレスがクラスAになってるのか? 要調査。
3.適当なクライアントで接続
hosts.denyやhosts.allowの変更は即座に変更されるようなので、すぐに接続を確認できる。便利。
公開鍵認証を設定
ついでに、公開鍵認証でsshに接続できるように設定。
1.使用する鍵を生成
以下のコマンドで、鍵を作成。
$ ssh-keygen
パスフレーズを聞いてくるので、何も入力せずにリターン。
※セキュリティのことを考えたら、まじめにパスフレーズを入力するべき
2.生成された公開鍵を登録
以下のコマンドで鍵を登録
$ cd ~/.ssh/
$ cat id_rsa.pub >> authorized_keys
$ chmod 600 authorized_keys
3.生成された秘密鍵を取り出し
PCからならWinSCPが楽かな。
4.適当なクライアントで接続
3で取り出した秘密鍵を使うように設定して、sshで接続。ちゃんと設定できてれば、ユーザー名だけでログインできるはず。
※PuTTYで接続する場合、ssh-keygenで生成した秘密鍵を変換する必要があることに注意
sshに関する設定を見直す
標準のままでもそれなりに強固だけど、気にした方が良いところは変更しておく。
それぞれ、「/etc/ssh/sshd_config」の該当する箇所を変更。変更が終わったら、とりあえず再起動で。
rootでのログインを無効にする
sshから直接、rootでのログインを出来ないように設定。
・変更前
#PermitRootLogin yes
・変更後
PermitRootLogin no
パスワードを使ってのログインを無効にする
公開鍵認証方式だけを使ってログインするように設定。これで、秘密鍵が盗まれない限りは大丈夫。
・変更前
PasswordAuthentication yes
・変更後
PasswordAuthentication no
情報元
コラム【Linux道場 ネットワーク編】第6回 - TCPWrappers(hosts.allow,hosts.deny)とSSHの公開鍵認証について
http://www.lpi.or.jp/column/linux/linux_m06.shtml
CentOS6 インストール後の設定 | CentOSサーバー構築マニュアル
http://centos.server-manual.com/centos6_setup.html
WinSCPとは :: WinSCP
http://winscp.net/eng/docs/lang:jp
CentOSをサーバーとして活用するための基本的な設定 - さくらインターネット創業日記
http://tanaka.sakura.ad.jp/archives/001065.html