不良少年 » FreeBSD »

SSHで快適リモート操作

Atom RSS

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つのファイルが生成されるはずです。

公開鍵ファイルを 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ボタンをクリックすれば接続完了です。

関連記事

トラックバック

コメント

コメントはまだありません。

コメント投稿フォーム

※ スパム防止の為、コメント内に2個以上のリンクがあった場合、サイト管理者 (かのう神路) が承認するまで表示されません。

ページの先頭に戻る