!!!OpenSSH {{category OpenSSH,nolink}}セキュアシェル(SSH)の OpenSSH のサーバ設定。-p リリース版ではなく、OpenBSD に付いてくるやつが元です。インストール先のパスとかに違いがあれど基本的には大差ないはず。※OpenSSH 4.3 (OpenBSD 3.9) ベース *[OpenSSH|http://www.openssh.com/ja/] *クライアント関係 関連 man → [ssh(8)|http://www.openbsd.org/cgi-bin/man.cgi?query=ssh&sektion=8&arch=i386] , [ssh_config(5)|http://www.openbsd.org/cgi-bin/man.cgi?query=ssh_config&sektion=5&arch=i386] , [scp(1)|http://www.openbsd.org/cgi-bin/man.cgi?query=scp&sektion=1&arch=i386] , [sftp(1)|http://www.openbsd.org/cgi-bin/man.cgi?query=sftp&sektion=1&arch=i386] *サーバ関係 関連 man → [sshd(8)|http://www.openbsd.org/cgi-bin/man.cgi?query=sshd&sektion=8&arch=i386] , [sshd_config(5)|http://www.openbsd.org/cgi-bin/man.cgi?query=sshd_config&sektion=5&arch=i386] , [sftp-server(8)|http://www.openbsd.org/cgi-bin/man.cgi?query=sshd_config&sektion=5&arch=i386] *鍵関係 関連 man → [ssh-keygen(1)|http://www.openbsd.org/cgi-bin/man.cgi?query=ssh-keygen&sektion=1&arch=i386] *関連 → [OpenSSH 日本語マニュアルページ|http://www.unixuser.org/~euske/doc/openssh/jman/] (新山氏 個人訳) !!!サーバ設定ファイル サーバ設定ファイルは、'''/etc/ssh/sshd_config''' です。コメントアウトされて書かれている内容がデフォルト値になる。 !!サーバ全般 ::Protocol (プロトコル) :::sshd がサポートするプロトコルのバージョンを指定します。複数指定はカンマ区切り。 :::指定値は、"1" と "2" で、デフォルトは "2,1" です。 :::ただし、クライアントが選択するので記述順が優先順位とはならない。 ::Port (ポート番号) :::sshd が接続を受けつける (listen する) ポート番号を指定します。複数指定可。 :::デフォルトの 22 でよい。ListenAddress も参照のこと。 :::ブルートフォースアタックが五月蠅ければ、ポート番号を変えてしまうのが、格段に数を減らせれる。 ::ListenAddress (接続受付アドレス) :::sshd が接続を受けつける (listen する) ローカルアドレスを指定します。複数指定可。 ::AddressFamily (アドレスファミリ) :::sshd が、使うべきアドレスファミリを指定します。 :::指定値は、"any"(すべて)、"inet"(IPv4のみ)、"inet6"(IPv6のみ) で、デフォルトの "any" でよい。 ::HostKey (ホスト鍵) :::SSH で使われる、ホスト秘密鍵が格納されているファイルを指定します。 ::KeyRegenerationInterval (鍵の再生成間隔) :::(SSHv1のみ) サーバ鍵を自動的に再生成する間隔を指定します。 :::デフォルトは、3600秒(1時間) です。 ::ServerKeyBits (サーバ鍵のビット数) :::(SSHv1のみ) 短期的に使われるサーバ鍵のビット数を指定します。 :::最小値は 512 で、デフォルトは 768 です。 ::SyslogFacility (syslog 分類コード) :::sshd が出力するログメッセージで使われるログの分類コード (facility) を指定します。 :::指定値は、DAEMON, USER, AUTH, LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7 で、デフォルトは AUTH です。 ::LogLevel (ログレベル) :::sshd が出力するログメッセージの冗長性レベルを指定します。 :::指定値は、QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2, DEBUG3 で、デフォルトでは INFO です。 :::DEBUG と DEBUG1 は等価。 DEBUG2、DEBUG3 はそれぞれさらに冗長なログ。 DEBUG レベル以上は通常使用しない。 !!認証関係 ::LoginGraceTime (ログイン猶予時間) :::ユーザがここで指定された時間内にログインできないと、サーバは接続を切ります。 :::デフォルトの値は 2分(120秒) です。ゼロにすると時間制限はなくなります。 ::PermitRootLogin (root ログイン許可) :::root がログインできるかどうか指定します。 :::指定値は、"yes"、"without-password"(パスワード認証不可)、"forced-commands-only"(強制コマンドのみ)、"no" で、デフォルトは "yes" です。理由がなければ、'''"no" に変更する'''。 *"no" にすると、root のログインは許可されません。 *"without-password" にすると、root はパスワード認証ではログインできなくなります。 *"forced-commands-only" にすると、コマンドが指定されている公開鍵を使ってのみログインが出来る。 *"yes" だと root でログインが可能になります。 ::StrictModes (厳格なモード) :::sshd がログインを許可する前に、ユーザのファイルおよびホームディレクトリの所有権とパーミッションをチェックすべきかどうかを指定します。 :::デフォルトの値は "yes" です。 ::MaxAuthTries (最大認証試行回数) :::1接続あたりの認証を最大で何回まで試みることができるかを指定します。 :::ここで指定された半数以上の認証が失敗すると、それ以降の失敗はログに記録されます。 :::デフォルトの値は 6 です。 ::RSAAuthentication (RSA 認証) :::(SSHv1のみ) 純粋な RSA 認証を許可するかどうかを指定します。 :::デフォルトの値は "yes" です。 ::PubkeyAuthentication (公開鍵認証) :::(SSHv2のみ) 公開鍵認証を許可するかどうか指定します。 :::デフォルトの値は "yes" です。 AuthorizedKeysFile (authorized_keys ファイル) :::ユーザ認証のさいに使われる公開鍵を格納しているファイル名を指定します。 :::デフォルトの値は ".ssh/authorized_keys" です。 ::RhostsRSAAuthentication (rhosts-RSA 認証) :::(SSHv1のみ) RSA ホスト間認証が成功しているとき、rhosts や /etc/hosts.equiv を使った認証をおこなってよいかどうか指定します。 :::デフォルトの値は "no" です。 ::HostbasedAuthentication (ホストベースド認証の許可) :::(SSHv2のみ) 公開鍵ホスト認証が成功したときに、 rhosts や /etc/hosts.equiv 認証を許可するかどうか指定します。 :::デフォルトの値は "no" です。 ::IgnoreUserKnownHosts (ユーザ用 known_hosts の無視) :::RhostsRSAAuthentication または HostbasedAuthentication の各認証で、ユーザの ~/.ssh/known_hosts ファイルを使わないようにします。 :::デフォルトの値は "no" です。 ::IgnoreRhosts (rhosts の無視) :::RhostsRSAAuthentication または HostbasedAuthentication の各認証で、.rhosts および .shosts ファイルを使わないようにします。この状態でも、 /etc/hosts.equiv および /etc/shosts.equiv は有効です。 :::デフォルトの値は "yes" です。 ::PasswordAuthentication (パスワード認証) :::パスワード認証を許可するかどうか指定します。 :::デフォルトの値は "yes" です。'''"no" に変更する'''。 ::PermitEmptyPasswords (空のパスワードを許可) :::パスワード認証が許可されているとき、パスワード文字列が空のログインを許可するかを指定します。 :::デフォルトの値は "no" です。 ::ChallengeResponseAuthentication (チャレンジ・レスポンス認証) :::チャレンジ・レスポンス認証を許可するかどうか指定します。 :::/etc/login.conf に記されているすべての認証形式が使えます。 :::デフォルトの値は "yes" です。'''"no" に変更する'''。 !!Kerberos関係 ::KerberosAuthentication (Kerberos 認証) :::Kerberos KDC 経由で批准するかどうか指定します。 :::デフォルトの値は "no" です。 ::KerberosOrLocalPasswd (Kerberos あるいは ローカルパスワード) :::Kerberos 経由のパスワード認証が失敗すると、そのパスワードは /etc/passwd などの別のローカルな機構によって確認されます。 :::デフォルトの値は "yes" です。 ::KerberosTicketCleanup (Kerberos チケット自動除去) :::ユーザのチケット用キャッシュをログアウト時に自動的に消去するかどうか指定します。 :::デフォルトの値は "yes" です。 ::KerberosGetAFSToken (Kerberos AFS トークンを取得する) :::AFS が有効でユーザが Kerberos 5 TGT をもっている場合、そのユーザのホームディレクトリにアクセスする前に AFS トークンを取得しようとこころみます。 :::デフォルトの値は "no" です。 !!GSSAPI関係 ::GSSAPIAuthentication (GSSAPI 認証) :::(SSHv2のみ) GSSAPI ベースのユーザ認証を使用するかどうかを指定します。 :::デフォルトの値は "no" です。 ::GSSAPICleanupCredentials (GSSAPI 証明書の消去) :::(SSHv2のみ) ユーザがログアウトするときに、その証明書 (credential) キャッシュを自動的に消去するかどうかを指定します。 :::デフォルトの値は "yes" です。 !!その他 ::AllowTcpForwarding (TCP 転送の許可) :::TCP 転送を許可するかどうか指定します。 :::デフォルトの値は "yes" です。 ::GatewayPorts (ポート中継の許可) :::リモートホストがクライアント側に転送されたポートに接続することを許可するかどうか指定します。 :::デフォルトの値は "no" です。 ::X11Forwarding (X11 転送) :::X11 転送を許可するかどうかを指定します。 :::デフォルトの値は "no" です。 ::X11DisplayOffset (X11 ディスプレイ番号のオフセット値) :::sshd が X11 転送をするときに最初に使われるディスプレイ番号を指定します。 :::デフォルトの値は "10" です。 ::X11UseLocalhost (X11 で localhost のみを許可) :::sshd が転送された X11 サーバを localhost に bind するかどうかを指定します。 :::デフォルトの値は "yes" です。 ::PrintMotd (motd の表示) :::ユーザが対話的にログインしたとき、 /etc/motd ファイルの内容を表示するかどうか指定します。 :::デフォルトの値は "yes" です。 ::PrintLastLog (LastLog の表示) :::ユーザが対話的にログインしたとき、そのユーザが前回ログインした日付と時刻を表示するかどうか指定します。 :::デフォルトの値は "yes" です。 ::TCPKeepAlive (TCP接続を生かしておく) :::システムが相手のマシンに TCP keepalive メッセージを送るかどうか指定します。 :::デフォルトの値は "yes" です。 ::UseLogin (login の使用) :::対話的ログインセッションのさい、 login プログラムを使うかどうかを指定します。 :::デフォルトの値は "no" です。 ::UsePrivilegeSeparation (root権限を分離) :::sshd が、受けつけるネットワークトラフィックを処理するために root 権限を分離するかどうかを指定します。 :::認証が成功すると、そのユーザの権限をもつ別のプロセスが新たに作られます。 :::デフォルトの値は "yes" です。 ::PermitUserEnvironment (ユーザの環境変数変更を許可する) :::sshd が ~/.ssh/environment ファイルおよび ~/.ssh/authorized_keys における environment= オプションを処理すべきかどうかを指定します。 :::デフォルトの値は "no" です。 ::Compression (圧縮) :::圧縮を許可するかどうか、あるいは遅延圧縮をおこなうかどうかを指定します。 :::指定値は、"yes" と "delayed" と "no" で、デフォルトは "delayed"(ユーザが認証されてから圧縮を許可する) です。 ::ClientAliveInterval (クライアントの生存チェック間隔) :::(SSHv2のみ) sshd は一定時間ごとに、暗号化された通信路を経由してクライアントに応答を要求するメッセージ (client alive message) を送ります。 :::その際、何もデータが送られてこなかったらタイムアウトする時間を秒数で指定します。 :::デフォルトの値は "0" で、これはメッセージを送らないことを意味します。 ::ClientAliveCountMax (クライアントの生存チェック最大カウント数) :::(SSHv2のみ) sshd が無反応のクライアントに対して client alive message を送ってみる最大数を指定します。 :::client alive message に対する応答が連続してこの回数だけなかった場合、 sshd は接続を切り、セッションを終了します。 :::デフォルトの値は "3" です。 ※メモ:"ClientAliveInterval 15"、"ClientAliveCountMax 3" の場合、反応しないクライアントは、45秒後に接続が切られます。 ::UseDNS (リモートホスト名の確認) :::sshd が IP アドレスからリモートホスト名を逆引き検索して得た名前を正引きして、同じ IP アドレスになるかどうか確認します。 :::デフォルトの値は "yes" です。 ※メモ:逆引き出来ない(LAN内で内側のDNSがない)IPで接続すると、タイムアウトまで待つ。 ::PidFile (pid ファイル) :::SSH デーモンのプロセス ID を格納するファイルを指定します。 :::デフォルトの値は "/var/run/sshd.pid" です。 ::MaxStartups (最大起動数) :::認証されていない段階の接続を sshd が最大でどれだけ受けつけるかを指定します。 :::この値を超えた (認証されていない段階の) 接続は捨てられます。 :::デフォルトの値は "10" です。 ::PermitTunnel (トンネリングを許可する) :::tun デバイスの転送を許可するかどうかを指定します。 :::指定値は、"yes", "point-to-point"(layer 3), "ethernet"(layer 2), "no" で、デフォルトは "no" です。 ::Banner (バナー) :::(SSHv2のみ) ここで指定されたファイルの内容は、認証が許可される前にリモートユーザに提示されます。 ::Subsystem (サブシステム) :::(SSHv2のみ)外部サブシステム (ファイル転送デーモンなど) を設定します。 :::sftp-server はファイル転送サブシステム "sftp" を実装したものです。 :::デフォルトでsftpdが定義されています。 !!!ホスト鍵 ホスト認証用の公開鍵ペアが存在することを確認する。 公開鍵のパーミッションは 644 で誰でも読めるが、秘密鍵のパーミッションは 600 にして root 以外が読めないようにする。秘密鍵が他のユーザに読める状態では sshd は接続を受け付けない。 それぞれ、/etc/ssh/ 配下に以下のファイルがあるはず。 , ,SSH1-RSA ,SSH2-DSA ,SSH2-RSA ,秘密鍵 ,ssh_host_key ,ssh_host_dsa_key ,ssh_host_rsa_key ,公開鍵 ,ssh_host_key.pub ,ssh_host_dsa_key.pub ,ssh_host_rsa_key.pub !!!個人鍵 公開鍵認証に使う個人鍵は、ssh-keygen コマンドを使って作る。ホスト鍵同様に秘密鍵のパーミッションは600として自分以外が読めないようになっている必要がある。 以下の、ユーザのホームディレクトリに鍵ペアが作成される。それぞれ、 , ,SSH1-RSA (-t rsa1) ,SSH2-DSA (-t dsa) ,SSH2-RSA (-t rsa) ,秘密鍵 ,~/.ssh/identity ,~/.ssh/id_dsa ,~/.ssh/id_rsa ,公開鍵 ,~/.ssh/identity.pub ,~/.ssh/id_dsa.pub ,~/.ssh/id_rsa.pub 鍵ペアを作る場合は、"ssh-keygen -t type" として実行する。 また、マシンにログインに利用する鍵ペアの公開鍵は、'~/.ssh/authorized_keys' へ追加する。 鍵ペアをクライアントで作成し、ログインするサーバそれぞれに公開鍵を転送し authorized_keys に追加する。