最終更新日 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ライセンスで提供されています。
SSHの主な機能
SSHは単なる暗号化だけではなく、いろいろな機能を装備しています。SSHの主な機能
| 機能 | 内容 |
| 暗号化機能 | RSA,EDS,3DES,Blowfishなどのアルゴリズムを利用可能 |
| 認証機能 | 共通鍵、公開鍵、ワンタイムパスワード、Kerberos認証 |
| ポート転送機能 | 従来のプロトコル(telnet,pop)などの通信を暗号化 |
| X11転送機能 | X Window Systemの通信を暗号化 |
| SFTP機能 | SFTPのサーバ・クライアント機能をサポート |
SSHのインストール
SSHは、OpenSSHを利用していますがデフォルトでパッケージはインストール済みです。インストールの必要はありません。SSH関連パッケージ
| パッケージ | 内容 |
| openssh | ssh-keygen,ssh-keysignユーティリティ |
| openssh-clients | scp,sftp,slogin,ssh,ssh-keyscanなどのクライアントユーティリティ |
| openssh-server | sshd,sftp-serverのサーバソフトウェア |
| openssh-askpass | ssh-askpass,X11-ssh-askpassなど |
| openssh-askpass-gnome | gnome-ssh-askpassなど |
SSHの制御パラメータ
SSHの制御は、「service」コマンド又は「init」スクリプトを使用します。起動 # /service sshd start 停止 # /service sshd stop 再起動 # /service sshd restart |
SSH制御のパラメータ
| パラメータ | 動作 |
| start | sshdの起動 |
| stop | sshdの停止 |
| restart | sshdの再起動 |
| reload | sshdの設定ファイルの再読み込み |
| condrestart | sshdのプロセスが動作していれば再起動 |
| status | sshdの状態を表示(簡易) |
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 ~]$ |
SSHの認証方式
SSHを用いた認証の流れは、最初に「ホスト認証」が行われ、その後に「ユーザ認証」が行われます。ホスト認証では、接続先のホストが正しいかどうか"公開鍵方式"で行われます。認証成功後は"共通鍵方式"で暗号化通信を行います。
「ホスト認証」が終了すると、次に「ユーザ認証」を行います。ユーザ認証では、ユーザ名とパスワードを使った「パスワード認証」(telnetやftpの認証と同じだが通信は暗号化されている)と、公開鍵を使用した「公開鍵暗号認証」があります。
| 認証方法 | 説明 |
| ホスト認証 | 接続先ホストが正しいか確認する(自動) |
| ユーザ認証 | パスワード認証もしくは公開鍵認証を使った認証方法 |
| パスワード認証 | GNU/Linuxのユーザ名とパスワードを使った認証 |
| 公開鍵認証 | 秘密鍵と公開鍵を使った認証方法 |
SSHの設定ファイル
SSHの設定ファイルの設定ファイルは、「/etc/ssh/sshd_config」になります。sshd_configを編集することによって、ユーザ認証を行ったり、公開鍵を使用した認証のみ許可をしたり、rootユーザのログインを許可しないなどのセキュリティ関連の設定を施すことができます。
様々な設定項目がありますが、パスワード認証を利用する場合は、変更する必要がありません。
しかし、セキュリティを考えて変更する箇所はあります。(後述)
SSHの設定ファイルの主な項目
| 項目 | 説明 |
| Port | SSHサーバが使用するポート番号を指定(デフォルトは22番ポート |
| Protocol | SSHのバージョンを指定(通常はバージョン2を使用) |
| ListenAddress | 接続を許可するネットワークアドレスを記述 |
| SyslogFacility | シスログに出力するタイプを指定 |
| PermitRootLogin | rootでログインできるかどうかの設定 |
| AuthorizedKeysFile | 公開鍵方式を利用した場合の鍵の種類を記述 |
| PasswordAuthentication | パスワード認証を許可するかどうかを記述 |
SSHの公開鍵認証
秘密鍵と公開鍵を利用した公開鍵認証方式は、設定ファイル「ssh_config」を編集とペアキーの作成です。サーバに公開鍵を置き、クライアントには秘密鍵を設置します。この秘密鍵と公開鍵はセットになっており、サーバにある公開鍵と セットの秘密鍵がクライアントにないとアクセスすることはできません。
設定ファイルの編集(公開鍵暗号方式)
設定ファイルである「sshd_config」を編集します。パスワード認証の禁止、公開公開鍵暗号方式の許可、rootログインの禁止などの設定をします。
最低限変更する箇所
1: Port 22 2: Protocol 2 3: PermitRootLogin no 4: PasswordAuthentication no |
- ポート番号を22番に指定
- 使用するSSHのバージョンをバージョン2に固定
- rootユーザでのログインを禁止
- パスワード認証を禁止
鍵ペアの作成(サーバ側)
鍵ペアの作成は、「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