SSH 【Secure Shell】

概要

SSH(Secure Shell)とは、主にLinuxなどのUNIX系OSで利用される、ネットワークを通じて別のコンピュータを安全に遠隔操作するための通信手順(プロトコル)およびソフトウェア(sshコマンドsshデーモンなど)。通信経路が暗号化されるため、インターネットなどを経由しても安全にアクセスすることができる。

オペレーティングシステムOS)を利用者対話的に操作することができる「シェル」(shell)を遠隔から呼び出してネットワークを通じて操作する仕様を定めている。接続後は一般的なUNIX系OSシェルと同じようにコマンドの発行をい、実行結果を文字で受け取ることができる。

公開鍵暗号秘密鍵暗号を組み合わせて通信経路を暗号化し、パスワードなどの認証情報や入力されるコマンド出力された処理結果などをすべて暗号化して送受信する。Telnetなど暗号化の仕組みのないプログラムプロトコルに代わって安全な遠隔操作手段として普及している。

SSH接続で形成された安全な伝送経路を用いてローカル側とリモート側でファイルを複製(送受信)することもできる。標準ではcpコマンドに相当するscpコマンドが提供されるほか、FTPを模して作られた機能が豊富なSFTP(Secure File Transport Protocol/sftpコマンド)も利用できる。

SSHサーバとSSHクライアント

端末側で利用者が操作するソフトウェアを「SSHクライアント」、サーバ側で接続を受け付けるソフトウェアを「SSHサーバ」という。SSHサーバは標準ではTCP22番ポートクライアントの接続を待ち受ける。

SSHクライアントSSHサーバともに様々な種類があるが、両方の機能を実装したオープンソースソフトウェアの「OpenSSH」の人気が高く、特にサーバ実装はこれを用いることが多い。ターミナルソフトなどにもSSHクライアント機能が内蔵されていることが多い。

接続手順

接続に先立ち、クライアントサーバパスワードを登録するか、公開鍵暗号鍵ペアを生成して公開鍵サーバに預ける。サーバ側にも導入時に固有の鍵ペアが生成されており、接続を希望するクライアント公開鍵を渡しておく。

接続時にはまずクライアントが持つサーバ公開鍵を用いて、接続先のサーバがなりすましの偽物でないかを検証する(ホスト認証/サーバ認証)。本物と確認されたらDiffie-Hellman鍵交換などを用いて通信暗号化に用いる共通鍵暗号暗号鍵を共有し、伝送経路の暗号化を開始する。

パスワード認証を選択した場合には、暗号化された伝送経路を用いてパスワードを送信して利用者本人であることを確かめる。公開鍵認証を選択した場合には、クライアントが自らの秘密鍵電子署名を生成してサーバに送付し、サーバ利用者公開鍵で検証して本人かどうか確かめる。

公開鍵認証方式はパスワード認証のようにサーバに保管したパスワードの管理が杜撰で漏洩してしまったり、他のシステムと同じものを使い回してそちらから漏れるといった危険が無いため、利用可能であれば公開鍵認証を使うことが推奨される。

歴史

1980年代からUNIX系OSにはシェルの機能をネットワークを通じて遠隔から利用するrshやrexecなどのいわゆるr系コマンド群が存在したが、暗号化の仕組みが無く、インターネットなどオープン環境で利用するのには適さない問題があった。

1995年、フィンランドのヘルシンキ工科大学(当時)に在籍するタトュ・ウルネン(Tatu Ylönen)氏がSSHの初期のバージョン(SSH-1)を開発した。これはフリーソフトウェアや、氏が創業したSSH Communications Security社の商用ソフトウェア製品などとして広まった。

2006年、SSH-1に発見された保安上の弱点(脆弱性)への対応やセキュリティ機能の強化がわれたSSH-2が開発され、RFC 4253など複数の仕様書によって標準化された。SSH-1とSSH-2は互換性がなく、現在ではSSH-2の方が普及しているが、古いソフトウェアとの互換性のためどちらで通信するか選択できる場合もある。

(2022.5.16更新)

他の辞典による解説 (外部サイト)

この記事を参照している文書など (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。
ホーム画面への追加方法
1.ブラウザの 共有ボタンのアイコン 共有ボタンをタップ
2.メニューの「ホーム画面に追加」をタップ
閉じる