I-21-8. セキュアシェルの利用、その基本と応用

リモートからの安全なアクセスを実現するSSH (Secure SHell)について解説する。SSHの基本的な動作とOpenSSHの導入、SSHに関する各種の設定などを説明し、さらにSSHの応用としてリモートからのコマンド実行やTCPポートフォワーディングにも言及する。

【学習の要点】

* 現在、Linuxの遠隔操作は、SSHを通じて行うことがほとんどである。

* SSHは暗号化されているからと安堵することなく、適切に設定、運用することがセキュリティ上重要となる。

図I-21-8. 安全なリモートアクセスを提供するSSH

【解説】

1) SSHとは

SSHは、暗号化通信を使ってリモートホストにログインし、各種処理を行うためのツールである。

2) SSHの動作

SSLを使ったWebトランザクションと同様、公開鍵と秘密鍵によって生成される共通鍵で通信を暗号化する。クライアントの認証は、秘密鍵とそのパスフレーズ、または、ユーザ名とそのパスワードによって行う。SSHは、サーバデーモンのsshd、基本的なクライアントであるssh、ファイル転送用途のscpおよびsftp、認証のためのssh-keygen, ssh-agent, ssh-add, ssh-askpassといったツール群で構成される。

3) OpenSSHの導入

OpenSSHはSSHのOSS実装であり、暗号機能はOpenSSLで提供される。多くのLinuxディストリビューションでは、ディストリビューションをインストールした時点でOpenSSL、OpenSSHともインストール済みであり、導入のための作業は不要である。

4) SSHの設定

SSHでは、サーバ用のsshd_config、クライアント用のssh_configファイルにより各種設定を行う。

* sshd_configの主なパラメータ

- Port sshdのTCPポート。

- PermitRootLogin rootログインの可否。セキュリティを考え「No」にする。

- PasswordAuthentication ユーザ名/パスワードによる認証の可否。

* ssh_configの主なパラメータ

- CheckHostIP known_hostsに無いIPアドレスの警告の有無。

- Cipher sshバージョン1で使う暗号の指定。

- Ciphers shhバージョン2で使う暗号の指定。

- PasswordAuthentication ユーザ名/パスワードによる認証の可否。

5) SSHの応用

* リモートからのコマンド実行

sshは一般に「ssh ユーザ名@ホスト」と入力してリモートシェルセッションのために使用するが、「ssh ユーザ名@ホスト」に続けてコマンドを入力することで、リモートからコマンドを直接実行することができる。ただし、対話的入力を必要とするコマンドは使用を避けたほうがよい。

* TCPポートフォワーディングの例

ssh -2 -f mbauer@zippy -L 7777:zippy:110 sleep 600

[Linuxサーバセキュリティ (オライリー・ジャパン2003年発行)より引用、抜粋]

この例では、SSHバージョン2で、zippyホストにmbauerユーザで接続し、「sleep 600」を開始後、sshをバックグランドにフォークさせている。また、ローカルのポート7777をzippyホストのポート110に転送している。この状態で、ローカルでTCPポート7777を使うアプリケーションを実行すると、zippyホストのポート110に転送される。sshプロセスは600秒後に終了を試みるが、フォワードされた接続が閉じるまで終了を待つ。

OSS Course Naviのコンテンツは IPA OSS モデルカリキュラムを基としています。

フォーラム会員企業専用

記事配信

コンテンツ配信

ユーザログイン