DebianサーバーでsudoとOpenSSHを設定する

さくらのVPSを借りて、カスタムOSインストールでDebian 6.0を選択した場合、先ず最初にすべきことは、sudoとOpenSSH(Open Secure Shell)のインストールと設定だろう。

sudoのインストールと設定

Debianのインストールが完了後、さくらのVPSのリモートコンソール上からsuコマンドでスーパーユーザーとなり、sudoパッケージをインストールしよう。

# aptitude install sudo

この記事内では、パッケージのインストールや削除にaptitudeコマンドを使用している。aptitudeの代わりにapt-getコマンドを使っても良いが、どちらかに統一して使用した方がよい。aptitudeコマンドは、基本的な機能はapt-getコマンドとほとんど同じだが、removeの際に依存するライブラリが他のパッケージが依存していない場合は、いっしょに削除してくれるというメリットがある。

次に、スーパーユーザーのままで、visudoコマンドを実行。このコマンドは、sudoの設定ファイルである/etc/sudoersをデフォルトのエディタで編集するためのコマンド。普通にテキストエディタで編集するときと違い、終了時に構文上の間違いを指摘してくれる。

Debian 6.0のデフォルトエディタは、nanoを使用。

sudoers_nano

/etc/sudoersファイルの下から3行目あたりに、%sudo ALL=(ALL) ALLという一行があることを確認したら何もせずにnanoを終了。グループsudoにすべての実行権限が付与されていることが分かったので、ユーザーhoge(Debianインストール時に設定したユーザー名)をsudoグループに追加する。

# /usr/sbin/usermod -G sudo hoge

なお、/etc/sudoersに別のグループに実行権限を付与して、そのグループにユーザーhogeを追加することも可能。どんなグループが存在するかは、catコマンドなどで、/etc/groupファイルを開けば確認できる。

sshのインストールとポート番号の変更

sudoコマンドが正常に機能することを確認した後、リモートコンソール上から次の要領でSecure Shellパッケージをインストール。

$ sudo aptitude install ssh

続いて、ローカルのPCのターミナルから次の要領でsshコマンドを打ち込む。

$ ssh ユーザー名@ホスト名

例えば、さくらのVPSホスト名がwww123.sakura.ne.jp、Debianインストール時に設定したユーザー名がhogeの場合、は次のようになる。

$ ssh hoge@www123.sakura.ne.jp

上記のsshコマンドを打ち込んだ直後、パスワードを訊かれる、さくらインターネットから送付されたログイン情報に記載されたパスワードを打ち込む。

ローカルPCのコンソールから無事にログインできたら、先ずはポート番号の変更を行う。viやnanoなど、好みのテキストエディタで/etc/ssh/sshd_configを編集する。

例えば、ボート番号22を4321に変更する場合、該当個所(上から5行目あたり)を次のとおり変更する。

Port 4321

さらにSSH接続でrootに直接ログインすることを禁止しておく。

PermitRootLogin no

以上で、変更を保存して、/etc/ssh/sshd_configの編集を終了し、sshを再起動。

$ sudo /etc/init.d/ssh restart

いったんここでさくらのVPSからログアウト(exitコマンド)して、再度sshでログインする。ポート番号を変更しているので、-pオプションを付与して、ポート番号を指定する。

$ ssh hoge@www123.sakura.ne.jp -p 4321

公開鍵認証方式でのssh接続の設定

続いて、公開鍵認証によるssh接続を設定する。

さくらのVPSにリモートログインしている状態で、ホームディレクトリ内に.sshフォルダを作る。

$ mkdir .ssh

次に、ローカルPCでターミナルから、ssh-keygenコマンドを打ち込む。

$ ssh-keygen
$ Enter file in which to save the key (/home/hoge/.ssh/id_rsa):

デフォルトの秘密鍵のファイル名と場所は、/home/hoge/.ssh/id_rsaとなっているので、このファイル名で問題なければ、何も入力せずにエンターキーを押す。

続いて、パスワードを設定するかどうか問われるので、これは必ず設定しておくこと。

これで、ローカルPCのホームディレクトリに.sshというフォルダが作成され、その中にid_rsaとid_rsa.pubのファイルが作成されていることを確認しておく。id_rsaが秘密鍵で、id_rsa.pubが公開鍵だ。

公開鍵認証方式の場合、ローカルPCに秘密鍵を置き、リモートサーバーに公開鍵を置くことで、安全な通信を実現できる。

公開鍵を送信する場所は、さくらのVPSの.ssh内で、ファイル名はauthorized_keysとしておく。安全に公開鍵を送信するため、scpコマンドを利用する

$ scp -P 4321 .ssh/id_rsa.pub hoge@www123.sakura.ne.jp:~/.ssh/authorized_keys

さくらのVPSからログアウトする前に、/etc/ssh/sshd_configをテキストエディタで開き、次の項目をチェックしておく。

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys

なお、さくらのVPSの.ssh内に作成するファイル名をauthorized_keysとしていたが、上記のAuthorizedKeysFile項目で設定すれば、名称や場所を自由に変更できる。

また、このauthorized_keys(又はAuthorizedKeysFileで定義したファイル名)には、複数の公開鍵を記入できる。

最後に、sshを再起動させれば、設定が完了する。

$ sudo /etc/init.d/ssh restart

次回からのリモートログインは、次のようになる。

$ ssh hoge@www213.sakura.ne.jp -i .ssh/id_rsa -p 4321