• Top
  • What's New
  • Command
  • Basic
  • Server
  • Security
  • Conf
  • tools
  • etc
  • blog
  • Link
  • サイトについて
  • Mail
INDEX /  TCPWrapper /  xinetd /  ssh / 
最終更新日 2005/05/17  

SSH(Secure SHell)


SSHとは
SSHの主な機能
SSHのインストール
SSHの制御パラメータ
SSHの起動・接続確認
SSHの認証方式
SSHの設定ファイル
SSHの公開鍵認証

SSHとは

GNU/Linuxシステムの特徴としてマルチユーザが挙げられます。 マルチ・ユーザは、一台のGNU/Linuxのマシンを同時に複数のユーザが使用できることを言います。
複数のユーザがネットワークを経由して遠隔(リモート)操作をすることができます。
このリモート操作をする場合、従来までは、「telnet」「rlogin」などが利用されてきました。
しかし、telnetなどで通信を行うとデータは平文で流れます。平文で流れると「盗聴」や「改ざん」にあう危険性がでてきます。
LAN内ならまだしも、インターネット上のサーバにtelnetを使ってログインし利用するのはあまりにも危険です。
一方、「SSH」はtelnetと同様リモート操作のためのサーバですが、認証と通信を暗号化できるために危険はありません。
GNU/LinuxシステムでSSHを利用する際は、「OpenSSH」を使用します。BSDライセンスで提供されています。
ページトップへTop

SSHの主な機能

SSHは単なる暗号化だけではなく、いろいろな機能を装備しています。

SSHの主な機能
機能 内容
暗号化機能RSA,EDS,3DES,Blowfishなどのアルゴリズムを利用可能
認証機能共通鍵、公開鍵、ワンタイムパスワード、Kerberos認証
ポート転送機能従来のプロトコル(telnet,pop)などの通信を暗号化
X11転送機能X Window Systemの通信を暗号化
SFTP機能SFTPのサーバ・クライアント機能をサポート

ページトップへTop

SSHのインストール

SSHは、OpenSSHを利用していますがデフォルトでパッケージはインストール済みです。インストールの必要はありません。

SSH関連パッケージ
パッケージ 内容
opensshssh-keygen,ssh-keysignユーティリティ
openssh-clientsscp,sftp,slogin,ssh,ssh-keyscanなどのクライアントユーティリティ
openssh-serversshd,sftp-serverのサーバソフトウェア
openssh-askpassssh-askpass,X11-ssh-askpassなど
openssh-askpass-gnomegnome-ssh-askpassなど

ページトップへTop

SSHの制御パラメータ

SSHの制御は、「service」コマンド又は「init」スクリプトを使用します。
起動  # /service sshd start
停止  # /service sshd stop
再起動 # /service sshd restart

SSH制御のパラメータ
パラメータ 動作
startsshdの起動
stopsshdの停止
restartsshdの再起動
reloadsshdの設定ファイルの再読み込み
condrestartsshdのプロセスが動作していれば再起動
statussshdの状態を表示(簡易)

ページトップへTop

SSHの起動・接続確認

SSHはデフォルトでインストールされ、なおかつ自動起動の設定になってます。スタンドアローンで起動しています。
SSHのプロセスの確認を「ps」コマンドを用いて行います。
「ps aux」ですべてのプロセスを表示して、その結果をパイプで「grep ssh」コマンドに渡します。
# ps aux|grep ssh
root      2936  0.0  0.3  4312 1632 ?        Ss   Feb24   0:01 /usr/sbin/sshd
root     25822  0.0  0.1  5704  760 pts/0    S+   20:53   0:00 grep ssh

プロセスの起動が確認できたら、実際のSSHで接続できるか確認をします。
コマンドから「# ssh ユーザ名@ホスト名」と入力します。初めて接続する場合は確認のメッセージが表示されます。
「yes」を選択を選択するとパスワードを尋ねられますので入力します。接続完了です。

SSHの接続確認(パスワード認証)
# ssh user@localhost
The authenticity of host '172.16.0.42 (172.16.0.42)' can't be established.
RSA key fingerprint is 5e:d2:04:7f:61:93:a3:13:66:bb:c2:dd:7e:7e:31:1d.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.0.42' (RSA) to the list of known hosts.
user@localhost's password:
[user@localhost ~]$ 

ページトップへTop

SSHの認証方式

SSHを用いた認証の流れは、最初に「ホスト認証」が行われ、その後に「ユーザ認証」が行われます。
ホスト認証では、接続先のホストが正しいかどうか"公開鍵方式"で行われます。認証成功後は"共通鍵方式"で暗号化通信を行います。
「ホスト認証」が終了すると、次に「ユーザ認証」を行います。ユーザ認証では、ユーザ名とパスワードを使った「パスワード認証」(telnetやftpの認証と同じだが通信は暗号化されている)と、公開鍵を使用した「公開鍵暗号認証」があります。

認証方法 説明
ホスト認証接続先ホストが正しいか確認する(自動)
ユーザ認証パスワード認証もしくは公開鍵認証を使った認証方法
パスワード認証GNU/Linuxのユーザ名とパスワードを使った認証
公開鍵認証秘密鍵と公開鍵を使った認証方法

ページトップへTop

SSHの設定ファイル

SSHの設定ファイルの設定ファイルは、「/etc/ssh/sshd_config」になります。
sshd_configを編集することによって、ユーザ認証を行ったり、公開鍵を使用した認証のみ許可をしたり、rootユーザのログインを許可しないなどのセキュリティ関連の設定を施すことができます。
様々な設定項目がありますが、パスワード認証を利用する場合は、変更する必要がありません。
しかし、セキュリティを考えて変更する箇所はあります。(後述)

SSHの設定ファイルの主な項目
項目 説明
PortSSHサーバが使用するポート番号を指定(デフォルトは22番ポート
ProtocolSSHのバージョンを指定(通常はバージョン2を使用)
ListenAddress接続を許可するネットワークアドレスを記述
SyslogFacility シスログに出力するタイプを指定
PermitRootLogin rootでログインできるかどうかの設定
AuthorizedKeysFile 公開鍵方式を利用した場合の鍵の種類を記述
PasswordAuthentication パスワード認証を許可するかどうかを記述

ページトップへTop

SSHの公開鍵認証

秘密鍵と公開鍵を利用した公開鍵認証方式は、設定ファイル「ssh_config」を編集とペアキーの作成です。
サーバに公開鍵を置き、クライアントには秘密鍵を設置します。この秘密鍵と公開鍵はセットになっており、サーバにある公開鍵と セットの秘密鍵がクライアントにないとアクセスすることはできません。

設定ファイルの編集(公開鍵暗号方式)

設定ファイルである「sshd_config」を編集します。
パスワード認証の禁止、公開公開鍵暗号方式の許可、rootログインの禁止などの設定をします。

最低限変更する箇所
 1: Port 22
 2: Protocol 2
 3: PermitRootLogin no
 4: PasswordAuthentication no


  1. ポート番号を22番に指定
  2. 使用するSSHのバージョンをバージョン2に固定
  3. rootユーザでのログインを禁止
  4. パスワード認証を禁止
変更が終わればSSHサーバを再起動します。

鍵ペアの作成(サーバ側)

鍵ペアの作成は、「ssh-keygen」コマンドを使用します。オプション「-t」の後には鍵の種類を入力します。
「ssh-keygen」コマンドを入力すると、最初に鍵ペアを保存する場所を尋ねてきます。デフォルトでかまわなければエンターを押します。
次にパスフレーズ(スペースなどを含めることができる)を入力します。
すると自動的にホームディレクトリの下に隠しディレクトリ「.ssh」が作成され、その中に公開鍵を秘密鍵が保存されます。

 $ ssh-keygen -t rsa
 Generating public/private rsa key pair.
 Enter file in which to save the key (/home/user/.ssh/id_rsa):
 Created directory '/home/user/.ssh'.
 Enter passphrase (empty for no passphrase):
 Enter same passphrase again:
 Your identification has been saved in /home/user/.ssh/id_rsa.
 Your public key has been saved in /home/user/.ssh/id_rsa.pub.
 The key fingerprint is:
 37:c3:b2:79:8e:b6:59:e9:34:03:d7:66:b4:c8:7e:4d user@fedora-core3


「ssh」ディレクトリの中に作成された、「id_rsa.pub」が公開鍵、「id_rsa」が秘密鍵になります。

$ ls -l .ssh/
合計 8
-rw-------  1 mukuan mukuan 963  5月 13 14:34 id_rsa
-rw-r--r--  1 mukuan mukuan 227  5月 13 14:34 id_rsa.pub
 


秘密鍵である「id_rsa」は、クライアントマシンに配置します。プロッピー経由やSCPなどの安全な方法を使います。
公開鍵である「id_rsa.pub」は、「authorized_keys」をファイル名に登録をする必要があります。
また、「.ssh」ディレクトリはパーミッションを"700"に、「authorized_keys」ファイル"600"に設定をします。

$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys
$ chmod 700 .ssh/
$ chmod 600 .ssh/authorized_keys


クライアントの設定(クライアント)

クライアントに秘密鍵をコピーしてきたら、ログインするとこにその秘密鍵を認識するように設定をします。
ホームディレクトリの下に隠しディレクトリ「.ssh」を作成し、パーミッションを"700"にします。
次のその「.ssh」の中に秘密鍵である「id_rsa」を配置し、パーミッションを"600"にします。
サーバ側のパーミッション構成と同じです。

$ mkdir .ssh
chmod 700 .ssh/
cp id_rsa .ssh/.
chmod 600 .ssh/id_rsa


接続確認

秘密鍵の設定が終わったら接続確認を行います。
初めての接続の場合は、ホスト確認が行われますので「yes」を入力します。 すると"Enter passphrase for key '/home/test/.ssh/id_rsa':"と表示されますので、鍵ペアを作成した際に入力したパスフレーズを入力しログインします。
$ ssh user@172.16.1.124
The authenticity of host '172.16.1.124 (172.16.1.124)' can't be established.
RSA key fingerprint is a7:f5:78:fd:5a:60:79:25:cc:15:71:9d:0b:7d:c9:f5.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.1.124' (RSA) to the list of known hosts.
Enter passphrase for key '/home/test/.ssh/id_rsa':
Last login: Fri May 13 15:54:22 2005 from 172.16.0.2

ページトップへTop

 
Copyright (c) 2005 Mukuan All Rights Reserved.