まず、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のインストールMySQLソフトウェアをダウンロードし、インストールパスを変更しますMy...
説明する: Windows 10 に VM をインストールし、VM で Docker を実行し、Do...
序文インターネット上にはデータベースの最適化に関する情報や方法が数多くありますが、その多くは品質にば...
この記事では、マウスドラッグ効果を実現するためのJavaScriptの具体的なコードを参考までに紹介...
目次問題の概要問題の再現問題の拡大結論は問題の概要今日、仕事中に、DBA が突然、SQL に暗黙的な...
1. nginxソースディレクトリに新しいrtmpディレクトリを作成し、git clone http...
1. HTMLの概要htyper テキスト マークアップ言語 ハイパーテキスト マークアップ言語ハ...
目次1. 何ですか2. 使用数値列挙文字列列挙異種列挙自然3. 応用シナリオ要約する1. 何ですか列...
目次1. 自己増分値はどこに保存されますか? 2. 自己価値修正メカニズム3. 自動増分値を変更する...
目次1. 解決策2. サーバーから返されたトークンをブラウザに保存する3. リクエストにアクセス権限...
1. ダウンロード参考: 2. D:\MySQL\mysql-5.7.24 などの固定の場所に解凍し...
Linux は現在最も広く使用されているサーバー オペレーティング システムです。Unix をベー...
画像リンク <img src="" /> jsを使用してURLが有効...
show-header属性を使用したドキュメントのヒントshow-header <el-テーブ...