まず、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を入力してください。
この記事では、例を使用して、MySQL トリガーの概要、トリガーの作成方法、およびトリガーの使用上の...
会議中に同僚から開発ライブラリを書き込めないとの報告を受けました。エラー メッセージは次のとおりでし...
目次ポータルエラー境界処理エラー境界を使用しない場合はどうなりますか?注記ポータルスロットとも言えま...
簡単な説明以前 Centos7 で構築し、その後個人開発環境として Ubuntu 20.04 を使っ...
Linux の /etc/network/interfaces ファイルは、ネットワーク インターフ...
ネイティブ JS で実装したリアルタイム クロック エフェクトを共有します。エフェクトは以下のとおり...
目次1. スロットを使用してコンポーネントを理解しやすくし、より強力にする2. Vuexストアを正し...
Vue を使用してプロジェクトを開発する過程で、次のような問題によく遭遇します。Vue のデータでオ...
<br />読みやすさはウェブサイトにとって非常に重要な部分であり、ウェブサイトの核心と...
1. ユーザーとパスワードの作成方法1. MySQLデータベースに入る mysql> mysq...
序文実際のプロジェクトでは、最も一般的な処理は計算とループロジックである可能性があります。配列でre...
方法 1: hostnamectl の変更ステップ1 ホスト名を確認するホスト名ステップ2 ホスト名...
mysqlはbinlogログを正しくクリーンアップします序文: MySQL の binlog はデー...
1 問題の説明Vue3 の統合 API は、defineComponent やその他の関数が認識でき...
PostgreSQL はコンパイルされインストールされるため、起動時に起動するように設定する必要があ...