まず、docker に openssh-server をインストールします。インストールが完了したら、openssh-server のインストール ディレクトリ /etc/ssh に切り替えます。 ssh-keygen を実行して対応するキーを生成します。 まず、次の内容を含む sshd 構成ファイル sshd_config を確認します。 ホストキー /etc/ssh/ssh_host_rsa_key #ホストキー /etc/ssh/ssh_host_dsa_key ホストキー /etc/ssh/ssh_host_ecdsa_key ホストキー /etc/ssh/ssh_host_ed25519_key 暗号化方式には、rsa、dsa、ecdsa、ed25519 などがあります。これらの暗号化方式に応じて、対応するキー ペアが生成されます。 [root@655f62a4ed82 ssh]# ssh-keygen -t rsa //rsaを生成 公開/秘密 RSA キー ペアを生成しています。 キーを保存するファイル (/root/.ssh/id_rsa) を入力します。 パスフレーズを入力してください (パスフレーズがない場合は空白): 同じパスフレーズをもう一度入力してください: あなたの識別情報は /root/.ssh/id_rsa に保存されました。 公開鍵は /root/.ssh/id_rsa.pub に保存されました。 キーのフィンガープリントは次のとおりです。 0e:fa:07:36:bb:87:c1:60:14:be:41:41:01:1b:4b:bc ルート@655f62a4ed82 キーのランダムアート画像は次のとおりです。 +--[RSA 2048]----+ | .+o*+ | | ..*. | |おおおお| | えーーーー | | ..o. S | | .*o | | .. *. | | .oo | | o+ | +-----------------+ [root@655f62a4ed82 ssh]# ssh-keygen -t dsa //dsaを生成 公開/秘密 DSA キー ペアを生成しています。 キーを保存するファイル (/root/.ssh/id_dsa) を入力します。 パスフレーズを入力してください (パスフレーズがない場合は空白): 同じパスフレーズをもう一度入力してください: あなたの識別情報は /root/.ssh/id_dsa に保存されました。 公開鍵は /root/.ssh/id_dsa.pub に保存されました。 キーのフィンガープリントは次のとおりです。 ee:8c:db:a8:24:68:0d:33:79:eb:09:33:ed:74:c3:66 ルート@655f62a4ed82 キーのランダムアート画像は次のとおりです。 +--[DSA 1024]----+ | | | | | | | . | | = . S | | .B o . | |.=.=.E . | |.Bo= .* | | +..+.+ | +-----------------+ [root@655f62a4ed82 ssh]# ssh-keygen -t ecdsa //ecdsaを生成 公開/秘密 ecdsa キー ペアを生成しています。 キーを保存するファイル (/root/.ssh/id_ecdsa) を入力します。 パスフレーズを入力してください (パスフレーズがない場合は空白): 同じパスフレーズをもう一度入力してください: あなたの識別情報は /root/.ssh/id_ecdsa に保存されました。 公開鍵は /root/.ssh/id_ecdsa.pub に保存されました。 キーのフィンガープリントは次のとおりです。 84:74:de:d1:e4:98:a1:5c:27:25:8e:b7:d6:27:fd:c9 ルート@655f62a4ed82 キーのランダムアート画像は次のとおりです。 +--[ECDSA 256]---+ | . . *++ | | . = * X. | | . * * . | | . . o . | |S ooo | | . お...| | E.| | | | | +-----------------+ [root@655f62a4ed82 ssh]# ssh-keygen -t ed25519 公開/秘密 ed25519 キー ペアを生成しています。 キーを保存するファイル (/root/.ssh/id_ed25519) を入力します。 パスフレーズを入力してください (パスフレーズがない場合は空白): 同じパスフレーズをもう一度入力してください: あなたの識別情報は /root/.ssh/id_ed25519 に保存されました。 公開鍵は /root/.ssh/id_ed25519.pub に保存されました。 キーのフィンガープリントは次のとおりです。 d8:40:95:1f:07:96:8a:83:7f:af:19:01:3b:b4:79:91 ルート@655f62a4ed82 キーのランダムアート画像は次のとおりです。 +--[ED25519 256--+ | ....うーん | | . .oo . | | .+.Eo o | | ..oO... | | .*.S | | .o.. | ... | | o. | | o. | +-----------------+ [root@655f62a4ed82 ssh]# cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys キー ペアが生成されたら、sshd_config 内の上記ファイルの場所を変更する必要があります。 ホストキー /root/.ssh/id_rsa ホストキー /root/.ssh/id_dsa ホストキー /root/.ssh/id_ecdsa ホストキー /root/.ssh/id_ed25519 /usr/sbin/sshd を実行して、ポート 22 が有効になっているかどうかを確認します。有効になっている場合は、起動が成功したことを示します。 [root@655f62a4ed82 ssh]# /usr/sbin/sshd [root@655f62a4ed82 ssh]# lsof -i:22 コマンド PID ユーザー FD タイプ デバイス サイズ/オフ ノード名 sshd 37 ルート 3u IPv4 250907 0t0 TCP *:ssh (LISTEN) sshd 37 ルート 4u IPv6 250909 0t0 TCP *:ssh (LISTEN) 追加情報: Docker コンテナで sshd プロセスを実行すると、リモート ログインがクラッシュします (終了ステータス 254) 注記: 背景 コンテナ内で sshd プロセスが実行され、外部リモート接続用のポートがマッピングされます。接続するたびにパスワード入力後すぐにログアウトされてしまいます。現象は以下のようになります。 [root@localhost /]# ssh [email protected] -p 8000 [email protected]のパスワード: 最終ログイン: 2018年11月6日火曜日 14:46:17 192.168.0.6から 192.168.0.6 への接続が閉じられました。 デバッグ情報を確認すると、最終的な終了時の出力は次のようになります。 ...... 192.168.0.6 への接続が閉じられました。 転送: 送信 2264、受信 2224 バイト、0.0 秒 1秒あたりのバイト数: 送信 235367.6、受信 231209.1 debug1: 終了ステータス 254 分析する プリントアウトには前回のログイン情報がすでに記載されており、パスワードは正しく入力されており、システムにログインできたはずですが、環境の初期化中に失敗しました。まず、hosts.deny の設定を検討しました。関連する設定をコメントした後も、問題は依然として存在します。 インターネット上では、sshd 設定ファイル内の UsePAM 設定をコメントアウトすると、pam 認証モジュールを使用しないことを意味すると言われています。
sshd プロセスを変更して再起動すると、期待どおりに動作します。理由としては、いずれもデフォルト設定でタイムアウト切断機能が有効になっているためとのことでした。これはナンセンスです。デフォルトのリンク切断時間がそれほど短くなるはずはなく、非 Docker 環境で sshd プロセスが正常に実行される理由です。私はこの理由を受け入れません。それではもう一度見てみましょう。 pam 認証を使用しない場合は問題ないので、/etc/pam.d/ 内の sshd 関連の設定を一つずつコメントアウトしてみましたが、それでも問題は見つかりませんでした。 この時点で、pam ログを確認すると、何らかの手がかりが得られるはずだと考えました。ちなみに、RedHat と CentOS は pam ログを /var/log/secure に保存し、Ubuntu と Debian は認証情報を /var/log/auth.log に保存します。 案の定、pam にエラー メッセージが表示されます。 11月6日 15:36:56 bbb sshd[11016]: 192.168.0.6 ポート56394 ssh2 から root のパスワードを受け入れました 11月6日 15:36:56 bbb sshd[11016]: pam_limits(sshd:session): 'nproc' の制限を設定できませんでした: 操作は許可されていません 11月6日 15:36:56 bbb sshd[11016]: pam_limits(sshd:session): 'nofile' の制限を設定できませんでした: 操作は許可されていません 11月6日 15:36:56 bbb sshd[11016]: pam_limits(sshd:session): 'memlock' の制限を設定できませんでした: 操作は許可されていません 11月6日 15:36:56 bbb sshd[11016]: pam_unix(sshd:session): (uid=0) によってユーザー root のセッションが開かれました 11月6日 15:36:56 bbb sshd[11016]: エラー: PAM: pam_open_session(): 権限が拒否されました 11月6日 15:36:56 bbb sshd[11016]: 192.168.0.6から切断を受信しました: 11: ユーザーによって切断されました これは、nproc、nofile、memlock などのパラメータを設定する権限が不十分なために発生していることがわかります。これらの構成は pam コンポーネントにあり、次の 2 つのファイルに保存されています。
これら 2 つのファイル内の関連する設定をコメント アウトし、PAM 認証をオンにすると、SSH 接続が成功します。それが問題なのです。 他の方法もあります 1. 権限不足が原因であるため、コンテナの起動時に--privilegedパラメータを指定して、権限のあるユーザーを使用して問題を解決します。 2. ulimitsの設定にエラーがあるため、コンテナの起動時に--ulimit=[]パラメータを使用して設定することができます。 docker で sshd 操作を有効にする方法については、上記の記事が皆さんに共有できるすべてです。これが皆さんの参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: WeChatアプレット開発の共通機能と使用方法のまとめ
>>: MySQLクエリデータを時間別に表示します。データがない場合は0を入力してください。
簡単に言うと、srcは「このリソースをロードしたい」という意味で、hrefは「このリソースに関連付け...
Windows で Nginx を使用するには、Nginx サービスの起動、停止、Nginx のリロ...
1. Vue - 最初の vue-cli プログラムVueの開発はNodeJSに基づいています。実際...
1. 概要1.1 基本概念: Docker は、Go 言語をベースにしたオープンソースのアプリケーシ...
データ内に次のような特徴を持つ「 ' 」などの文字が含まれることがあります。 &# ...
この記事では、ショッピングカートを実装するためのJavaScriptの具体的なコードを参考までに紹介...
目次インストール不要のMySQLバージョン1. インストール パッケージをダウンロードします。 2....
tomcat が起動されるたびに、次のログ ファイルがログ ディレクトリに自動的に生成され、日付順...
この記事では主に、MySQL バイナリ パッケージのインストール/起動/シャットダウンのプロセスを紹...
Nginx はネストされた if ステートメントをサポートしておらず、if ステートメントでの論理判...
目次序文1. ファントムリーディングとは何ですか? 2. ファントムリーディングの問題点は何ですか?...
JSON は、言語に依存しないテキスト形式を使用する軽量のデータ交換形式で、XML に似ていますが、...
1. CentOS Linuxにffmpegをインストールする1.ダウンロードして解凍する http...
目次jQuery の $.ajax Webpack時代の始まり約束について深く考えるネストをなくすj...
ナビゲーションなどは日々の開発でよく使うので、記録として記事を書きます。ナビゲーションは終了/開始位...