📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

編集の要約なし
 
(同じ利用者による、間の38版が非表示)
1行目: 1行目:
== 概要 ==
== 概要 ==
SSHサーバを構成し、リモート端末からサーバに接続して操作できるようにする。<br>
SSHサーバを構成し、リモート端末からサーバに接続して操作できるようにする。<br>
SSHサーバは、CentOSをMinimal Installした場合やopenSUSEを最小インストールした場合でも、標準でOpenSSHがインストールされるため、追加インストールする必要はない。<br>
SSHサーバは、RHELおよびSUSEを最小インストールした場合でも、標準でOpenSSHがインストールされるため、追加インストールする必要はない。<br>
<br><br>
<br><br>


69行目: 69行目:


== OpenSSHの設定項目 ==
== OpenSSHの設定項目 ==
OpenSSH 7.8p1以降では、許可される最小のRSA鍵のサイズが1024ビットになった。<br>
なお、OpenSSH 8.0p1以降では、デフォルトは3072[bit]である。<br>
<br>
<center>
<center>
{| class="wikitable" | style="background-color:#fefefe;"
{| class="wikitable" | style="background-color:#fefefe;"
|-
|-
! style="background-color:#66CCFF;" | 項目  
! 項目 !! 値 !! 説明
! style="background-color:#66CCFF;" | 値  
! style="background-color:#66CCFF;" | 説明
|-
|-
| Port || ポート番号<br><br>デフォルトは、22 || sshdが使用するポート番号
| Port || ポート番号<br><br>デフォルトは、22 || sshdが使用するポート番号
81行目: 82行目:
|-
|-
| ListenAddress || host<br>IPv4のIPアドレス または IPv4のIPアドレス:<ポート番号><br>IPv6のIPアドレス または IPv6のIPアドレス:<ポート番号><br><br>デフォルトは、以下の2つのアドレスである。<br>[::]:22<br>0.0.0.0:22 || sshdが接続を受け付けるローカルアドレスを指定する。<br>Portが未指定の場合は、[Port]項目で指定したポート番号に対してListenする。
| ListenAddress || host<br>IPv4のIPアドレス または IPv4のIPアドレス:<ポート番号><br>IPv6のIPアドレス または IPv6のIPアドレス:<ポート番号><br><br>デフォルトは、以下の2つのアドレスである。<br>[::]:22<br>0.0.0.0:22 || sshdが接続を受け付けるローカルアドレスを指定する。<br>Portが未指定の場合は、[Port]項目で指定したポート番号に対してListenする。
|- style="background-color:#e0e0e0;"
|- class="row-disabled"
| Protocol || 1<br>2<br>1,2 || sshdがサポートするSSHのプロトコルバージョン。<br>SSH1のみを使用する場合は1、SSH2のみを使用する場合は2、<br>両方使用する場合は"1,2"と設定する。<br><br><u>OpenSSH 7.4以降では、廃止された。</u>
| Protocol || 1<br>2<br>1,2 || sshdがサポートするSSHのプロトコルバージョン。<br>SSH1のみを使用する場合は1、SSH2のみを使用する場合は2、<br>両方使用する場合は"1,2"と設定する。<br><br><u>OpenSSH 7.4以降では、廃止された。</u>
|-
|-
| Hostkey || SSHサーバに保存している秘密鍵のファイルのパス<br><br>デフォルトは、以下の3つのファイルである。<br>/etc/ssh/ssh_host_rsa_key<br>/etc/ssh/ssh_host_ecdsa_key<br>/etc/ssh/ssh_host_ed25519_key || SSHで使用する秘密鍵が格納されているファイルのパスを指定する。
| Hostkey || SSHサーバに保存している秘密鍵のファイルのパス<br><br>デフォルトは、以下の3つのファイルである。<br>/etc/ssh/ssh_host_rsa_key<br>/etc/ssh/ssh_host_ecdsa_key<br>/etc/ssh/ssh_host_ed25519_key || SSHで使用する秘密鍵が格納されているファイルのパスを指定する。
|-
|-
| rekeylimit || 第1項目: 整数値(通信データ量)または<code>default</code><br>K、M、Gのサフィックスも使用可能<br><br>第2項目: 整数値()または<code>none</code><br><br>デフォルトは、第1項目は0、第2項目は0 || SSHは、通信を暗号化するためにホストとクライアント間でセッション鍵を交換している。<br>暗号化を堅牢に行うために都度鍵を変更している。<br><br>第1項目に<code>default</code>を指定する場合、1[GB]から4[GB]の間の適切なタイミングで再生成を行う。<br>第2項目の<code>0</code>は<code>none</code>と等価である。
| rekeylimit || 第1項目: 整数値(通信データ量)または<code>default</code><br>K、M、Gのサフィックスも使用可能<br><br>第2項目: 整数値または時間(週、日、時、分、秒)または<code>none</code><br>第2項目において、分で使用する場合は、<code>5m</code>等と記述する。(この場合は、5分)<br>時で使用する場合は、<code>1h</code>等と記述する。(この場合は、1時間)<br><br>その他、<code>s</code>、<code>S</code>、<code>m</code>、<code>M</code>、<code>h</code>、<code>H</code>、<code>d</code>、<code>D</code>、<code>w</code>、<code>W</code>が使用できる。<br>また、これらを組み合わせて使用することもできる。(<code>1h30m</code>等)<br><br>デフォルトは、第1項目は0、第2項目は0 || SSHは、通信を暗号化するためにホストとクライアント間でセッション鍵を交換している。<br>暗号化を堅牢に行うために都度鍵を変更している。<br><br>第1項目に<code>default</code>を指定する場合、1[GB]から4[GB]の間の適切なタイミングで再生成を行う。<br><br>第2項目の<code>0</code>は<code>none</code>と等価である。
|- style="background-color:#e0e0e0;"
|- class="row-disabled"
| KeyRegenerationInterval || 時間(秒) || SSH1では、サーバ鍵を指定した間隔ごとに自動的に再生成される。<br>その自動的に鍵を再生成する間隔を指定する。<br><br><u>OpenSSH 7.x以降では、廃止された。</u>
| KeyRegenerationInterval || 時間(秒) || SSH1では、サーバ鍵を指定した間隔ごとに自動的に再生成される。<br>その自動的に鍵を再生成する間隔を指定する。<br><br><u>OpenSSH 7.x以降では、廃止された。</u>
|- style="background-color:#e0e0e0;"
|- class="row-disabled"
| ServerKeyBits || ビット数 || SSH1で使用されるサーバ鍵のビット数。(SSH2では無効)<br>最小値は512で、デフォルトは1024。<br>なお、ServerKeyBitsが対象としている鍵は、ephemeral keyである。(生成されたホスト鍵ではない)<br><br><u>現在のOpenSSHでは、廃止された。</u>
| ServerKeyBits || ビット数 || SSH1で使用されるサーバ鍵のビット数。(SSH2では無効)<br>最小値は512で、デフォルトは1024。<br>なお、ServerKeyBitsが対象としている鍵は、ephemeral keyである。(生成されたホスト鍵ではない)<br><br><u>現在のOpenSSHでは、廃止された。</u>
|-
|-
| SyslogFacility || ファシリティ名<br>デフォルトは、AUTH || sshdがsyslogサーバに出力するログメッセージのファシリティ(分類)を指定する。
| SyslogFacility || ファシリティ名:<br>DAEMON (デーモンのログメッセージ)<br>USER (ユーザのログメッセージ)<br>AUTH (認証関連のログメッセージ)<br>LOCAL0 (LOCAL0〜LOCAL7は、ソフトウェア開発者が独自に定義することができるカテゴリ)<br>LOCAL1<br>LOCAL2<br>LOCAL3<br>LOCAL4<br>LOCAL5<br>LOCAL6<br>LOCAL7<br><br>デフォルトは、AUTH || sshdがsyslogサーバに出力するログメッセージのファシリティ(分類)を指定する。<br>例えば、DAEMONを指定する場合、SSHのログメッセージはsyslogの"daemon"カテゴリに分類される。
|-
|-
| LogLevel || QUITE<br>FATAL<br>ERROR<br>INFO<br>VERBOSE<br>DEBUG<br>DEBUG1<br>DEBUG2<br>DEBUG3<br><br>デフォルトは、INFO || sshdが出力するログのログレベルを指定する。
| LogLevel || QUIET (メッセージを出力しない)<br>FATAL ( 致命的なエラーのみを出力)<br>ERROR (致命的なエラーと重要なエラーを出力)<br>INFO (重要な情報と警告を出力)<br>VERBOSE (全ての情報を出力)<br>DEBUG (デバック情報を出力)<br>DEBUG1 (DEBUGと同等)<br>DEBUG2 (より高いレベルのデバッグ情報)<br>DEBUG3 (最も高いレベルのデバッグ情報)<br><br>デフォルトは、INFO || sshdが出力するログのログレベル(冗長レベル)を指定する。<br><u>DEBUGレベルでのログ出力は、ユーザのプライバシーを侵害するため、推奨されない。</u>
|-
|-
| LoginGraceTime || 時間()<br>デフォルトは、120 || ユーザが指定時間内にログインできない場合、サーバの接続を自動的に切断する。
| LoginGraceTime || 時間(週、日、時、分、秒)<br>分で使用する場合は、<code>5m</code>等と記述する。(この場合は、5分)<br>時で使用する場合は、<code>1h</code>等と記述する。(この場合は、1時間)<br><br>その他、<code>s</code>、<code>S</code>、<code>m</code>、<code>M</code>、<code>h</code>、<code>H</code>、<code>d</code>、<code>D</code>、<code>w</code>、<code>W</code>が使用できる。<br>また、これらを組み合わせて使用することもできる。(<code>1h30m</code>等)<br><br>デフォルトは、120 || ユーザが指定時間内にログインできない場合、サーバの接続を自動的に切断する。
|-
|-
| PermitRootLogin || yes<br>no<br>without-password<br>forced-commands-only<br><br>デフォルトは、yes || rootでのログインを許可するかどうかを指定する。<br>without-passwordは、パスワードを使用したrootユーザのログインを拒否する。<br>forced-commands-onlyは、rootユーザの直接ログインを拒否するが、root権限を使用するコマンドのアクセスは許可する。
| PermitRootLogin || yes<br>no<br>prohibit-password<br>(without-passwordと同様であるが、without-passwordは非推奨)<br>forced-commands-only<br><br>デフォルトは、yes || rootでのログインを許可するかどうかを指定する。<br><br>yesの場合、rootユーザで直接SSHログインが可能になる。<br><br>noの場合、rootユーザでの直接SSHログインが禁止する。<br><br>prohibit-password(または、非推奨のエイリアスであるwithout-password)は、<br>rootに対してパスワード認証およびキーボード対話型認証が無効になる。<br><br>forced-commands-onlyは、rootユーザの直接ログインを拒否する(公開鍵認証によるrootログインが許可される)が、<br>root権限を使用するコマンドのアクセスは許可する。<br>例えば、rootログインが通常許可されない場合でも、リモートバックアップを取るのに便利な場合がある。<br>ただし、forced-commands-onlyは、他の全ての認証方法において、rootに対して無効になることに注意する。
|-
|-
| StrictModes || yes<br>no<br>デフォルトは、yes || ログイン前にユーザのディレクトリやファイルのパーミッションをチェックする。
| StrictModes || yes<br>no<br>デフォルトは、yes || ログイン前にユーザのディレクトリやファイルのパーミッションをチェックする。
105行目: 106行目:
|-
|-
| MaxSessions || 整数値<br>デフォルトは、10 || 最大同時接続数
| MaxSessions || 整数値<br>デフォルトは、10 || 最大同時接続数
|- style="background-color:#e0e0e0;"
|- class="row-disabled"
| RSAAuthentication || yes<br>no || RSA認証を有効にする。<br>RSA認証は、SSH1のみ有効にすることができる。<br><br><u>現在のOpenSSHでは、廃止された。</u>
| RSAAuthentication || yes<br>no || RSA認証を有効にする。<br>RSA認証は、SSH1のみ有効にすることができる。<br><br><u>現在のOpenSSHでは、廃止された。</u>
|-
|-
115行目: 116行目:
|-
|-
| AuthorizedKeysCommandUser || ユーザ名<br><br>デフォルトは、none || <code>AuthorizedKeysCommand</code>項目で指定したコマンドを実行する時のユーザを指定する。
| AuthorizedKeysCommandUser || ユーザ名<br><br>デフォルトは、none || <code>AuthorizedKeysCommand</code>項目で指定したコマンドを実行する時のユーザを指定する。
|- style="background-color:#e0e0e0;"
|-
| PubkeyAuthOptions || 1つまたは複数の公開鍵認証オプションを指定する。<br>none<br>touch-required<br>verify-required<br><br>デフォルトは、none || noneは、<code>authorized_keys</code>オプションで上書きされない限り、ユーザの存在を要求する。<br><br>touch-requiredオプションは、FIDO認証アルゴリズム(ecdsa-skまたはed25519-sk)を使用する公開鍵認証であり、<br>存在するユーザが明示的に認証を確認したことを証明する署名を常に要求する。<br>また、<code>authorized_keys</code>オプションでの上書きは無効になる。<br><br>verify-requiredオプションは、PIN等でユーザが認証されたことを証明するFIDO鍵の署名を要求する。<br><br>touch-requiredオプションおよびverify-requiredオプションは、他の非FIDO公開鍵タイプには効果がないことに注意する。
|- class="row-disabled"
| RhostsRSAAuthentication || yes<br>no<br>デフォルトは、no || RSA認証が成功した時、rhostsや/etc/hosts.equivを使用した認証を許可する。<br>SSH1の場合のみ有効である。<br><br><u>現在のOpenSSHでは、廃止された。</u>
| RhostsRSAAuthentication || yes<br>no<br>デフォルトは、no || RSA認証が成功した時、rhostsや/etc/hosts.equivを使用した認証を許可する。<br>SSH1の場合のみ有効である。<br><br><u>現在のOpenSSHでは、廃止された。</u>
|-
|-
| HostbasedAuthentication || yes<br>no<br>デフォルトは、no || 公開鍵認証が成功した時、rhostsあるいは/etc/hosts.equiv認証を許可する。<br>(ホストベーストド認証)
| HostbasedAuthentication || yes<br>no<br>デフォルトは、no || 公開鍵認証が成功した時、rhostsあるいは/etc/hosts.equiv認証を許可する。<br>(ホストベースド認証)
|-
|-
| IgnoreUserKnownHosts || yes<br>no<br>デフォルトは、no || RhostsRSAAuthenticationまたはHostbasedAuthenticationの各認証で、<br>ユーザの~/.ssh/known_hostsファイルを使用しないようにする。
| IgnoreUserKnownHosts || yes<br>no<br>デフォルトは、no || RhostsRSAAuthenticationまたはHostbasedAuthenticationの各認証で、<br>ユーザの~/.ssh/known_hostsファイルを使用しないようにする。
124行目: 127行目:
| IgnoreRhosts || yes<br>no<br>デフォルトは、yes || RhostsRSAAuthenticationまたはHostbasedAuthenticationの各認証で、<br>.rhostsおよび.shostsを使用しないようにする。
| IgnoreRhosts || yes<br>no<br>デフォルトは、yes || RhostsRSAAuthenticationまたはHostbasedAuthenticationの各認証で、<br>.rhostsおよび.shostsを使用しないようにする。
|-
|-
| PasswordAuthentication || yes<br>no<br>デフォルトは、yes || パスワード認証を許可する。
| PasswordAuthentication || yes<br>no<br>デフォルトは、yes || パスワード認証を許可する。<br>RFC 4252で定義されている"Password Authentication Method (password)"を有効にする。<br>クライアントがユーザ名とパスワードをサーバに送信して、サーバは成功または失敗を返す。
|-
|-
| PermitEmptyPasswords || yes<br>no<br>デフォルトは、no || パスワード認証を許可している時、<br>パスワードが空のアカウントに対してサーバがログインを許可するかどうかを指定する。
| PermitEmptyPasswords || yes<br>no<br>デフォルトは、no || パスワード認証を許可している時、<br>パスワードが空のアカウントに対してサーバがログインを許可するかどうかを指定する。
|-
|-
| ChallengeResponseAuthentication || yes<br>no<br>デフォルトは、yes || チャレンジレスポンス認証を許可する。
| ChallengeResponseAuthentication || yes<br>no<br>デフォルトは、yes || チャレンジレスポンス認証を許可する。<br>RFC 4256で定義されている"Generic Message Exchange Authentication (keyboard-interactive)"認証を有効にする。<br><br>まず、クライアントがサーバにユーザ名のみを送信する。<br>それに対して、サーバがクライアントにinstructionやprompt等を送信して、クライアントが応答する。<br>認証に必要な回数だけ、サーバはクライアントとやり取りすることが出来る。<br><br>PAMを使用して認証するという前提の実装であるため、UsePAMがNoの場合は認証に失敗する。
|-
| KbdInteractiveAuthentication || yes<br>no<br>デフォルトは、yes || キーボード対話型認証を許可するかどうかを指定する。<br>login.confにある全ての認証に対応している。<br><br><u><code>ChallengeResponseAuthentication</code>オプションは、このキーワードの非推奨の別称である。</u>
|-
|-
| KerberosAuthentication || yes<br>no<br>デフォルトは、no || ケルベロス認証を許可する。
| KerberosAuthentication || yes<br>no<br>デフォルトは、no || ケルベロス認証を許可する。
135行目: 140行目:
|-
|-
| KerberosTicketCleanup || yes<br>no<br>デフォルトは、yes || ログアウト時、ケルベロス認証用のキャッシュを自動的に削除する。
| KerberosTicketCleanup || yes<br>no<br>デフォルトは、yes || ログアウト時、ケルベロス認証用のキャッシュを自動的に削除する。
|- class="row-disabled"
| KerberosGetAFSToken || yes<br>no<br>デフォルトは、no || ケルベロス認証において、AFSが有効であり、ユーザがKerberos 5のTGTを持っている場合、<br>ユーザのホームディレクトリにアクセスする前に、AFSトークンの取得を試みる。<br><br><u>現在のOpenSSHでは、非推奨となっている。</u><br><u>代わりに、GSSAPIを使用することが推奨されている。<br>GSSAPIは、標準のセキュリティ技術を利用して、認証と暗号化を統合することができる。</u>
|- class="row-disabled"
| KerberosUseKuserok || yes<br>no<br>デフォルトは、yes || ケルベロス認証で、.k5loginファイルが存在する場合は使用する。<br><br><u>現在のOpenSSHでは、廃止された。</u>
|-
|-
| KerberosGetAFSToken || yes<br>no<br>デフォルトは、no || ケルベロス認証で、AFSトークンを取得する。
| GSSAPIAuthentication || yes<br>no<br>デフォルトは、no || GSSAPIベースのユーザ認証を使用する。<br><br>これは、SSHの認証方法の1つであり、Kerberosを利用する認証方式を示す。<br>これは、GSSAPI(Generic Security Services API)を使用して認証を行う。<br>この認証方式を使用することにより、ユーザ名とパスワードの代わりにKerberosトークンを使用して認証を行う。<br><br><u>SSH2の場合のみ適用される。</u>
|-
| KerberosUseKuserok || yes<br>no<br>デフォルトは、yes || ケルベロス認証で、.k5loginファイルが存在する場合は使用する。
|-
| GSSAPIAuthentication || yes<br>no<br>デフォルトは、no || GSSAPIベースのユーザ認証を使用する。<br>SSH2の場合のみ適用される。
|-
|-
| GSSAPICleanupCredentials || yes<br>no<br>デフォルトは、yes || ユーザがログアウトする時、その証明書キャッシュを自動的に消去する。<br>SSH2の場合のみ適用される。
| GSSAPICleanupCredentials || yes<br>no<br>デフォルトは、yes || ユーザがログアウトする時、その証明書キャッシュを自動的に消去する。<br>SSH2の場合のみ適用される。
148行目: 153行目:
| GSSAPIKeyExchange || yes<br>no<br>デフォルトは、no || GSSAPIを許可するために鍵交換を行う。
| GSSAPIKeyExchange || yes<br>no<br>デフォルトは、no || GSSAPIを許可するために鍵交換を行う。
|-
|-
| UsePAM || yes<br>no<br>デフォルトは、no || PAM(Pluggable Authentication Module)インターフェースによる認証を許可する。
| GSSAPIStoreCredentialSonreKey || yes<br>no<br>デフォルトは、no || SSHクライアントがGSSAPI(Generic Security Services API)を通して取得した認証情報を、<br>将来の鍵交換操作のために保存するかどうかを決定する。<br><br>yes<br>クライアントは同じホストへの次回接続時に、毎回認証を求めるのではなく、保存された認証情報を再利用する。<br>これにより、認証要求の回数を減らすことで認証プロセスを改善し、<br>認証情報をクライアントPCに安全に保存することにより、セキュリティを向上させることができる。<br><br>no<br>SSHクライアントが、GSSAPIを通じて取得した資格情報を保存せずに、毎回認証を要求することを示す。
|-
| GSSAPIKexAlgorithms || 指定できるアルゴリズムを、以下に示す。<br>・ gss-gex-sha1-<br>・ gss-group1-sha1-<br>・ gss-group14-sha1-<br><br>デフォルトは、<code>gss-gex-sha1-,gss-group14-sha1-</code> || GSSAPI(Generic Security Services API)を使用して鍵交換を行うアルゴリズムの種類を指定する。<br><br>GSSAPIを使用することにより、安全な認証と鍵交換を行うことができるが、<br>使用するアルゴリズムによっては、安全性や速度などに差があるため、この設定において使用するアルゴリズムを選択することができる。<br><br><u>この項目は、サーバ側とクライアント側の両方で設定する必要がある。</u><br><u>また、使用するアルゴリズムの種類により、互換性の問題が生じる可能性もあるため、注意が必要である。</u>
|-
| UsePAM || yes<br>no<br>デフォルトは、no || PAM(Pluggable Authentication Module)インターフェースによる認証を許可する。<br><br>当設定を<code>yes</code>に設定する場合、<br>PasswordAuthentication、または、ChallengeResponseAuthenticationのいずれかを許可する必要がある。<br>その時、<code>sshd</code>コマンドをroot以外の一般ユーザで実行することはできなくなる。<br><br>また、<code>yes</code>に設定すると、PAMアカウントおよびセッションモジュールの処理に加えて、<br><code>KbdInteractiveAuthentication</code>オプションおよび<code>PasswordAuthentication</code>オプションを使用した<br>PAM認証を全ての認証タイプで使用できるようになる。<br><br>PAMのキーボード対話型認証は、通常はパスワード認証と同等の役割を果たすため、<br><code>PasswordAuthentication</code>オプションあるいは<code>KbdInteractiveAuthentication</code>オプションのいずれかを<br>無効にしておく必要がある。
|-
|-
| FingerprintHash || MD5またはSHA256が指定できる。<br><br>デフォルトは、SHA256 || フィンガープリントを記録する時に使用するハッシュアルゴリズムを指定する。<br><br>OpenSSH 6.8以降に追加された項目である。<br>OpenSSH 6.7以前では、強制的にMD5となる。
| FingerprintHash || MD5またはSHA256が指定できる。<br><br>デフォルトは、SHA256 || フィンガープリントを記録する時に使用するハッシュアルゴリズムを指定する。<br><br>OpenSSH 6.8以降に追加された項目である。<br>OpenSSH 6.7以前では、強制的にMD5となる。
|-
|-
| AcceptEnv || 環境変数を記述する。<br>デフォルトは、空 || クライアントから送信されてきた環境変数のうち、有効にするものを指定する。
| AcceptEnv || 環境変数を記述する。<br>デフォルトは、空 || クライアントから送信されてきた環境変数のうち、有効にするものを指定する。<br><br>変数は名前で指定され、名前にはワイルドカード文字<code>*</code><code>?</code>を含めることができる。<br>複数の環境変数を空白で区切ったり、複数の<code>AcceptEnv</code>項目に跨いで記述することができる。<br><u>環境変数の中には、制限されたユーザ環境を迂回するために使用する可能性のあるものがあることに注意する。</u>
|-
|-
| AllowAgentForwarding || yes<br>no<br>デフォルトは、yes || ssh-agentによるエージェント転送を許可する。
| AllowAgentForwarding || yes<br>no<br>デフォルトは、yes || ssh-agentによるエージェント転送を許可する。
165行目: 174行目:
|-
|-
| X11UseLocalhost || yes<br>no<br>デフォルトは、yes || X11をlocalhostのみ許可する。
| X11UseLocalhost || yes<br>no<br>デフォルトは、yes || X11をlocalhostのみ許可する。
|-
| PermitTTY || yes<br>no<br>デフォルトは、yes || ptyの割り当てを許可するかどうかを指定する。
|-
|-
| PrintMotd || yes<br>no<br>デフォルトは、yes || ログイン時に/etc/motdの内容を表示する。
| PrintMotd || yes<br>no<br>デフォルトは、yes || ログイン時に/etc/motdの内容を表示する。
171行目: 182行目:
|-
|-
| TCPKeepAlive || yes<br>no<br>デフォルトは、yes || TCPキープアライブメッセージを送信する。
| TCPKeepAlive || yes<br>no<br>デフォルトは、yes || TCPキープアライブメッセージを送信する。
|- style="background-color:#e0e0e0;"
|- class="row-disabled"
| UseLogin || yes<br>no<br>デフォルトは、no || ログインでloginプログラムを使用する。<br><br><u>現在のOpenSSHでは、廃止された。</u>
| UseLogin || yes<br>no<br>デフォルトは、no || ログインでloginプログラムを使用する。<br><br><u>現在のOpenSSHでは、廃止された。</u>
|-
|- class="row-disabled"
| UsePrivilegeSeparation || yes<br>no<br>デフォルトは、yes || sshdがセッションを受け付けるネットワークトラフィックを処理するためにroot権限を分離する。
| UsePrivilegeSeparation || yes<br>no<br>デフォルトは、yes || sshdがセッションを受け付けるネットワークトラフィックを処理するためにroot権限を分離する。<br><br><u>OpenSSH 7.8p1以降では、<code>UsePrivilegeSeparation</code>は、<code>sandbox</code>オプションが必須になったため、<br>設定は変更できない。
|-
|-
| PermitUserEnvironment || yes<br>no<br>デフォルトは、no || ユーザの環境変数の変更を許可する。
| PermitUserEnvironment || yes<br>no<br>デフォルトは、no || ユーザの環境変数の変更を許可する。
|-
|-
| Compression || yes<br>no<br>デフォルトは、delayed || 圧縮を許可する。<br>デフォルトでは、ユーザが認証されてから圧縮を許可する。(delayed)
| Compression || yes(deayed)<br>no<br>デフォルトは、yes<br><br><code>delayed</code>は、<code>yes</code>の従来のシノニムである。 || 圧縮を許可する。<br>デフォルトでは、ユーザが認証されてから圧縮を許可する。(delayed)
|-
| ClientAliveInterval || yes<br>no<br>デフォルトは、0 || クライアントの生存チェック間隔を指定する。<br>デフォルトは、チェックしない。(0)
|-
|-
| ClientAliveCountMax || yes<br>no<br>デフォルトは、3 || クライアントの生存チェック最大カウント数を指定する。
| ClientAliveInterval || 整数値<br>デフォルトは、0 || クライアントからデータを受信しなかった場合、sshdが暗号化チャネルを介してメッセージを送信し、<br>クライアントからの応答を要求するまでのタイムアウト間隔を秒数で設定する。<br><br>0を指定する場合、メッセージはクライアントに送信されないことを意味する。<br><br>デフォルトは、チェックしない。(0)
|-
|-
| ShowPatchLevel || yes<br>no<br>デフォルトは、no || セッション確立時にクライアントにOpenSSHのパッチレベルを通知する。
| ClientAliveCountMax || 整数値<br>デフォルトは、3 || sshdがクライアントからメッセージを受信せずに送信できるクライアント生存確認メッセージの数を指定する。<br>クライアント生存確認メッセージの送信中にこの閾値に達した場合、sshdはクライアントを切断して、セッションを終了する。<br><br>クライアント生存確認メッセージの使用は、<code>TCPKeepAlive</code>と大きく異なることに注意する。<br><br>クライアント生存確認メッセージは、暗号化されたチャネルを介して送信されるため、なりすましはできない。<br><code>TCPKeepAlive</code>で有効なTCPkeepaliveオプションは、なりすましが可能である。<br>クライアント生存確認メカニズムは、クライアントまたはサーバが、接続が応答しなくなったときを知ることに依存している場合に価値がある。<br><br>例えば、<code>ClientAliveInterval</code>を15に設定し、<code>ClientAliveCountMax</code>をデフォルトのままにする場合、<br>無応答のクライアントは約 45秒後に切断される。<br><code>ClientAliveCountMax</code>を0に設定する場合、接続の終了が無効になる。
|- class="row-disabled"
| ShowPatchLevel || yes<br>no<br>デフォルトは、no || セッション確立時にクライアントにOpenSSHのパッチレベルを通知する。<br><br><u>OpenSSH 8.0p1以降では、当オプションは無効になった。</u>
|-
|-
| UseDNS || yes<br>no<br>デフォルトは、yes || DNSを使用してリモートホスト名を確認する。
| UseDNS || yes<br>no<br>デフォルトは、yes || DNSを使用してリモートホスト名を確認する。
198行目: 209行目:
| Banner || 文字列<br>デフォルトは、none || セッション確立時に表示する文字列を指定する。
| Banner || 文字列<br>デフォルトは、none || セッション確立時に表示する文字列を指定する。
|-
|-
| Subsystem || || 外部サブシステムを指定する。
| VersionAddendum || 文字列<br>デフォルトは、none || 接続時にサーバから送信されるSSHプロトコルバナーに付加する追加のテキストを指定する。
|-
|-
| Match ||  || 条件に一致した場合の処理を指定する条件分岐を行う。
| Subsystem ||
第1引数<br>サブシステム名 (一部抜粋)<br>・ sftp<br>SFTPプロトコルを実行するためのサブシステム<br><br>・ scp<br>SCPプロトコルを実行するためのサブシステム<br><br>・ shell<br>リモートシェルを実行するためのサブシステム<br><br>・ exec<br>リモートシェルに対してコマンドを実行するためのサブシステム<br><br>・ sftp-server<br>外部のSFTPサーバを指定して、SFTPサブシステムを実行するために使用する。<br><br>・ internal-sftp<br>内部的なSFTP実装を使用して、SFTPサブシステムを実行するために使用する。<br>これは、外部のSFTPサーバを使用せずに、SSHサーバ自身に内蔵されたSFTPサブシステムを使用する。<br><br>第2引数<br>サブシステムに要求があった場合に実行されるコマンドのパス(および、必要な場合はその引数)を指定する。<br><br>第3引数<br>第2引数に渡す引数を指定する。<br><br>デフォルトは、空
| ユーザがログインした時にサーバ上で起動される外部プログラムを指定する。<br><br>サブシステムは、SSH接続のコンテキストでサーバ上で実行される独立した別個のプログラムである。<br>サブシステムは、SFTPのような追加機能、および、シェルセッションを開始せずに、<br>サーバ上でコマンドを実行する方法を提供する。<br><br>これは、サブシステム名、コマンド名(サーバ上で実行されるプログラム名と一致しなければならない)、<br>そのプログラムに渡す引数を指定する。<br><br>サブシステム名にsftp-serverおよびinternal-sftpを指定することにより、<br>ChrootDirectoryを使用してクライアントに別のファイルシステムルートを強制する構成が<br>簡素化される場合がある。<br>また、両方のオプションを使用することにより、特定のSFTPサブシステムを指定することができる。
|-
| Match ||  デフォルトは、空|| 条件に一致した場合の処理を指定する条件分岐を行う。
|}
|}
</center>
</center>
211行目: 226行目:
<code>-T</code>オプションを付加することにより、SSHの設定ファイルの正当性を確認して、有効な設定項目を標準出力に表示することができる。<br>
<code>-T</code>オプションを付加することにより、SSHの設定ファイルの正当性を確認して、有効な設定項目を標準出力に表示することができる。<br>
  sudo sshd -T
  sudo sshd -T
<br>
指定したSSHの設定ファイルの正当性を確認する。<br>
sudo sshd -t -f <sshd_configファイルのパス>
# または
sudo sshd -T -f <sshd_configファイルのパス>
<br><br>
== 設定ファイルのデフォルト値 ==
SSHの設定ファイルにおけるデフォルト値を取得する。<br>
sudo sshd -T -f /dev/null
<br><br>
<br><br>


== OpenSSHのパスワード認証 ==
== OpenSSHのパスワード認証 ==
CentOSおよびSUSEでは、SSHは標準で自動起動設定になっているため、パスワード認証方式でのログインが可能となっている。<br>
RHELおよびSUSEでは、SSHは標準で自動起動設定になっているため、パスワード認証方式でのログインが可能となっている。<br>
したがって、最低限必要な設定として、セキュリティを考慮して以下に示すようにrootアカウントの直接ログインの禁止設定を実施しておけばよい。<br>
したがって、最低限必要な設定として、セキュリティを考慮して以下に示すようにrootアカウントの直接ログインの禁止設定を実施しておけばよい。<br>
<br>
<br>
246行目: 271行目:
Firewalldの設定を反映させるため、Firewalldを再起動する。<br>
Firewalldの設定を反映させるため、Firewalldを再起動する。<br>
  sudo firewall-cmd --reload
  sudo firewall-cmd --reload
<br><br>
== 画面転送 ==
==== X11 ====
X11では、SSH転送をサポートしている。<br>
<br>
# /etc/ssh/sshd_configファイル
X11Forwarding    yes
X11DisplayOffset 10
X11UseLocalhost  yes
<br>
ssh -X <ユーザ名>@<ホスト名またはIPアドレス>  # 基本的なX11転送
ssh -Y <ユーザ名>@<ホスト名またはIPアドレス>  # 信頼されたX11転送 (セキュリティ制限が緩和)
<br>
==== Wayland ====
Waylandは、SSHを使用した画面転送をネイティブにサポートしていない。<br>
しかし、以下に示す方法で実現することが可能である。<br>
<br>
===== Xwaylandを使用している場合 =====
ただし、サーバ側でXWaylandが必須となる。<br>
ssh -X user@hostname
<br>
==== Weston RDPバックエンドを使用している場合 ====
# サーバ側
weston --backend=rdp
# クライアント側
wlfreerdp /v:<ホスト名またはIPアドレス>
<br>
==== Waylandを使用している場合 ====
Waylandでは、waypipeが最も推奨される方法である。<br>
<br>
まず、waypipeをインストールする。<br>
<br>
# RHEL
sudo dnf install
# SUSE
sudo zypper install
# Debian GNU/Linux, Raspberry Pi, Mobian
sudo apt install waypipe
<br>
waypipeを使用する。<br>
waypipe ssh <ユーザ名>@<ホスト名またはIPアドレス> <アプリケーションのパス>
<br><br>
<br><br>


300行目: 371行目:
<br>
<br>
===== パッケージ管理システムを使用してインストール =====
===== パッケージ管理システムを使用してインストール =====
  # CentOS
  # RHEL
  sudo yum install epel-release
  sudo dnf install epel-release
  sudo yum update
  sudo dnf update
  sudo yum install sshpass
  sudo dnf install sshpass
   
   
  # SUSE
  # SUSE
336行目: 407行目:
  sshpass -p <パスワード> ssh <ユーザ名>@<ホスト名またはIPアドレス>
  sshpass -p <パスワード> ssh <ユーザ名>@<ホスト名またはIPアドレス>
<br><br>
<br><br>
== SSH接続のテストコマンド ==
==== タイムアウトの使用 ====
ポートのステータスを確認することにより、SSH接続をテストする。<br>
timeout <時間 [sec]> bash -c "< /dev/tcp/<サーバのIPアドレスまたはホスト名>/<ポート番号>"
例:
timeout 5 bash -c "< /dev/tcp/server2/22"
<br>
終了ステータスを確認する。<br>
終了ステータスが0の場合、SSH接続のテストが成功したことを意味する。<br>
echo $?
<br>
==== nmapの使用 ====
nmapはポートの状態を確認する時によく使用されている。<br>
nmap <サーバのIPアドレスまたはホスト名> -PN -p ssh | grep -E 'open|closed|filtered'
<br>
==== netcatまたはncの使用 ====
ncとncatを使用して、ポートの状態を確認、および、SSH接続をテストすることができる。<br>
nc --wait <時間 [sec]> <サーバのIPアドレスまたはホスト名> <ポート番号> < /dev/null &> /dev/null
<br>
終了ステータスを確認する。<br>
終了ステータスが0以外の場合、SSH接続に失敗している。<br>
echo $?
<br>
==== SSHコマンドの使用 ====
パスワード無しでSSH接続を行う場合、接続を確認するためにsshコマンドを使用することができる。<br>
<code>ConnectTimeout</code>オプションを付加して、SSHがアクティブになるまでの接続待ち状態でフリーズしないようにする。<br>
<code>StrictHostKeyChecking</code>オプションを付加して、セキュリティとフィンガープリントのプロンプトが表示されないようにする。<br>
<code>BatchMode</code>オプションが<code>yes</code>の場合、パスフレーズ / パスワード照会は無効になる。<br>
<br>
パスワードを使用している場合、コマンドはパスワードの入力を要求するため、sshpassやexpectスクリプト等を使用しない限り自動化できない。<br>
<br>
# SSH接続に成功した場合は、0を指定している
ssh -q -o BatchMode=yes  -o StrictHostKeyChecking=no -o ConnectTimeout=<時間 [sec]> <サーバのIPアドレスまたはホスト名> 'exit 0'
<br>
終了ステータスを確認する。<br>
echo $?
<br><br>
== エラー ==
==== 接続エラー : client_loop: send disconnect: Broken pipe ====
SSH接続が予期せず切断されたことを示している。<br>
<br>
このエラーには、以下に示すような様々な原因が考えられる。<br>
* ネットワークの問題
*: 不安定なネットワーク接続
*: ファイアウォールやルータの設定
*: <br>
* サーバ側の問題
*: サーバの負荷が高い。
*: SSHの設定 (例: タイムアウト設定が短い等)
*: <br>
* クライアント側の問題
*: ローカルのネットワーク設定
*: SSHクライアントの設定
*: <br>
* セキュリティソフトウェアの干渉
*: アンチウイルスソフトやファイアウォールが接続を遮断している可能性
<br>
対処方法を以下に示す。<br>
* 接続を再試行する
*: 単純なネットワークの一時的な問題である可能性がある。
*: <br>
* 別のネットワークから接続を試みる
*: ローカルネットワークの問題を切り分ける。
*: <br>
* SSHの冗長モードを使用する
*: <code>-vvv</code>オプションを付加して、sshコマンドを実行すると、詳細なデバッグ情報が得られる。
*: <code>ssh -vvv <ユーザ名>@<ホスト名またはIPアドレス></code>
*: <br>
* クライアント側のSSH設定を確認する
*: ~/.ssh/configファイルに<code>ServerAliveInterval 60</code>を追記して、定期的にキープアライブパケットを送信することにより、接続を維持しやすくなる。
*: <br>
* サーバ管理者に連絡する
*: サーバ側の設定や負荷状況を確認してもらう。
*: <br>
* ファイアウォールやセキュリティソフトの設定を確認する
*: SSHトラフィックが阻害されていないか確認する。
<br>
このエラーの正確な原因を特定するには、より詳細な情報 (サーバのOS、SSHクライアントのバージョン、ネットワーク環境等) が必要となる。<br>
<br><br>


__FORCETOC__
__FORCETOC__
[[カテゴリ:CentOS]][[カテゴリ:SUSE]]
[[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]]