「Secure Shell」の版間の差分

提供: セキュリティ
移動: 案内検索
 
(同じ利用者による、間の8版が非表示)
行1: 行1:
[[ssh]] (Secure_Shell, セキュアシェル) は、認証を含む通信を安全にするための[[プロトコル]]のこと、もしくは、[[ssh]] コマンドのことを指します。
+
[[ssh]] (Secure_Shell, セキュアシェル) は、認証を含む通信を安全にするための[[プロトコル]]のこと、もしくは、[[ssh]] コマンドのことを指します。リモートでログインをして、コマンドを実行したり、ファイルを転送するといったことが実現できます。また、[[ssh]]コマンドのポートフォワーディング機能を使うことで、「通信が暗号化されないサービス」の通信を暗号化できます。[[認証]]は、'''パスワード認証'''、[[公開鍵認証]]、'''ワンタイムパスワード'''などが利用できます。デフォルトでは、[[TCP]]の22番ポートを利用します。[[sshポートフォワーディング]]を利用して、非暗号通信のプログラムの通信経路を暗号化するといった使い方もできます。
  
 
'''読み方'''
 
'''読み方'''
;[[Secure Shell]:せきゅあしぇる
+
;[[Secure Shell]]:せきゅあしぇる
 
;[[ssh]]:えすえすえいち
 
;[[ssh]]:えすえすえいち
  
行8: 行8:
  
 
== 概要 ==
 
== 概要 ==
 +
[[ssh]] は、 telnet や [[rsh]], rlogin といったリモートホストを操作するためのコマンド群を安全にするための代替をして考えれました。
  
[[ssh]] は、 [[telnet]] や [[rsh]], [[rlogin]] といったリモートホストを操作するためのコマンド群を安全にするための代替をして考えれました。
+
telnet や [[ftp]] などは、通信が平文で行われるため、ネットワークに平文で認証に用いるパスワードが流れています。
 
+
[[telnet]] や [[ftp]] などは、通信が平文で行われるため、ネットワークに平文で認証に用いるパスワードが流れています。
+
 
ネットワークを覗き見されることにより、認証情報やデータが盗聴されます。
 
ネットワークを覗き見されることにより、認証情報やデータが盗聴されます。
 +
== SSHのプロトコルバージョン ==
 +
SSHとTLS/SSLは、別物です。
 +
SSHのプロトコルバージョンと[[SSL]]/[[TLS]]のプロトコルバージョンは、別物です。
 +
== バージョン ==
 +
[[ssh]] には、バージョン1とバージョン2の2つのプロトコルが存在します。バージョン1は、脆弱性が発見されているため、推奨されていません。
 +
 +
SSHプロトコルバージョン2(SSH v2)は、SSHプロトコルバージョン1(SSH v1)の欠点を補うために開発されました。
 +
== SSHのポート番号 ==
 +
SSHでは、TCPの22番ポートを利用します。
  
[[ssh]] コマンドの使い方については、 [[ssh]] をご参照下さい。
+
22番ポートは、たびたび、外部からスキャンされて、ログイン試行を繰り返されることがあるため、デフォルトの22番以外のポートを利用する人もいます。
 +
== 暗号方式 ==
 +
[[ssh]] は、[[公開鍵認証]]を用いて、[[共通鍵暗号]]の[[共通鍵]]を暗号化して、[[鍵交換]]を行います。通信自体は、高速な[[共通鍵暗号]]を用います。
 +
== 認証の方式 ==
 +
SSHは、ホスト認証とユーザ認証から成り立っています。
  
== ソフトウェア ==
+
sshサーバ([[sshd]])の設定に依存しますが、以下の[[認証]]が使用できます。
 +
* '''パスワード認証'''
 +
* [[公開鍵認証]]
  
 +
また、[[Pluggable Authentication Modules]](PAM)を使用することで、上記以外の認証を追加できます。たとえば、[[二要素認証]]としてよく利用される'''ワンタイムパスワード'''(OTP)を追加することができます。
 +
== 通信のフロー ==
 +
=== SSH バージョン 2 ===
 +
# プロトコルバージョンの選択
 +
# パラメータネゴシエーション
 +
# セッション鍵交換(DH鍵共有)
 +
# ホスト鍵認証
 +
# ユーザ認証
 +
# セッション確立
 +
# セッション終了
 +
=== SSH バージョン 1 ===
 +
# プロトコルバージョンの選択
 +
# セッション鍵交換(サーバ鍵を使用)
 +
# ホスト鍵認証
 +
# ユーザ認証
 +
# セッション確立
 +
# セッション終了
 +
== ssh コマンド ==
 +
[[ssh]] コマンドの使い方については、 [[sshの使い方]] をご参照下さい。
 +
 +
<syntaxhighlight lang="bash">
 +
ssh yourhostname.local
 +
</syntaxhighlight>
 +
== ソフトウェア ==
 
=== SSH サーバー ===
 
=== SSH サーバー ===
 
リモート接続したいサーバーで動作させる[[sshd]]のプログラムです。
 
リモート接続したいサーバーで動作させる[[sshd]]のプログラムです。
 
* [[OpenSSH]]
 
* [[OpenSSH]]
 
 
=== SSH クライアント ===
 
=== SSH クライアント ===
 
[[ssh]] 接続に使うクライアントプログラムです。
 
[[ssh]] 接続に使うクライアントプログラムです。
 
+
* [[OpenSSH]] ([[ssh]]コマンド)
* [[OpenSSH]]
+
 
* [[PuTTY]]
 
* [[PuTTY]]
* [[Term Term]]
+
* Tera Term
 
+
 
=== SSH サーバー プロテクター ===
 
=== SSH サーバー プロテクター ===
 
* [[sshguard]]
 
* [[sshguard]]
 
* [[SEC]]
 
* [[SEC]]
 
* [[iptables]]
 
* [[iptables]]
 
== バージョン ==
 
[[ssh]] には、バージョン1とバージョン2の2つのプロトコルが存在します。
 
バージョン1は、脆弱性が発見されているため、推奨されていません。
 
 
== 暗号 ==
 
[[ssh]] は、[[公開鍵認証]]を用いて、[[共通鍵暗号]]の[[共通鍵]]を暗号化して、[[鍵交換]]を行います。
 
通信自体は、高速な[[共通鍵暗号]]を用います。
 
 
[[認証]]は、[[パスワード認証]]、[[公開鍵認証]]、[[ワンタイムパスワード]]などが利用できます。
 
 
 
== コマンドの置き換え ==
 
== コマンドの置き換え ==
 
{| class="wikitable"
 
{| class="wikitable"
行50: 行74:
 
! ssh系コマンド
 
! ssh系コマンド
 
|-
 
|-
|[[telnet]]/[[rsh]]/[[rlogin]]
+
|telnet/[[rsh]]/rlogin
 
|[[ssh]]
 
|[[ssh]]
 
|-
 
|-
|[[rcp]]
+
|rcp
 
|[[scp]]
 
|[[scp]]
 
|-
 
|-
行59: 行83:
 
|[[scp]]/[[sftp]]
 
|[[scp]]/[[sftp]]
 
|}
 
|}
 
+
== Secure Shell ==
 +
{{ssh}}
 +
* [[一定期間操作のないbashを自動的にログアウトする方法]]
 +
* [[HTTPプロキシサーバ経由のssh接続]]
 
== 関連項目 ==
 
== 関連項目 ==
 
+
* 関連コマンド
* [[ssh]]
+
** [[rsh]]
* [[scp]]
+
** [[rsync]]
* [[ssh_config]]
+
** telnet
* [[sshd_config]]
+
** [[ftp]]
* [[sshd]]
+
* [[公開鍵認証]]
* [[ssh秘密鍵をクラッキングする方法]]
+
** [[公開鍵]]
 +
** [[秘密鍵]]
 +
* [[パスワード]]
 +
* [[パスフレーズ]]
 +
* [[パスワードクラック]]
 
* [[セキュリティ診断ツール]]
 
* [[セキュリティ診断ツール]]
 +
* [[Secure Shell]]クライアント
 +
** [[OpenSSH]]
 +
** [[PuTTY]]
 +
* [[ファイアーウォール]]
 +
** [[iptables]]
 +
** [[ipfw]]
 +
* テクニック
 +
** [[トンネリング]]
 +
* [[SSL-VPN]]
 +
* [[Transport Layer Security]] ([[Transport Layer Security|SSL]]/[[Transport Layer Security|TLS]])
 
* [[tcpdump]]
 
* [[tcpdump]]
* [[OpenSSH]]
+
<!-- vim: filetype=mediawiki
* [[telnet]]
+
* [[ftp]]
+
* [[rsh]]
+
<!--
+
vim: filetype=mediawiki
+
 
-->
 
-->

2015年9月22日 (火) 21:33時点における最新版

ssh (Secure_Shell, セキュアシェル) は、認証を含む通信を安全にするためのプロトコルのこと、もしくは、ssh コマンドのことを指します。リモートでログインをして、コマンドを実行したり、ファイルを転送するといったことが実現できます。また、sshコマンドのポートフォワーディング機能を使うことで、「通信が暗号化されないサービス」の通信を暗号化できます。認証は、パスワード認証公開鍵認証ワンタイムパスワードなどが利用できます。デフォルトでは、TCPの22番ポートを利用します。sshポートフォワーディングを利用して、非暗号通信のプログラムの通信経路を暗号化するといった使い方もできます。

読み方

Secure Shell
せきゅあしぇる
ssh
えすえすえいち

概要

ssh は、 telnet や rsh, rlogin といったリモートホストを操作するためのコマンド群を安全にするための代替をして考えれました。

telnet や ftp などは、通信が平文で行われるため、ネットワークに平文で認証に用いるパスワードが流れています。 ネットワークを覗き見されることにより、認証情報やデータが盗聴されます。

SSHのプロトコルバージョン

SSHとTLS/SSLは、別物です。 SSHのプロトコルバージョンとSSL/TLSのプロトコルバージョンは、別物です。

バージョン

ssh には、バージョン1とバージョン2の2つのプロトコルが存在します。バージョン1は、脆弱性が発見されているため、推奨されていません。

SSHプロトコルバージョン2(SSH v2)は、SSHプロトコルバージョン1(SSH v1)の欠点を補うために開発されました。

SSHのポート番号

SSHでは、TCPの22番ポートを利用します。

22番ポートは、たびたび、外部からスキャンされて、ログイン試行を繰り返されることがあるため、デフォルトの22番以外のポートを利用する人もいます。

暗号方式

ssh は、公開鍵認証を用いて、共通鍵暗号共通鍵を暗号化して、鍵交換を行います。通信自体は、高速な共通鍵暗号を用います。

認証の方式

SSHは、ホスト認証とユーザ認証から成り立っています。

sshサーバ(sshd)の設定に依存しますが、以下の認証が使用できます。

また、Pluggable Authentication Modules(PAM)を使用することで、上記以外の認証を追加できます。たとえば、二要素認証としてよく利用されるワンタイムパスワード(OTP)を追加することができます。

通信のフロー

SSH バージョン 2

  1. プロトコルバージョンの選択
  2. パラメータネゴシエーション
  3. セッション鍵交換(DH鍵共有)
  4. ホスト鍵認証
  5. ユーザ認証
  6. セッション確立
  7. セッション終了

SSH バージョン 1

  1. プロトコルバージョンの選択
  2. セッション鍵交換(サーバ鍵を使用)
  3. ホスト鍵認証
  4. ユーザ認証
  5. セッション確立
  6. セッション終了

ssh コマンド

ssh コマンドの使い方については、 sshの使い方 をご参照下さい。

ssh yourhostname.local

ソフトウェア

SSH サーバー

リモート接続したいサーバーで動作させるsshdのプログラムです。

SSH クライアント

ssh 接続に使うクライアントプログラムです。

SSH サーバー プロテクター

コマンドの置き換え

コマンドの対応
非ssh系コマンド ssh系コマンド
telnet/rsh/rlogin ssh
rcp scp
ftp scp/sftp

Secure Shell

関連項目