SSH/ja

SSH (Secure SHell) は、telnet ツールを置き換える、暗号化ターミナルプログラムです. ]]

主要な バイナリが提供するリモートターミナルアクセスに加えて、SSH プログラムスイートには  (Secure Copy Program) や  (Secure File Transfer Protocol) といったその他のツールも含まれるようになっています.

もともと、SSH はフリーではありませんでした. しかしながら、現在最も広く使われているデファクトスタンダードな SSH の実装は Gentoo でもプリインストールされている OpenBSD の OpenSSH です.

インストールの確認
Gentoo Linux のほとんどにおいては、OpenSSH が既にシステムにインストールされています. これは ssh コマンドを実行すれば確認できます. インストール済みなら使い方の文章が出力されるはずです:

使い方が出力されない場合、 が壊れているか、またはインストールされていません. また、新しい USE フラグを導入するために OpenSSH を単に再ビルドすることもできます. いずれにせよ、使用可能な USE 設定を見てみましょう.

Emerge
必要な USE フラグを変更した後には、OpenSSH をインストール(または再ビルド)するのを忘れないでください:

鍵の作成
安全なシェルを提供するために、暗号鍵が SSH の提供する暗号化、復号化、ハッシュといった機能の管理に使われています.

SSH サービスの初回起動時には、システム鍵が生成されます. 鍵は コマンドを使って(再)生成することができます.

SSH プロトコルバージョン2用の鍵(DSA および RSA アルゴリズム)を生成するには:

Secure Secure Shell の記事では Ed25519 および RSA 公開鍵アルゴリズムの使用が推奨されています:

サーバーの設定
SSH サーバーは設定ファイルの位置変更も含め OpenRC の で設定することもできますが、通常は  ファイルで設定されます. サーバーを設定する方法についての詳細は sshd_config の man page を参照してください.

セキュリティーに主眼をおいた設定をするために の OpenSSH ガイドを読むことをおすすめします.

クライアントの設定
クライアントや関連プログラム(、 など)は以下のファイルを使って設定できます:



詳細については のマニュアルを読んでください:

パスワードなしの認証
git サーバーを管理するのに便利です.

クライアント
クライアントでは、もしまだ行っていなければ、鍵ペアを作成します. これは以下のコマンドで行えます(もちろん、パスワードは入力しないでください):

サーバー
ユーザー用のアカウントがサーバー上に存在することを確認し、クライアントの ファイルをサーバーのユーザーのホームディレクトリーにある  ファイルの中に配置してください. これは以下のコマンドをクライアントコンピューター上で実行することで行えます(ここではサーバー上のユーザーのパスワードを入力する必要があります):

これ以降は以下を実行することでパスワードなしでログインできるはずです.

そしてサーバー側では、 で  を設定するべきです.

単一マシンでのテスト
上の手順はローカルでテストすることもできます:

侵入の防止
SSH はよく攻撃されるサービスです. sshguard や fail2ban といったツールはログを監視し、繰り返しログインを試行し失敗しているリモートユーザーをブラックリストに追加してくれます. 頻繁に攻撃されるシステムを安全に保つには、これらを必要に応じて活用しましょう.

OpenRC
OpenSSH デーモンを default ランレベルに追加する:

sshd デーモンを開始するには:

OpenSSH サーバーは他の OpenRC で管理されているサービスと同様にしてコントロールできます:

systemd
システム起動時に OpenSSH デーモンを起動するには:

OpenSSH デーモンをすぐに開始するには:

サービスが開始されているか確認するには:

エスケープシーケンス
アクティブな SSH セッションの間にチルダキーを押すと、エスケープシーケンスが開始されます. オプションの一覧を見るには以下を入力してください:

トラブルシューティング
問題への対処に役立つかもしれない、3つの異なるデバッグモードレベルがあります. オプションを使うと、SSH は自身の進捗についてデバッグメッセージを出力します. これは接続、認証、そして設定の問題をデバッグする際に有用です. 複数の  オプションを付けるとより詳細な情報が出力されます. 最も詳細なのは3番目のレベルです.

長時間続いている接続が切断される
インターネットに接続するデバイスの多くはネットワークアドレス変換 (Network Address Translation、NAT) を使っています. これは、家庭やビジネスでよく使われているプライベートネットワーク上のデバイスから、ネットワークで1つの IP アドレスしか持っていないにもかかわらず、外部ネットワークにアクセスするための仕組みです. 残念なことに、すべての NAT デバイスが同じに作られているわけではなく、またそのうちいくつかは SSH で使われているような長時間持続し時折使われる TCP 接続を不正に閉じてしまいます. これは一般的に、 クライアントプログラムが終了していないにも関わらず突然サーバーと対話できなくなるという形で識別できます.

この問題を解決するために、OpenSSH クライアントとサーバーでは 'keep alive'、すなわちリンクの持続状況を維持・確認するための不可視なメッセージを送信するよう設定できます:


 * ローカルサーバーに接続しているすべてのクライアントに対して keep alive を有効にするには、 (またはその他の秒単位の値)を  ファイルで設定します.
 * ローカルクライアントから接続するすべてのサーバーに対して keep alive を有効にするには、 (またはその他の秒単位の値)を  ファイルで設定します.

X11 フォワーディングでフォワーディングまたはトンネリングされない
問題点: X11 フォワーディングを許可するように設定ファイルを変更した後も X アプリケーションがサーバー上で実行され、クライアントにフォワーディングされない.

解決策: おそらく、リモートサーバーやホストへの SSH ログインの間に DISPLAY 変数が unset されたか、または SSH セッションがそれをセットした後にセットされています.

この状況をテストするには、リモートログインの後に以下を実行します:

出力は  か、あるいはサーバー側で   の設定をしている場合は   といったものになるはずです. 通常の  が表示されない場合、 中の DISPLAY 変数が unset または再初期化されていないことを確認してください. もしそうなっていたら、SSH ログインの途中で 内のそのコードが実行されないようにするため、 DISPLAY 変数のカスタムした初期化をすべて削除またはコメントアウトしてください:

上のコマンドの  は適切なユーザー名に必ず置き換えてください.

この作業を完了させるために使える方法として、ユーザーの ファイルでエイリアスを定義するというものがあります.

参考

 * Securing the SSH service (セキュリティーハンドブック)
 * Gentoo ハンドブック — インストール — SSHデーモンの開始
 * Sakaki%27s_EFI_Install_Guide/Setting_Up_Networking_and_Connecting_via_ssh
 * Gentoo ハンドブック — インストール — SSHデーモンの開始
 * Sakaki%27s_EFI_Install_Guide/Setting_Up_Networking_and_Connecting_via_ssh
 * Gentoo ハンドブック — インストール — SSHデーモンの開始
 * Sakaki%27s_EFI_Install_Guide/Setting_Up_Networking_and_Connecting_via_ssh
 * Sakaki%27s_EFI_Install_Guide/Setting_Up_Networking_and_Connecting_via_ssh

外部の情報

 * Securing OpenSSH - Gentoo 開発者 ドキュメント.
 * — SSH Proxy Command -- connect.c
 * https://lonesysadmin.net/2011/11/08/ssh-escape-sequences-aka-kill-dead-ssh-sessions/amp/ - エスケープシーケンスについてのブログ記事.
 * https://hackaday.com/2017/10/18/practical-public-key-cryptography/ - Practical public key cryptography (Hackaday).
 * wiki.archlinux.org の SSH 記事