リモート接続に SSH を使う
サーバ機を外部の端末( PC )から操作する場合に私は Telnet を利用していました。
しかし、Telnet は、ユーザ名やパスワードをはじめ、すべての送受信内容が平文(そのままの文章)でやりとりされる為、
セキュリティ上不安を感じていました。
そこで、すべての送受信内容を暗号化させる為、SSH ( Secure SHell ) の使用を決意いたしました。
最近の Linux (ディストリビューション問わず)であればOpenSSH は標準でインストールされる為、ここではインストール方法は割愛します。
ページ内コンテンツ一覧
では早速、SSH の設定に入って行きます。
エディタで /etc/ssh/sshd_config を開きます。
# vi /etc/ssh/sshd_config開いたら、以下の点を追加・編集して行きます。
# RSA秘密鍵 identityを必須にする( no で“必須”を指定 )
PasswordAuthentication no
# rootでのログインを禁止する
PermitRootLogin no
# パスワード無しのログインを許すか
PermitEmptyPasswords no
# .rhosts等を信用するか(RSA認証付き)
RhostsRSAAuthentication no
# ユーザhogeのみ接続許可をする(不特定多数に接続させない為)
AllowUsers hoge
以上が設定出来たら SSH の再起動を行います。
# /etc/rc.d/init.d/sshd restart sshdを停止中: [ OK ] sshdを起動中: [ OK ]
次に SSH を起動時に自動実行させる為の設定を行います。
これはサーバ機上での作業になります。
root でログインします。
日本語が表示される為、kon を起動させます。
# kon
次に setup コマンドを実行します。
# setup
設定ツールが起動するので、「システムサービス設定」を選択します。
telnetの行を見つけ、telnet と書かれた横の [ ] の欄を空白にします。カーソルを合わせてスペースキーを押せば『*』は消えます。
[ ]telnet
『*』が入っていなかったら、そのままでオッケーです。
これにより、起動時に telnet が自動起動しなくなります。
続いて、sshd を起動するサービスに設定します。
telnet の時と同様に、sshd と書かれた横の[ ] 欄を、今度は『*』にします。
[*]sshd
『*』が入っていたら、そのままでオッケーです。
これにより、起動時に SSH が自動起動するようになる。
最後に設定を保存して終了します。
次に「鍵」を作成します。
次のコマンドを実行して鍵を作って下さい。
$ ssh-keygen -t rsa1
Generating public/private rsa1 key pair.
Enter file in which to save the key (/home/hoge/.ssh/identity):
/home/hoge/.ssh/identity already exists.
Enter passphrase (empty for no passphrase): パスワードを入力します
Enter same passphrase again: パスワードを再入力します
$ cd /home/hoge/.ssh/
次のコピーコマンドがキモになります。必ず実行します。
$ cp identity.pub authorized_keys
指定したユーザのホームディレクトリ内に「 .ssh 」というディレクトリとその中にファイルが2つ生成されます。
(1つコピーしたので、結果的に3つ)
このファイルの中の「 identity 」というファイルは秘密鍵となりますので絶対に他人に知られない様、注意が必要です。
また、クライアント側で必要になりますので、SSH で接続するクライアントに移動しておかなければなりません。
次にクライアント側に SSH で接続する為のソフトをインストールします。
使用するソフトは、「 Tera Term Pro 」と「 TTSSH 」です。
まず、「 Tera Term Pro 」を下記の URL からダウンロードし、インストールします。
http://www.sakurachan.org/soft/teraterm-j/
次に「 TTSSH 」を下記の URL からダウンロードし、展開します。
http://www.sakurachan.org/soft/teraterm-j/ttssh/
TTSH をダウンロードし、展開した全てのファイルは Tera Term Pro をインストールしたディレクトリに移動します。
そして、先ほどの秘密鍵「 identity 」も Tera Term Pro をインストールしたディレクトリに移動します。
TTSH の起動は Tera Term Pro をインストールしたディレクトリ内にある ttssh.exe をクリックし、起動します。
TTSH を起動すると、「 Tera Term:新規接続 」ダイアログが表示されますが、「キャンセル」します。
Teta Term の画面が表示されますので、「設定」をクリックします。
図SSH-001 TTSSH の「設定」を選択
上図( 図SSH-001 )の「@」の「端末」をクリックします。
図SSH-002 @「端末」をクリック
上図( 図SSH-001 )の「A」の「 SSH 認証 」をクリックします。
図SSH-003 A「SSH 認証」をクリック
上図( 図SSH-001 )の「B」の「 TCP/IP 」をクリックします。
図SSH-003 B「TCP/IP」をクリック
最後に、上図( 図SSH-001 )の「C」の「設定の保存」で今までの設定を保存します。
それでは、実際に SSH と鍵を用いて接続してみましょう。
ttssh.exe を起動させます。
「新規接続」ダイアログが表示されますので、以下の様に設定します。
図SSH-004 「新規接続」ダイアログ
次に「 SSH 認証 」ダイアログが表示されますので、以下の様に設定します。
図SSH-005 「SSH認証」ダイアログ
これで「 OK 」をクリックすると、SSH 経由でサーバ機にログイン可能になります。
SSH で接続が可能になった事を確認したら、Telnet サービスを停止させます。
/etc/inetd.conf をエディタで開き、以下の点を編集します。
↓telnet に関する記述をコメントアウトします。
#telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
編集したら、保存し、identd を再起動し、今までの変更点を反映させます。
編集したら、保存し、inetd を再起動し、今までの変更点を反映させます。 2003/07/25 修正
# /etc/rc.d/init.d/identd restart Stopping identd services: [ OK ] Starting identd: [ OK ]正しくは下記のコマンドです。 2003/07/25 修正 # /etc/rc.d/init.d/inet restart Stopping INET services: [ OK ] Starting INET services: [ OK ]
これで、全て完了です。
2003/07/25 追加
「 setup 」コマンドによる telnet の停止は、「 telnet が独立して起動しない為 」の設定です。
この項目の「 inetd 」による telnet の停止は、「 telnet が inetd 経由で起動しない為 」の設定です。
「 inetd 」は複数のポートを監視し、監視しているポート宛てにアクセスがあった場合、該当のサーバを実行するしくみです。
実行されたサーバはクライアントからの接続要求がある間のみ動作する様になっています。