開発メモ

開発関係のメモをいろいろと。たぶん。

VirtualBoxのCentOSにsshで接続

VirtualBoxにインストールしたCentOSでいろいろ実験するシリーズ。

今回は、sshで接続する設定のメモ。

標準の設定のままでssh

とりあえず、CentOSをインストールしたときの設定のままで、sshで接続。

1.VirtualBoxでポートフォワーディングを設定

※あらかじめ、仮想マシンをシャットダウンしておく

ホストPCで使われてないポートを、ポートフォワーディングを使用してCentOSのポートに割り当て。

f:id:see_ku:20130521162917p:plain

とりあえず、ホスト側は2222を使用。ゲスト側は標準のままなので22。

f:id:see_ku:20130521163006p:plain

メモ:ポート番号の指定は、本当は49152以上にした方が良いか?

設定が終わったら仮想マシンを起動。

2.ホストPCからsshで接続

ホストPCから、適当なsshクライアントソフトでVirtualBoxの中のCentOSに接続。とりあえず、手元にあったPuTTYで実験してみた。

ホストの指定は「localhost」、ポート番号は2222で接続。初回接続の場合、サーバーを確認するメッセージが出るはずなので了解して続行。

f:id:see_ku:20130521163106p:plain

何かやらかしてなければ、そのまま接続できるはず。ユーザー名とパスワードを入力してログイン。

f:id:see_ku:20130521163321p:plain

sshで使用するポート番号を変更

仮想マシンで動かすだけなら標準の設定で問題ないけど、ポート番号の変更も実験してみる。

1.ポートフォワーディングの設定を変更

ポートフォワーディングの設定で、CentOS側のポートを別の物に変更。

とりあえず、ホスト側は2222のままで、ゲスト側は10022にしてみた。

f:id:see_ku:20130521163808p:plain

2.sshd_configを修正してポート番号を変更

「/etc/ssh/sshd_config」を修正して、以下の行を追加。

Port 10022

3.iptablesの設定を変更

「/etc/sysconfig/iptables」を修正。

22へ通してた部分を10022へ通すように変更。

とりあえず、ここまで作業したところで再起動。

4.適当なクライアントで接続

ホストの指定は「localhost」、ポート番号は2222で前と同じ。問題がなければ普通につながるはず。

これでつながらない場合、あやしいのはこんなところか?

  1. 仮想マシンを再起動してみる
  2. VirtualBoxのポートフォワーディングの設定を見直す
  3. sshd_configの設定を見直す
  4. iptablesの設定を見直す
  5. それ以外

いろいろ試してみて、おかしいところを修正。

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で生成した秘密鍵を変換する必要があることに注意

f:id:see_ku:20130521164027p:plain

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