SSHで快適リモート操作
我が家には通称「サーバルーム」と呼ばれる部屋があったりします。
……要するに納戸のことなんですけどね。
サーバルームというからには当然サーバが数台設置してあるわけですよ。
ぶっちゃけファンの回る音とかレーザープリンタの稼働音 (特にコミケ前) とかうるさいので、サーバルームというよりは隔離室の様相を呈していますがね。
さて、サーバの設定をする度にサーバルームに出入りするのは面倒です。
そんなときは SSH (Secure Shell) の設定を行い、Windows や Mac など、使い慣れたクライアントPCからリモート操作できるようにしましょう。
OpenSSH のインストール
不要です。FreeBSD には標準で OpenSSH がインストールされています。
下記の設定を行うだけで、暗号化されたリモート接続が可能です。
ユーザーの追加
root でログインさせるのはリスクが高いので、adduser コマンドで一般ユーザーを追加します。
# adduser
Username: ユーザー名
Full name: 氏名
Uid (Leave empty for default): (ユーザーID: デフォルトの自動採番で良い)
Login group [ユーザー名]: 所属グループ (デフォルトはユーザー名と同じグループ名)
Login group is グループ名. Invite ユーザー名 into other groups? []: wheel
(追加グループ: root にスイッチできるのは wheel 所属ユーザーのみ)
Login class [default]: (ログインクラス: デフォルトのままで良い)
Shell (sh csh tcsh nologin) [sh]: tcsh (ログインシェル: お好みで)
Home directory [/home/ユーザー名]: (ホームディレクトリ: デフォルトのままで良い)
Home directory permissions (Leave empty for default): (ホームディレクトリのパーミッション: デフォルトのままで良い)
Use password-based authentication? [yes]: yes (パスワード認証を行う)
Use an empty password? (yes/no) [no]: no (パスワード無しは許可しない)
Use a random password? (yes/no) [no]: no (パスワードを自動生成しない)
Enter password: パスワード (画面には表示されない)
Enter password again: パスワード (再入力: 画面には表示されない)
Lock out the account after creation? [no]: no (アカウントをロックしない)
ここまで入力すると、以下のような確認メッセージが表示されます。
入力内容を確認したら、「yes」と入力してください。
Username : ユーザー名
Password : *****
Full Name : 氏名
Uid : 1001 (自動採番された値)
Class :
Groups : グループ名 wheel (← wheel に所属していることを確認)
Home : /home/ユーザー名
Home Mode :
Shell : ログインシェル
Locked : no
OK? (yes/no): yes
これでユーザーが作成されました。
続けて別のアカウントを作成するか聞かれますが、ここでは「no」と答えて終了します。
sshd の設定
続いて sshd (SSHデーモン) の設定を行います。
テキストエディタで /etc/ssh/sshd_config を編集します。(ssh_config ではありません)
家庭内LANからしか接続しないのであまり意味はありませんが、セキュリティを保つために秘密鍵 / 公開鍵認証のみ許可する設定にしています。
「そこまでやらんでもいいよ~」という方は、下記のコメントを見ながら設定を変えてください。
/etc/ssh/sshd_config
# sshd_config: sshd 設定ファイル
#
# 待ち受けポート番号
Port 22
# SSH プロトコルバージョン2を使用
Protocol 2
# root ログインを許可しない
PermitRootLogin no
# 秘密鍵 / 公開鍵認証を行う
PubkeyAuthentication yes
# 公開鍵認証ファイル (ユーザーのホームディレクトリからの相対パス)
AuthorizedKeysFile .ssh/authorized_keys
# デフォルトのパスワード認証は使わない
PasswordAuthentication no
# 空のパスワードを許可しない
PermitEmptyPasswords no
# チャレンジレスポンス認証は使わない
ChallengeResponseAuthentication no
# DNS 逆引きによるリモートホスト確認は行わない
UseDNS no
# SFTP デーモンサブシステム (使わないならコメントアウト)
Subsystem sftp /usr/libexec/sftp-server
次に再起動時に自動で sshd を起動するよう、/etc/rc.conf に以下の内容を追加します。
/etc/rc.conf
# sshd: SSH リモート接続サーバ
sshd_enable="YES"
sshd の起動
サーバを再起動させるか、以下のコマンドを入力すると、sshd が起動します。
# /etc/rc.d/sshd start
公開鍵 / 秘密鍵ファイルの生成
さて、ここからは先ほど作ったユーザーで作業します。
exit コマンドでログアウトしてから、ユーザー名とパスワードを入力してログインし直してください。
では、以下のコマンドを入力して公開鍵 / 秘密鍵ファイルを生成します。
> ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ユーザー名/.ssh/id_rsa): キーファイルの保存場所 (デフォルトのままで良い)
Created directory '/home/ユーザー名/.ssh'.
Enter passphrase (empty for no passphrase): パスワード
Enter same passphrase again: パスワード再入力
これで /home/ユーザー名/.ssh ディレクトリに、以下2つのファイルが生成されるはずです。
- id_rsa: 秘密鍵ファイル。このファイルをクライアントPCへコピーします。
- id_rsa.pub: 公開鍵ファイル。以下の手順で authorized_keys に登録します。
公開鍵ファイルを authorized_keys へ登録
> cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
> chmod 700 ~/.ssh
> chmod 600 ~/.ssh/*
秘密鍵ファイルをクライアントPCへコピー
秘密鍵ファイルはクライアント側にコピーする必要があります。
フロッピーディスク、USBメモリ、デジカメ用のSDカードやコンパクトフラッシュカード、CD-R、DVD-Rなど、なんでもいいのでメディアに書き込んで自分のPCに id_rsa ファイルをコピーしてください。
ルータのポートを開かない限りは安全ですが、ネットワーク経由で渡すのはあまりよろしくないかと。
UNIX系クライアントから接続
UNIX系PC (FreeBSD、Linux、Mac OS X など) から接続する場合、~/.ssh/id_rsa に秘密鍵を保存します。
秘密鍵を保存したら ssh コマンドで接続します。
> ssh ユーザー名@ホストのIPアドレス、またはホスト名
初回は接続許可を求められるので、「yes」と答えます。
パスワードを入力すれば接続完了です。
Windowsから接続
Tera Term を使う場合を例にとります。
Tera Term を起動し、ホストのIPアドレスまたはホスト名を指定し、サービスは「SSH」を、SSHバージョンは「SSH2」を指定してOKをクリックします。
認証ダイアログでユーザー名とパスワードを入力し、「RSA/DSA鍵を使う」にチェックを入れたら、id_rsa ファイルを指定します。
最後にOKボタンをクリックすれば接続完了です。
関連記事
- サーバ移転のお知らせ - 2011年11月23日 (水)
- Apache + Passenger で作る Redmine 環境 - 2011年5月13日 (金)
- XHTML5 移行メモ - 2011年2月10日 (木)
- 内部向けDNSの設定 - 2010年9月29日 (水)
- UTF-8 日本語環境の構築 - 2010年9月26日 (日)
トラックバック
コメント
コメントはまだありません。