<?xml version="1.0" encoding="utf-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><title>系统PLUS博客</title><link>https://sysplus.top/</link><description>系统PLUS博客</description><item><title>1Panel安装及使用（Ubuntu服务器运维面板工具）</title><link>https://sysplus.top/?id=8</link><description>&lt;p&gt;
    &lt;img class=&quot;ue-image&quot; src=&quot;https://sysplus.top/zb_users/upload/2025/08/202508131755017366380244.png&quot; title=&quot;f12.png&quot; alt=&quot;f12.png&quot; width=&quot;644&quot; height=&quot;392&quot; style=&quot;width: 644px; height: 392px;&quot;/&gt;
&lt;/p&gt;
&lt;p &gt;
    1Panel 是一个现代化的 Linux 服务器运维管理面板，支持可视化管理服务器、网站、数据库等。在 Ubuntu 上安装 1Panel 非常简单，以下是具体步骤：
&lt;/p&gt;
&lt;p style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding: 0px; line-height: 28px; font-size: 16px; overflow-anchor: auto; font-family: Inter, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;SF Pro SC&amp;quot;, &amp;quot;SF Pro Display&amp;quot;, &amp;quot;SF Pro Icons&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; text-wrap-mode: wrap; background-color: rgb(255, 255, 255); margin-top: 0px !important; color: rgba(0, 0, 0, 0.85) !important;&quot;&gt;
    &lt;span style=&quot;font-size: 18px;&quot;&gt;&lt;br/&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding: 0px; line-height: 28px; font-size: 16px; overflow-anchor: auto; font-family: Inter, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;SF Pro SC&amp;quot;, &amp;quot;SF Pro Display&amp;quot;, &amp;quot;SF Pro Icons&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; text-wrap-mode: wrap; background-color: rgb(255, 255, 255); margin-top: 0px !important; color: rgba(0, 0, 0, 0.85) !important;&quot;&gt;
    &lt;span style=&quot;font-size: 18px;&quot;&gt;安装步骤&lt;/span&gt;
&lt;/p&gt;
&lt;ol class=&quot;auto-hide-last-sibling-br list-paddingleft-2&quot; style=&quot;list-style-type: none;&quot;&gt;
    &lt;li&gt;
        &lt;div class=&quot;auto-hide-last-sibling-br paragraph-JOTKXA paragraph-element br-paragraph-space&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; line-height: 28px; overflow-anchor: auto;&quot;&gt;
            &lt;span style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; font-weight: 600; line-height: 28px; overflow-anchor: auto; color: #000000 !important;&quot;&gt;更新系统包&lt;/span&gt;（可选但推荐）：
        &lt;/div&gt;
        &lt;div class=&quot;relative w-fit custom-code-block-canvas-wrapper w-full&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; position: relative; width: 769px; overflow-anchor: auto;&quot;&gt;
            &lt;div class=&quot;code-block-element-YDlfvc light custom-code-block-container--bash hide-indicator disable-theme-style custom-code-block-container&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 8px 0px 0px; padding: 0px; display: flex; flex-direction: column; position: relative; --chat-md-codeblock-bg-color: #f9fafb; --chat-md-codeblock-header-bg-color: #f3f4f6; --code-area-radius: 6px; --code-area-radius-inner: calc(6px - 1px); --code-area-bg-color: #f9fafb; --code-header-bg-color: #f3f4f6; --code-mask-bg-color: linear-gradient(180deg,rgba(249,250,251,0),#f9fafb); --code-header-icon-color: rgba(0,0,0,.5); --code-header-text-color: rgba(0,0,0,.85); --code-header-icon-bg-color: rgba(0,0,0,.06); --code-block-code-color: #000000d9; --code-block-std-bg-color: #f3f4f6; --code-block-std-err-color: #d60000; overflow-anchor: auto;&quot;&gt;
                &lt;div class=&quot;code-area-tZtDgG code-area&quot; dir=&quot;ltr&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 250, 251); border-radius: 6px; display: flex; flex-direction: column; height: fit-content; width: 769px; overflow-anchor: auto;&quot;&gt;
                    &lt;div class=&quot;header-wrapper-UnnlXS&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto; background-color: rgb(255, 255, 255); position: sticky; top: 0px;&quot;&gt;
                        &lt;div class=&quot;header-cGu84a&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border-width: 1px 1px 0px; border-style: solid; border-color: rgba(0, 0, 0, 0.08); border-image: none 100% / 1 / 0 stretch; margin: 0px; padding: 6px 9px 6px 6px; align-items: center; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(243, 244, 246); display: flex; flex-direction: row; flex-shrink: 0; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; height: 32px; justify-content: space-between; border-radius: 5px 5px 0px 0px; overflow-anchor: auto;&quot;&gt;
                            &lt;div class=&quot;title-XQhI4x clickable-eGISjP&quot; tabindex=&quot;0&quot; aria-describedby=&quot;1kl5w1r&quot; data-popupid=&quot;1kl5w1r&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px 4px 0px 10px; overflow-anchor: auto; align-items: center; border-radius: 4px; color: rgba(0, 0, 0, 0.5); display: flex; flex-direction: row; gap: 3px; cursor: pointer;&quot;&gt;
                                &lt;div class=&quot;text-jgT4jF&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto; align-items: center; color: rgba(0, 0, 0, 0.85); display: flex; font-family: &amp;quot;PingFang SC&amp;quot;; font-size: 14px; gap: 3px; line-height: 22px; overflow: hidden; text-overflow: ellipsis; text-wrap-mode: nowrap;&quot;&gt;
                                    bash
                                &lt;/div&gt;
                                &lt;div class=&quot;icon-FIfuuc&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto; align-items: center; display: flex; height: 20px; justify-content: center; position: relative; width: 15px;&quot;&gt;
                                    &lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-12&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                                        &lt;path fill=&quot;currentColor&quot; d=&quot;M21.707 17.293a1 1 0 0 1-1.414 0L12 9l-8.293 8.293a1 1 0 0 1-1.414-1.414l8.293-8.293a2 2 0 0 1 2.828 0l8.293 8.293a1 1 0 0 1 0 1.414&quot;&gt;&lt;/path&gt;
                                    &lt;/svg&gt;&lt;/span&gt;
                                &lt;/div&gt;
                            &lt;/div&gt;
                            &lt;div class=&quot;action-tEcs3i&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto; align-items: center; color: rgba(0, 0, 0, 0.5); cursor: pointer; display: flex; flex-direction: row; gap: 8px; justify-content: space-between;&quot;&gt;
                                &lt;div class=&quot;hoverable-sPLxOT&quot; data-testid=&quot;code-block-copy&quot; tabindex=&quot;0&quot; aria-describedby=&quot;87kjaga&quot; data-popupid=&quot;87kjaga&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; align-items: center; display: flex; height: 20px; justify-content: center; position: relative; width: 20px; overflow-anchor: auto;&quot;&gt;
                                    &lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-14&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; font-size: 14px; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                                        &lt;path fill=&quot;currentColor&quot; fill-rule=&quot;evenodd&quot; d=&quot;M21 3.5V17a2 2 0 0 1-2 2h-2v-2h2V3.5H9v2h5.857c1.184 0 2.143.895 2.143 2v13c0 1.105-.96 2-2.143 2H5.143C3.959 22.5 3 21.605 3 20.5v-13c0-1.105.96-2 2.143-2H7v-2a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2m-6.143 4H5.143v13h9.714z&quot; clip-rule=&quot;evenodd&quot;&gt;&lt;/path&gt;
                                    &lt;/svg&gt;&lt;/span&gt;
                                &lt;/div&gt;
                                &lt;div class=&quot;hoverable-sPLxOT&quot; tabindex=&quot;0&quot; aria-describedby=&quot;hycenm3&quot; data-popupid=&quot;hycenm3&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; align-items: center; display: flex; height: 20px; justify-content: center; position: relative; width: 20px; overflow-anchor: auto;&quot;&gt;
                                    &lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-14&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; font-size: 14px; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                                        &lt;path fill=&quot;currentColor&quot; fill-rule=&quot;evenodd&quot; d=&quot;M4 4a1 1 0 0 1 1 1v3a3 3 0 0 0 3 3h11.086l-5.293-5.293a1 1 0 0 1 1.414-1.414l7 7a1 1 0 0 1 0 1.414l-7 7a1 1 0 0 1-1.414-1.414L19.086 13H8a5 5 0 0 1-5-5V5a1 1 0 0 1 1-1&quot; clip-rule=&quot;evenodd&quot;&gt;&lt;/path&gt;
                                    &lt;/svg&gt;&lt;/span&gt;
                                &lt;/div&gt;
                                &lt;div class=&quot;hoverable-sPLxOT&quot; tabindex=&quot;0&quot; aria-describedby=&quot;nmy9q8x&quot; data-popupid=&quot;nmy9q8x&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; align-items: center; display: flex; height: 20px; justify-content: center; position: relative; width: 20px; overflow-anchor: auto;&quot;&gt;
                                    &lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-14&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; font-size: 14px; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                                        &lt;path fill=&quot;currentColor&quot; fill-rule=&quot;evenodd&quot; d=&quot;M4.797 16.856a8.28 8.28 0 0 0 6.27 2.87h.008A8.28 8.28 0 0 0 14.372 3.84a11.6 11.6 0 0 1-1.658 7.714 11.62 11.62 0 0 1-7.917 5.303M13.415 1.43a10.28 10.28 0 0 1-2.348 20.296 10.28 10.28 0 0 1-8.883-5.103c-.397-.74.155-1.605.912-1.609a9.617 9.617 0 0 0 9.011-12.258 1.093 1.093 0 0 1 1.308-1.326&quot; clip-rule=&quot;evenodd&quot;&gt;&lt;/path&gt;
                                    &lt;/svg&gt;&lt;/span&gt;
                                &lt;/div&gt;
                                &lt;div class=&quot;hoverable-sPLxOT&quot; tabindex=&quot;0&quot; aria-describedby=&quot;s2rwabd&quot; data-popupid=&quot;s2rwabd&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; align-items: center; display: flex; height: 20px; justify-content: center; position: relative; width: 20px; overflow-anchor: auto;&quot;&gt;
                                    &lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-14&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; font-size: 14px; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                                        &lt;path fill=&quot;currentColor&quot; d=&quot;M22 3v7a1 1 0 1 1-2 0V4h-6a1 1 0 1 1 0-2h7a1 1 0 0 1 1 1M11.005 21a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1v-7a1 1 0 0 1 2.002 0v6h6.003a1 1 0 0 1 1 1&quot;&gt;&lt;/path&gt;
                                    &lt;/svg&gt;&lt;/span&gt;
                                &lt;/div&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;content-EGRozu code-content light-scrollbar-TbsSwi&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border-width: 0px 1px 1px; border-style: solid; border-color: rgba(0, 0, 0, 0.08); border-image: initial; margin: 0px; padding: 12px 16px 16px; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; flex-shrink: 0; height: fit-content; overflow: overlay; overflow-anchor: auto; border-radius: 0px 0px 5px 5px;&quot;&gt;
                        &lt;pre class=&quot;container-_HmLba language-bash&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin-top: 0px; margin-bottom: 0px; padding: 0px; font-family: ui-monospace, SFMono-Regular, &amp;quot;SF Mono&amp;quot;, Menlo, Consolas, &amp;quot;Liberation Mono&amp;quot;, monospace; overflow-wrap: normal; font-feature-settings: normal; font-size: 13.6px; font-variation-settings: normal; --code-text_v3: #000000d9; --code-doc_v3: #00000073; --code-Link_v3: #2f74ff; --code-number_v3: #e54595; --code-keycontrol_v3: #9952e1; --code-function_v3: #ff5d4d; --code-variable_v3: #000000d9; --code-parameter_v3: #4da621; --code-attributes_v3: #c70; --code-selection-bg-color: #a9d6ff; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); color: rgb(0, 0, 0); word-break: normal; word-spacing: normal; hyphens: none; line-height: 1.5; tab-size: 4; overflow: auto; border-radius: 6px; overflow-anchor: auto; width: fit-content;&quot;&gt;sudo apt update &amp;amp;&amp;amp; sudo apt upgrade -y&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;mask-wrapper-VgpgeU&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto; opacity: 0; transition: opacity 0.15s;&quot;&gt;
                        &lt;div class=&quot;mask-ZLHDuN&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; background: linear-gradient(rgba(249, 250, 251, 0), rgb(249, 250, 251)) 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); bottom: 0px; height: 56px; pointer-events: none; position: absolute; width: 769px; overflow-anchor: auto;&quot;&gt;&lt;/div&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;canvas_wrapper-IbhP3H exited-lytMPl&quot; data-testid=&quot;canvas-wrapper&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; visibility: hidden; z-index: 10; border-radius: 12px; height: 83px; opacity: 0; pointer-events: none; position: absolute; right: 0px; top: 0px; width: 769px; --canvas-radius-size: 12px; overflow-anchor: auto; --offset-width: 769px; --offset-height: 83px; --left-side-width: 280px; --sash-pct: calc(35vw + 280px);&quot;&gt;
                &lt;div data-testid=&quot;canvas_panel_container&quot; data-visible=&quot;false&quot; class=&quot;container-outer-PoCILM&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; display: flex; flex-direction: column; height: 83px; width: 769px; overflow-anchor: auto;&quot;&gt;
                    &lt;div class=&quot;container-lYUJLU&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; border-radius: 12px; box-shadow: rgba(42, 60, 79, 0.1) 0px 6px 10px 0px; display: flex; flex-direction: column; height: 83px; position: relative; transition: border-radius 0.4s ease-in-out; flex: 1 1 0%; min-height: 0px; width: 769px; overflow-anchor: auto;&quot;&gt;
                        &lt;div class=&quot;container-inner-__4VjI canvas_wrapper_inner-xCm3Bf&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; flex: 1 1 0%; min-height: 0px; width: 769px; border-radius: 12px; overflow: hidden; transition: border-radius 0.4s ease-in-out; overflow-anchor: auto;&quot;&gt;
                            &lt;div style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto; width: 769px; height: 83px;&quot;&gt;
                                &lt;div class=&quot;code-canvas code-canvas-theme samantha-theme semi-always-light container-AkpoGq&quot; data-theme=&quot;light&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; height: 83px; width: 769px; --canvas-header-height: 56px; color: rgb(0, 0, 0); --canvas-color-bg-1: #fff; --canvas-color-bg-2: #fff; --canvas-color-text-1: #000; --canvas-color-text-2: #000; --code-editor-header-width: 56px; --code-editor-file-tree-width: 212px; --semi-amber-0: 254,251,235; --semi-amber-1: 252,245,206; --semi-amber-2: 249,232,158; --semi-amber-3: 246,216,111; --semi-amber-4: 243,198,65; --semi-amber-5: 240,177,20; --semi-amber-6: 200,138,15; --semi-amber-7: 160,102,10; --semi-amber-8: 120,70,6; --semi-amber-9: 80,43,3; --semi-black: 0,0,0; --semi-blue-0: 234,245,255; --semi-blue-1: 203,231,254; --semi-blue-2: 152,205,253; --semi-blue-3: 101,178,252; --semi-blue-4: 50,149,251; --semi-blue-5: 0,100,250; --semi-blue-6: 0,98,214; --semi-blue-7: 0,79,179; --semi-blue-8: 0,61,143; --semi-blue-9: 0,44,107; --semi-cyan-0: 229,247,248; --semi-cyan-1: 194,239,240; --semi-cyan-2: 138,221,226; --semi-cyan-3: 88,203,211; --semi-cyan-4: 44,184,197; --semi-cyan-5: 5,164,182; --semi-cyan-6: 3,134,152; --semi-cyan-7: 1,105,121; --semi-cyan-8: 0,77,91; --semi-cyan-9: 0,50,61; --semi-green-0: 236,247,236; --semi-green-1: 208,240,209; --semi-green-2: 164,224,167; --semi-green-3: 125,209,130; --semi-green-4: 90,194,98; --semi-green-5: 59,179,70; --semi-green-6: 48,149,59; --semi-green-7: 37,119,47; --semi-green-8: 27,89,36; --semi-green-9: 17,60,24; --semi-grey-0: 249,249,249; --semi-grey-1: 230,232,234; --semi-grey-2: 198,202,205; --semi-grey-3: 167,171,176; --semi-grey-4: 136,141,146; --semi-grey-5: 107,112,117; --semi-grey-6: 85,91,97; --semi-grey-7: 65,70,76; --semi-grey-8: 46,50,56; --semi-grey-9: 28,31,35; --semi-indigo-0: 236,239,248; --semi-indigo-1: 209,216,240; --semi-indigo-2: 167,179,225; --semi-indigo-3: 128,144,211; --semi-indigo-4: 94,111,196; --semi-indigo-5: 63,81,181; --semi-indigo-6: 51,66,161; --semi-indigo-7: 40,52,140; --semi-indigo-8: 31,40,120; --semi-indigo-9: 23,29,99; --semi-light-blue-0: 233,247,253; --semi-light-blue-1: 201,236,252; --semi-light-blue-2: 149,216,248; --semi-light-blue-3: 98,195,245; --semi-light-blue-4: 48,172,241; --semi-light-blue-5: 0,149,238; --semi-light-blue-6: 0,123,202; --semi-light-blue-7: 0,99,167; --semi-light-blue-8: 0,75,131; --semi-light-blue-9: 0,53,95; --semi-light-green-0: 243,248,236; --semi-light-green-1: 227,240,208; --semi-light-green-2: 200,226,165; --semi-light-green-3: 173,211,126; --semi-light-green-4: 147,197,91; --semi-light-green-5: 123,182,60; --semi-light-green-6: 100,152,48; --semi-light-green-7: 78,121,38; --semi-light-green-8: 57,91,27; --semi-light-green-9: 37,61,18; --semi-lime-0: 242,250,230; --semi-lime-1: 227,246,197; --semi-lime-2: 203,237,142; --semi-lime-3: 183,227,91; --semi-lime-4: 167,218,44; --semi-lime-5: 155,209,0; --semi-lime-6: 126,174,0; --semi-lime-7: 99,139,0; --semi-lime-8: 72,104,0; --semi-lime-9: 47,70,0; --semi-orange-0: 255,248,234; --semi-orange-1: 254,238,204; --semi-orange-2: 254,217,152; --semi-orange-3: 253,193,101; --semi-orange-4: 253,166,51; --semi-orange-5: 252,136,0; --semi-orange-6: 210,103,0; --semi-orange-7: 168,74,0; --semi-orange-8: 126,49,0; --semi-orange-9: 84,29,0; --semi-pink-0: 253,236,239; --semi-pink-1: 251,207,216; --semi-pink-2: 246,160,181; --semi-pink-3: 242,115,150; --semi-pink-4: 237,72,123; --semi-pink-5: 233,30,99; --semi-pink-6: 197,19,86; --semi-pink-7: 162,11,72; --semi-pink-8: 126,5,58; --semi-pink-9: 90,1,43; --semi-purple-0: 247,233,247; --semi-purple-1: 239,202,240; --semi-purple-2: 221,155,224; --semi-purple-3: 201,111,209; --semi-purple-4: 180,73,194; --semi-purple-5: 158,40,179; --semi-purple-6: 135,30,158; --semi-purple-7: 113,22,138; --semi-purple-8: 92,15,117; --semi-purple-9: 73,10,97; --semi-red-0: 254,242,237; --semi-red-1: 254,221,210; --semi-red-2: 253,183,165; --semi-red-3: 251,144,120; --semi-red-4: 250,102,76; --semi-red-5: 249,57,32; --semi-red-6: 213,37,21; --semi-red-7: 178,20,12; --semi-red-8: 142,8,5; --semi-red-9: 106,1,3; --semi-teal-0: 228,247,244; --semi-teal-1: 192,240,232; --semi-teal-2: 135,224,211; --semi-teal-3: 84,209,193; --semi-teal-4: 39,194,176; --semi-teal-5: 0,179,161; --semi-teal-6: 0,149,137; --semi-teal-7: 0,119,111; --semi-teal-8: 0,89,85; --semi-teal-9: 0,60,58; --semi-violet-0: 243,237,249; --semi-violet-1: 226,209,244; --semi-violet-2: 196,167,233; --semi-violet-3: 166,127,221; --semi-violet-4: 136,91,210; --semi-violet-5: 106,58,199; --semi-violet-6: 87,47,179; --semi-violet-7: 70,37,158; --semi-violet-8: 54,28,138; --semi-violet-9: 40,20,117; --semi-white: 255,255,255; --semi-yellow-0: 255,253,234; --semi-yellow-1: 254,251,203; --semi-yellow-2: 253,243,152; --semi-yellow-3: 252,232,101; --semi-yellow-4: 251,218,50; --semi-yellow-5: 250,200,0; --semi-yellow-6: 208,170,0; --semi-yellow-7: 167,139,0; --semi-yellow-8: 125,106,0; --semi-yellow-9: 83,72,0; --s-color-text-primary-raw: 0,0,0; --s-color-text-secondary: rgba(0,0,0,.85); --s-color-text-tertiary: rgba(0,0,0,.5); --s-color-text-quaternary: rgba(0,0,0,0.3); --s-color-text-disable: rgba(0,0,0,0.15); --s-color-bg-primary: #fff; --s-color-bg-secondary: #f9fafb; --s-color-bg-tertiary: #f3f4f6; --s-color-bg-trans: rgba(0,0,0,.04); --s-color-bg-trans-tertiary: rgba(0,0,0,.2); --s-color-bg-dialogs: #fff; --s-color-bg-float: #fff; --s-color-bg-body: #fff; --s-color-bg-body-raw: #f3f4f6; --s-color-bg-base: #f3f4f6; --s-color-bg-trans-primary: rgba(0,0,0,.06); --s-color-bg-intact-primary: #fff; --s-color-alert-raw: #ff3b30; --s-color-system-alert-lighten: #ffebea; --s-color-border-tertiary: rgba(0,0,0,.08); overflow-anchor: auto;&quot;&gt;
                                    &lt;div class=&quot;canvas-header-Bc97DC&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border-width: 0px 0px 1px; border-style: solid; border-top-color: initial; border-right-color: initial; border-bottom-color: rgba(0, 0, 0, 0.08); border-left-color: initial; border-image: initial; margin: 0px; padding: 0px 16px; align-items: center; display: grid; gap: 4px; grid-template-columns: minmax(min-content, 1fr) auto minmax(min-content, 1fr); height: 56px; overflow: hidden; overflow-anchor: auto;&quot;&gt;
                                        &lt;div class=&quot;canvas-header-left-_q3MyW&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; align-items: center; display: flex; gap: 4px; overflow: hidden; overflow-anchor: auto;&quot;&gt;
                                            &lt;div style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto;&quot;&gt;
                                                &lt;div class=&quot;flex items-center gap-4&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; display: flex; align-items: center; gap: 4px; overflow-anchor: auto;&quot;&gt;
                                                    &lt;span class=&quot;inline-flex items-center mr-4 h-20&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px 4px 0px 0px; padding: 0px; display: inline-flex; height: 20px; align-items: center; overflow-anchor: auto;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;s-font-small-strong&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-alternates: normal; font-size-adjust: none; font-kerning: auto; font-optical-sizing: auto; font-feature-settings: normal; font-variation-settings: normal; font-variant-position: normal; font-variant-emoji: normal; font-stretch: normal; font-size: 14px; line-height: 22px; overflow-anchor: auto;&quot;&gt;&lt;/span&gt;
                                                &lt;/div&gt;
                                            &lt;/div&gt;
                                        &lt;/div&gt;
                                        &lt;div class=&quot;canvas-header-middle-U3CntG&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; align-items: center; display: flex; gap: 4px; overflow: hidden; grid-column: 2; overflow-anchor: auto;&quot;&gt;&lt;/div&gt;
                                        &lt;div class=&quot;canvas-header-right-Impzx2&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; align-items: center; display: flex; gap: 4px; overflow: hidden; justify-content: flex-end; overflow-anchor: auto;&quot;&gt;
                                            &lt;div class=&quot;header-btn-D1qInr&quot; data-testid=&quot;canvas-copy-btn&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 4px; align-items: center; border-radius: 8px; color: rgba(0, 0, 0, 0.85); cursor: pointer; display: inline-flex; gap: 3px; height: 32px; justify-content: center; width: 69px; overflow-anchor: auto;&quot;&gt;
                                                &lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-18&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; font-size: 18px; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                                                    &lt;path fill=&quot;currentColor&quot; fill-rule=&quot;evenodd&quot; d=&quot;M21 3.5V17a2 2 0 0 1-2 2h-2v-2h2V3.5H9v2h5.857c1.184 0 2.143.895 2.143 2v13c0 1.105-.96 2-2.143 2H5.143C3.959 22.5 3 21.605 3 20.5v-13c0-1.105.96-2 2.143-2H7v-2a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2m-6.143 4H5.143v13h9.714z&quot; clip-rule=&quot;evenodd&quot;&gt;&lt;/path&gt;
                                                &lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;btn-text-QfGaou&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; text-align: center; font-family: &amp;quot;PingFang SC&amp;quot;; font-size: 14px; line-height: 22px; overflow-anchor: auto;&quot;&gt;&lt;/span&gt;
                                            &lt;/div&gt;
                                            &lt;div class=&quot;more-btn-J4rmH9&quot; data-testid=&quot;canvas-more-btn&quot; aria-haspopup=&quot;true&quot; tabindex=&quot;0&quot; aria-describedby=&quot;hc8nuq6&quot; data-popupid=&quot;hc8nuq6&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 7px; align-items: center; aspect-ratio: 1 / 1; border-radius: 4px; cursor: pointer; display: flex; flex-shrink: 0; height: 32px; justify-content: center; width: 32px; overflow-anchor: auto;&quot;&gt;
                                                &lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-18&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; font-size: 18px; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                                                    &lt;path fill=&quot;currentColor&quot; d=&quot;M5.5 11.75a1.75 1.75 0 1 1-3.5 0 1.75 1.75 0 0 1 3.5 0M13.725 11.75a1.75 1.75 0 1 1-3.5 0 1.75 1.75 0 0 1 3.5 0M22 11.75a1.75 1.75 0 1 1-3.5 0 1.75 1.75 0 0 1 3.5 0&quot;&gt;&lt;/path&gt;
                                                &lt;/svg&gt;&lt;/span&gt;
                                            &lt;/div&gt;
                                        &lt;/div&gt;
                                    &lt;/div&gt;
                                    &lt;div class=&quot;code-canvas-body&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; height: calc(100% - 56px); overflow-anchor: auto;&quot;&gt;
                                        &lt;div class=&quot;content-CzlYcX flow-ext-disable-select-bar&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto; width: 769px; height: 27px;&quot;&gt;
                                            &lt;div class=&quot;resizable-wrapper-Xpds17 direction-column-Ky1VA4&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; display: flex; height: 27px; width: 769px; flex-direction: column; overflow-anchor: auto;&quot;&gt;
                                                &lt;div class=&quot;resizable-wrapper-Xpds17 direction-row-Z_nfoI&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; display: flex; height: 27px; width: 769px; flex-direction: row; overflow-anchor: auto; min-height: 0px;&quot;&gt;
                                                    &lt;div class=&quot;canvas-body-content-wBc3CP&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; height: 27px; position: relative; width: 769px; overflow-anchor: auto; min-width: 0px;&quot;&gt;
                                                        &lt;div class=&quot;editor-qpU4Ar&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto; display: flow-root; flex: 1 1 0%; height: 27px; width: 769px;&quot;&gt;
                                                            &lt;div class=&quot;editorContent-Nopr4z&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 12px 0px 0px; padding: 0px; overflow-anchor: auto; height: calc(100% - 12px); overflow-x: auto; position: relative; width: 769px;&quot;&gt;
                                                                &lt;div class=&quot;cm-theme&quot; data-language-input=&quot;bash&quot; data-language=&quot;shell&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; --code-text: #000000d9; --code-doc: #00000073; --code-link: #2f74ff; --code-number: #e54595; --code-key-control: #9952e1; --code-function: #ff5d4d; --code-variable: #000000d9; --code-parameter: #4da621; --code-attributes: #c70; overflow-anchor: auto; height: 15px; width: 754px;&quot;&gt;
                                                                    &lt;div class=&quot;cm-editor ͼ1 ͼ2 ͼ4 ͼyg ͼ16 ͼ2q&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; flex-direction: column; font-size: 13px; font-feature-settings: &amp;quot;liga&amp;quot; 0, &amp;quot;calt&amp;quot; 0; height: 15px; overflow-anchor: auto; position: relative !important; display: flex !important;&quot;&gt;
                                                                        &lt;div class=&quot;cm-announced&quot; aria-live=&quot;polite&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; position: fixed; top: -10000px; overflow-anchor: auto;&quot;&gt;&lt;/div&gt;
                                                                        &lt;div tabindex=&quot;-1&quot; class=&quot;cm-scroller&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; font-family: &amp;quot;JetBrains Mono&amp;quot;, monospace; line-height: 1.4; height: 15px; overflow: scroll; position: relative; z-index: 0; overflow-anchor: auto; display: flex !important; align-items: flex-start !important; --scrollbar-color: transparent; --scrollbar-width: 7px;&quot;&gt;
                                                                            &lt;div class=&quot;cm-gutters&quot; aria-hidden=&quot;true&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border-width: initial; border-style: none; border-top-color: initial; border-right-color: transparent; border-bottom-color: initial; border-left-color: initial; border-image: initial; margin: 0px; padding: 0px; flex-shrink: 0; display: flex; height: 112.375px; inset-inline-start: 0px; z-index: 200; color: rgba(0, 0, 0, 0.3); overflow-anchor: auto; min-height: 112.375px; position: sticky;&quot;&gt;
                                                                                &lt;div class=&quot;cm-gutter cm-lineNumbers&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; flex-direction: column; flex-shrink: 0; min-height: 100%; overflow: hidden; display: flex !important; min-width: 6ch; overflow-anchor: auto;&quot;&gt;
                                                                                    &lt;div class=&quot;cm-gutterElement&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px 3px 0px 5px; min-width: 20px; text-align: right; text-wrap-mode: nowrap; overflow-anchor: auto; height: 0px; visibility: hidden; pointer-events: none;&quot;&gt;&lt;/div&gt;
                                                                                    &lt;div class=&quot;cm-gutterElement cm-activeLineGutter&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 4px 0px 0px; padding: 0px 3px 0px 5px; background: unset; color: rgba(0, 0, 0, 0.85); min-width: 20px; text-align: right; text-wrap-mode: nowrap; overflow-anchor: auto; height: 18.1875px;&quot;&gt;&lt;/div&gt;
                                                                                    &lt;div class=&quot;cm-gutterElement&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px 3px 0px 5px; min-width: 20px; text-align: right; text-wrap-mode: nowrap; overflow-anchor: auto; height: 18.1875px;&quot;&gt;&lt;/div&gt;
                                                                                &lt;/div&gt;
                                                                                &lt;div class=&quot;cm-gutter cm-foldGutter&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px 6px 0px 2px; flex-direction: column; flex-shrink: 0; min-height: 100%; overflow: hidden; display: flex !important; overflow-anchor: auto;&quot;&gt;
                                                                                    &lt;div class=&quot;cm-gutterElement&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; color: rgb(115, 119, 128); overflow-anchor: auto; height: 0px; visibility: hidden; pointer-events: none;&quot;&gt;
                                                                                        &lt;span class=&quot;unfold-button&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px 1px; cursor: pointer; overflow-anchor: auto;&quot;&gt;&lt;/span&gt;
                                                                                    &lt;/div&gt;
                                                                                    &lt;div class=&quot;cm-gutterElement cm-activeLineGutter&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 4px 0px 0px; padding: 0px; background: unset; color: rgb(115, 119, 128); overflow-anchor: auto; height: 18.1875px;&quot;&gt;&lt;/div&gt;
                                                                                &lt;/div&gt;
                                                                            &lt;/div&gt;
                                                                            &lt;div spellcheck=&quot;false&quot; autocorrect=&quot;off&quot; autocapitalize=&quot;off&quot; writingsuggestions=&quot;false&quot; translate=&quot;no&quot; contenteditable=&quot;true&quot; class=&quot;cm-content&quot; role=&quot;textbox&quot; aria-multiline=&quot;true&quot; aria-readonly=&quot;true&quot; data-language=&quot;shell&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 4px 0px 72px; flex-grow: 2; flex-shrink: 0; white-space: pre; overflow-wrap: normal; min-height: 100%; -webkit-user-modify: read-write-plaintext-only; overflow-anchor: auto; tab-size: 4; caret-color: transparent !important;&quot;&gt;
                                                                                &lt;div class=&quot;cm-activeLine cm-line&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px 4px 0px 1px; background: rgba(175, 182, 195, 0.15); overflow-anchor: auto; caret-color: transparent !important;&quot;&gt;
                                                                                    &lt;span class=&quot;ͼ1g&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; color: rgba(0, 0, 0, 0.85); overflow-anchor: auto;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;ͼ1g&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; color: rgba(0, 0, 0, 0.85); overflow-anchor: auto;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;ͼ1o&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; color: #CC7700; overflow-anchor: auto;&quot;&gt;&lt;/span&gt;
                                                                                &lt;/div&gt;
                                                                            &lt;/div&gt;
                                                                            &lt;div class=&quot;cm-gutters-opposite&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; flex-shrink: 0; position: sticky; right: 0px; height: 28px; overflow-anchor: auto; width: 5px; min-height: 28px;&quot;&gt;&lt;/div&gt;
                                                                            &lt;div class=&quot;cm-layer cm-layer-above cm-cursorLayer&quot; aria-hidden=&quot;true&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; position: absolute; left: 0px; top: 0px; contain: size style; pointer-events: none; overflow-anchor: auto; z-index: 150; animation-duration: 1200ms;&quot;&gt;&lt;/div&gt;
                                                                            &lt;div class=&quot;cm-layer cm-selectionLayer&quot; aria-hidden=&quot;true&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; position: absolute; left: 0px; top: 0px; contain: size style; overflow-anchor: auto; z-index: -2;&quot;&gt;&lt;/div&gt;
                                                                        &lt;/div&gt;
                                                                    &lt;/div&gt;
                                                                &lt;/div&gt;
                                                                &lt;div class=&quot;ai-generate-label-wrapper-i6_YO4&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; display: flex; height: 24px; justify-content: center; line-height: 15px; pointer-events: none; position: absolute; right: 16px; top: 4px; width: 60px; z-index: 100; overflow-anchor: auto;&quot;&gt;&lt;/div&gt;
                                                            &lt;/div&gt;
                                                        &lt;/div&gt;
                                                    &lt;/div&gt;
                                                &lt;/div&gt;
                                            &lt;/div&gt;
                                        &lt;/div&gt;
                                    &lt;/div&gt;
                                &lt;/div&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;
                        &lt;div class=&quot;container-footer-rlbyFI&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto;&quot;&gt;&lt;/div&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;p&gt;
            &lt;br class=&quot;container-utlnW2 wrapper-d0Cc1k undefined&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto;&quot;/&gt;
        &lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;div class=&quot;auto-hide-last-sibling-br paragraph-JOTKXA paragraph-element br-paragraph-space&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; line-height: 28px; overflow-anchor: auto;&quot;&gt;
            &lt;span style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; font-weight: 600; line-height: 28px; overflow-anchor: auto; color: #000000 !important;&quot;&gt;执行官方安装脚本&lt;/span&gt;：&lt;br class=&quot;container-utlnW2 wrapper-d0Cc1k undefined&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 1em; padding: 0px; font-size: 20px; content: &amp;quot;&amp;quot;; display: block; overflow-anchor: auto;&quot;/&gt;1Panel 提供了一键安装脚本，直接运行以下命令：
        &lt;/div&gt;
        &lt;div class=&quot;relative w-fit custom-code-block-canvas-wrapper w-full&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; position: relative; width: 769px; overflow-anchor: auto;&quot;&gt;
            &lt;div class=&quot;code-block-element-YDlfvc light custom-code-block-container--bash hide-indicator disable-theme-style custom-code-block-container&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 8px 0px 0px; padding: 0px; display: flex; flex-direction: column; position: relative; --chat-md-codeblock-bg-color: #f9fafb; --chat-md-codeblock-header-bg-color: #f3f4f6; --code-area-radius: 6px; --code-area-radius-inner: calc(6px - 1px); --code-area-bg-color: #f9fafb; --code-header-bg-color: #f3f4f6; --code-mask-bg-color: linear-gradient(180deg,rgba(249,250,251,0),#f9fafb); --code-header-icon-color: rgba(0,0,0,.5); --code-header-text-color: rgba(0,0,0,.85); --code-header-icon-bg-color: rgba(0,0,0,.06); --code-block-code-color: #000000d9; --code-block-std-bg-color: #f3f4f6; --code-block-std-err-color: #d60000; overflow-anchor: auto;&quot;&gt;
                &lt;div class=&quot;code-area-tZtDgG code-area&quot; dir=&quot;ltr&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 250, 251); border-radius: 6px; display: flex; flex-direction: column; height: fit-content; width: 769px; overflow-anchor: auto;&quot;&gt;
                    &lt;div class=&quot;header-wrapper-UnnlXS&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto; background-color: rgb(255, 255, 255); position: sticky; top: 0px;&quot;&gt;
                        &lt;div class=&quot;header-cGu84a&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border-width: 1px 1px 0px; border-style: solid; border-color: rgba(0, 0, 0, 0.08); border-image: none 100% / 1 / 0 stretch; margin: 0px; padding: 6px 9px 6px 6px; align-items: center; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(243, 244, 246); display: flex; flex-direction: row; flex-shrink: 0; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; height: 32px; justify-content: space-between; border-radius: 5px 5px 0px 0px; overflow-anchor: auto;&quot;&gt;
                            &lt;div class=&quot;title-XQhI4x clickable-eGISjP&quot; tabindex=&quot;0&quot; aria-describedby=&quot;zku6y67&quot; data-popupid=&quot;zku6y67&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px 4px 0px 10px; overflow-anchor: auto; align-items: center; border-radius: 4px; color: rgba(0, 0, 0, 0.5); display: flex; flex-direction: row; gap: 3px; cursor: pointer;&quot;&gt;
                                &lt;div class=&quot;text-jgT4jF&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto; align-items: center; color: rgba(0, 0, 0, 0.85); display: flex; font-family: &amp;quot;PingFang SC&amp;quot;; font-size: 14px; gap: 3px; line-height: 22px; overflow: hidden; text-overflow: ellipsis; text-wrap-mode: nowrap;&quot;&gt;
                                    bash
                                &lt;/div&gt;
                                &lt;div class=&quot;icon-FIfuuc&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto; align-items: center; display: flex; height: 20px; justify-content: center; position: relative; width: 15px;&quot;&gt;
                                    &lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-12&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                                        &lt;path fill=&quot;currentColor&quot; d=&quot;M21.707 17.293a1 1 0 0 1-1.414 0L12 9l-8.293 8.293a1 1 0 0 1-1.414-1.414l8.293-8.293a2 2 0 0 1 2.828 0l8.293 8.293a1 1 0 0 1 0 1.414&quot;&gt;&lt;/path&gt;
                                    &lt;/svg&gt;&lt;/span&gt;
                                &lt;/div&gt;
                            &lt;/div&gt;
                            &lt;div class=&quot;action-tEcs3i&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto; align-items: center; color: rgba(0, 0, 0, 0.5); cursor: pointer; display: flex; flex-direction: row; gap: 8px; justify-content: space-between;&quot;&gt;
                                &lt;div class=&quot;hoverable-sPLxOT&quot; data-testid=&quot;code-block-copy&quot; tabindex=&quot;0&quot; aria-describedby=&quot;g9ek583&quot; data-popupid=&quot;g9ek583&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; align-items: center; display: flex; height: 20px; justify-content: center; position: relative; width: 20px; overflow-anchor: auto;&quot;&gt;
                                    &lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-14&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; font-size: 14px; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                                        &lt;path fill=&quot;currentColor&quot; fill-rule=&quot;evenodd&quot; d=&quot;M21 3.5V17a2 2 0 0 1-2 2h-2v-2h2V3.5H9v2h5.857c1.184 0 2.143.895 2.143 2v13c0 1.105-.96 2-2.143 2H5.143C3.959 22.5 3 21.605 3 20.5v-13c0-1.105.96-2 2.143-2H7v-2a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2m-6.143 4H5.143v13h9.714z&quot; clip-rule=&quot;evenodd&quot;&gt;&lt;/path&gt;
                                    &lt;/svg&gt;&lt;/span&gt;
                                &lt;/div&gt;
                                &lt;div class=&quot;hoverable-sPLxOT&quot; tabindex=&quot;0&quot; aria-describedby=&quot;uiqlzuw&quot; data-popupid=&quot;uiqlzuw&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; align-items: center; display: flex; height: 20px; justify-content: center; position: relative; width: 20px; overflow-anchor: auto;&quot;&gt;
                                    &lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-14&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; font-size: 14px; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                                        &lt;path fill=&quot;currentColor&quot; fill-rule=&quot;evenodd&quot; d=&quot;M4 4a1 1 0 0 1 1 1v3a3 3 0 0 0 3 3h11.086l-5.293-5.293a1 1 0 0 1 1.414-1.414l7 7a1 1 0 0 1 0 1.414l-7 7a1 1 0 0 1-1.414-1.414L19.086 13H8a5 5 0 0 1-5-5V5a1 1 0 0 1 1-1&quot; clip-rule=&quot;evenodd&quot;&gt;&lt;/path&gt;
                                    &lt;/svg&gt;&lt;/span&gt;
                                &lt;/div&gt;
                                &lt;div class=&quot;hoverable-sPLxOT&quot; tabindex=&quot;0&quot; aria-describedby=&quot;fp3a5rq&quot; data-popupid=&quot;fp3a5rq&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; align-items: center; display: flex; height: 20px; justify-content: center; position: relative; width: 20px; overflow-anchor: auto;&quot;&gt;
                                    &lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-14&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; font-size: 14px; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                                        &lt;path fill=&quot;currentColor&quot; fill-rule=&quot;evenodd&quot; d=&quot;M4.797 16.856a8.28 8.28 0 0 0 6.27 2.87h.008A8.28 8.28 0 0 0 14.372 3.84a11.6 11.6 0 0 1-1.658 7.714 11.62 11.62 0 0 1-7.917 5.303M13.415 1.43a10.28 10.28 0 0 1-2.348 20.296 10.28 10.28 0 0 1-8.883-5.103c-.397-.74.155-1.605.912-1.609a9.617 9.617 0 0 0 9.011-12.258 1.093 1.093 0 0 1 1.308-1.326&quot; clip-rule=&quot;evenodd&quot;&gt;&lt;/path&gt;
                                    &lt;/svg&gt;&lt;/span&gt;
                                &lt;/div&gt;
                                &lt;div class=&quot;hoverable-sPLxOT&quot; tabindex=&quot;0&quot; aria-describedby=&quot;o6lk5x9&quot; data-popupid=&quot;o6lk5x9&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; align-items: center; display: flex; height: 20px; justify-content: center; position: relative; width: 20px; overflow-anchor: auto;&quot;&gt;
                                    &lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-14&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; font-size: 14px; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                                        &lt;path fill=&quot;currentColor&quot; d=&quot;M22 3v7a1 1 0 1 1-2 0V4h-6a1 1 0 1 1 0-2h7a1 1 0 0 1 1 1M11.005 21a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1v-7a1 1 0 0 1 2.002 0v6h6.003a1 1 0 0 1 1 1&quot;&gt;&lt;/path&gt;
                                    &lt;/svg&gt;&lt;/span&gt;
                                &lt;/div&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;content-EGRozu code-content light-scrollbar-TbsSwi&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border-width: 0px 1px 1px; border-style: solid; border-color: rgba(0, 0, 0, 0.08); border-image: initial; margin: 0px; padding: 12px 16px 16px; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; flex-shrink: 0; height: fit-content; overflow: overlay; overflow-anchor: auto; border-radius: 0px 0px 5px 5px;&quot;&gt;
                        &lt;pre class=&quot;container-_HmLba language-bash&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin-top: 0px; margin-bottom: 0px; padding: 0px; font-family: ui-monospace, SFMono-Regular, &amp;quot;SF Mono&amp;quot;, Menlo, Consolas, &amp;quot;Liberation Mono&amp;quot;, monospace; overflow-wrap: normal; font-feature-settings: normal; font-size: 13.6px; font-variation-settings: normal; --code-text_v3: #000000d9; --code-doc_v3: #00000073; --code-Link_v3: #2f74ff; --code-number_v3: #e54595; --code-keycontrol_v3: #9952e1; --code-function_v3: #ff5d4d; --code-variable_v3: #000000d9; --code-parameter_v3: #4da621; --code-attributes_v3: #c70; --code-selection-bg-color: #a9d6ff; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); color: rgb(0, 0, 0); word-break: normal; word-spacing: normal; hyphens: none; line-height: 1.5; tab-size: 4; overflow: auto; border-radius: 6px; overflow-anchor: auto; width: fit-content;&quot;&gt;curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh &amp;amp;&amp;amp; sh quick_start.sh&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;mask-wrapper-VgpgeU&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto; opacity: 0; transition: opacity 0.15s;&quot;&gt;
                        &lt;div class=&quot;mask-ZLHDuN&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; background: linear-gradient(rgba(249, 250, 251, 0), rgb(249, 250, 251)) 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); bottom: 0px; height: 56px; pointer-events: none; position: absolute; width: 769px; overflow-anchor: auto;&quot;&gt;&lt;/div&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;p&gt;
            &lt;br class=&quot;container-utlnW2 wrapper-d0Cc1k undefined&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto;&quot;/&gt;
        &lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;div class=&quot;auto-hide-last-sibling-br paragraph-JOTKXA paragraph-element br-paragraph-space&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; line-height: 28px; overflow-anchor: auto;&quot;&gt;
            &lt;span style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; font-weight: 600; line-height: 28px; overflow-anchor: auto; color: #000000 !important;&quot;&gt;按照提示完成安装&lt;/span&gt;：
        &lt;/div&gt;
    &lt;/li&gt;
    &lt;ul class=&quot;auto-hide-last-sibling-br list-paddingleft-2&quot; style=&quot;list-style-type: none;&quot;&gt;
        &lt;li&gt;
            &lt;p&gt;
                脚本运行后会提示选择安装路径（默认&amp;nbsp;&lt;code style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-size: 14px; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0.06); border-radius: 4px; color: rgb(0, 0, 0); overflow-anchor: auto;&quot;&gt;/opt/1panel&lt;/code&gt;），可直接按回车使用默认路径。
            &lt;/p&gt;
        &lt;/li&gt;
        &lt;li&gt;
            &lt;p&gt;
                安装过程中会自动下载并配置依赖，耐心等待即可（通常几分钟）。
            &lt;/p&gt;
        &lt;/li&gt;
    &lt;/ul&gt;
    &lt;li&gt;
        &lt;div class=&quot;auto-hide-last-sibling-br paragraph-JOTKXA paragraph-element br-paragraph-space&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; line-height: 28px; overflow-anchor: auto;&quot;&gt;
            &lt;span style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; font-weight: 600; line-height: 28px; overflow-anchor: auto; color: #000000 !important;&quot;&gt;记录登录信息&lt;/span&gt;：&lt;br class=&quot;container-utlnW2 wrapper-d0Cc1k undefined&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 1em; padding: 0px; font-size: 20px; content: &amp;quot;&amp;quot;; display: block; overflow-anchor: auto;&quot;/&gt;安装完成后，会显示面板访问地址、用户名和密码，类似如下输出：
        &lt;/div&gt;
        &lt;div class=&quot;relative w-fit custom-code-block-canvas-wrapper w-full&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; position: relative; width: 769px; overflow-anchor: auto;&quot;&gt;
            &lt;div class=&quot;code-block-element-YDlfvc light custom-code-block-container--plaintext hide-indicator disable-theme-style custom-code-block-container&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 8px 0px 0px; padding: 0px; display: flex; flex-direction: column; position: relative; --chat-md-codeblock-bg-color: #f9fafb; --chat-md-codeblock-header-bg-color: #f3f4f6; --code-area-radius: 6px; --code-area-radius-inner: calc(6px - 1px); --code-area-bg-color: #f9fafb; --code-header-bg-color: #f3f4f6; --code-mask-bg-color: linear-gradient(180deg,rgba(249,250,251,0),#f9fafb); --code-header-icon-color: rgba(0,0,0,.5); --code-header-text-color: rgba(0,0,0,.85); --code-header-icon-bg-color: rgba(0,0,0,.06); --code-block-code-color: #000000d9; --code-block-std-bg-color: #f3f4f6; --code-block-std-err-color: #d60000; overflow-anchor: auto;&quot;&gt;
                &lt;div class=&quot;code-area-tZtDgG code-area&quot; dir=&quot;ltr&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 250, 251); border-radius: 6px; display: flex; flex-direction: column; height: fit-content; width: 769px; overflow-anchor: auto;&quot;&gt;
                    &lt;div class=&quot;header-wrapper-UnnlXS&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto; background-color: rgb(255, 255, 255); position: sticky; top: 0px;&quot;&gt;
                        &lt;div class=&quot;header-cGu84a&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border-width: 1px 1px 0px; border-style: solid; border-color: rgba(0, 0, 0, 0.08); border-image: none 100% / 1 / 0 stretch; margin: 0px; padding: 6px 9px 6px 6px; align-items: center; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(243, 244, 246); display: flex; flex-direction: row; flex-shrink: 0; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; height: 32px; justify-content: space-between; border-radius: 5px 5px 0px 0px; overflow-anchor: auto;&quot;&gt;
                            &lt;div class=&quot;title-XQhI4x clickable-eGISjP&quot; tabindex=&quot;0&quot; aria-describedby=&quot;b1totzy&quot; data-popupid=&quot;b1totzy&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px 4px 0px 10px; overflow-anchor: auto; align-items: center; border-radius: 4px; color: rgba(0, 0, 0, 0.5); display: flex; flex-direction: row; gap: 3px; cursor: pointer;&quot;&gt;
                                &lt;div class=&quot;text-jgT4jF&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto; align-items: center; color: rgba(0, 0, 0, 0.85); display: flex; font-family: &amp;quot;PingFang SC&amp;quot;; font-size: 14px; gap: 3px; line-height: 22px; overflow: hidden; text-overflow: ellipsis; text-wrap-mode: nowrap;&quot;&gt;
                                    plaintext
                                &lt;/div&gt;
                                &lt;div class=&quot;icon-FIfuuc&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto; align-items: center; display: flex; height: 20px; justify-content: center; position: relative; width: 15px;&quot;&gt;
                                    &lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-12&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                                        &lt;path fill=&quot;currentColor&quot; d=&quot;M21.707 17.293a1 1 0 0 1-1.414 0L12 9l-8.293 8.293a1 1 0 0 1-1.414-1.414l8.293-8.293a2 2 0 0 1 2.828 0l8.293 8.293a1 1 0 0 1 0 1.414&quot;&gt;&lt;/path&gt;
                                    &lt;/svg&gt;&lt;/span&gt;
                                &lt;/div&gt;
                            &lt;/div&gt;
                            &lt;div class=&quot;action-tEcs3i&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto; align-items: center; color: rgba(0, 0, 0, 0.5); cursor: pointer; display: flex; flex-direction: row; gap: 8px; justify-content: space-between;&quot;&gt;
                                &lt;div class=&quot;hoverable-sPLxOT&quot; data-testid=&quot;code-block-copy&quot; tabindex=&quot;0&quot; aria-describedby=&quot;ehslug7&quot; data-popupid=&quot;ehslug7&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; align-items: center; display: flex; height: 20px; justify-content: center; position: relative; width: 20px; overflow-anchor: auto;&quot;&gt;
                                    &lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-14&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; font-size: 14px; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                                        &lt;path fill=&quot;currentColor&quot; fill-rule=&quot;evenodd&quot; d=&quot;M21 3.5V17a2 2 0 0 1-2 2h-2v-2h2V3.5H9v2h5.857c1.184 0 2.143.895 2.143 2v13c0 1.105-.96 2-2.143 2H5.143C3.959 22.5 3 21.605 3 20.5v-13c0-1.105.96-2 2.143-2H7v-2a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2m-6.143 4H5.143v13h9.714z&quot; clip-rule=&quot;evenodd&quot;&gt;&lt;/path&gt;
                                    &lt;/svg&gt;&lt;/span&gt;
                                &lt;/div&gt;
                                &lt;div class=&quot;hoverable-sPLxOT&quot; tabindex=&quot;0&quot; aria-describedby=&quot;lt85oew&quot; data-popupid=&quot;lt85oew&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; align-items: center; display: flex; height: 20px; justify-content: center; position: relative; width: 20px; overflow-anchor: auto;&quot;&gt;
                                    &lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-14&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; font-size: 14px; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                                        &lt;path fill=&quot;currentColor&quot; fill-rule=&quot;evenodd&quot; d=&quot;M4 4a1 1 0 0 1 1 1v3a3 3 0 0 0 3 3h11.086l-5.293-5.293a1 1 0 0 1 1.414-1.414l7 7a1 1 0 0 1 0 1.414l-7 7a1 1 0 0 1-1.414-1.414L19.086 13H8a5 5 0 0 1-5-5V5a1 1 0 0 1 1-1&quot; clip-rule=&quot;evenodd&quot;&gt;&lt;/path&gt;
                                    &lt;/svg&gt;&lt;/span&gt;
                                &lt;/div&gt;
                                &lt;div class=&quot;hoverable-sPLxOT&quot; tabindex=&quot;0&quot; aria-describedby=&quot;7r2e4er&quot; data-popupid=&quot;7r2e4er&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; align-items: center; display: flex; height: 20px; justify-content: center; position: relative; width: 20px; overflow-anchor: auto;&quot;&gt;
                                    &lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-14&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; font-size: 14px; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                                        &lt;path fill=&quot;currentColor&quot; fill-rule=&quot;evenodd&quot; d=&quot;M4.797 16.856a8.28 8.28 0 0 0 6.27 2.87h.008A8.28 8.28 0 0 0 14.372 3.84a11.6 11.6 0 0 1-1.658 7.714 11.62 11.62 0 0 1-7.917 5.303M13.415 1.43a10.28 10.28 0 0 1-2.348 20.296 10.28 10.28 0 0 1-8.883-5.103c-.397-.74.155-1.605.912-1.609a9.617 9.617 0 0 0 9.011-12.258 1.093 1.093 0 0 1 1.308-1.326&quot; clip-rule=&quot;evenodd&quot;&gt;&lt;/path&gt;
                                    &lt;/svg&gt;&lt;/span&gt;
                                &lt;/div&gt;
                                &lt;div class=&quot;hoverable-sPLxOT&quot; tabindex=&quot;0&quot; aria-describedby=&quot;t6rp8yc&quot; data-popupid=&quot;t6rp8yc&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; align-items: center; display: flex; height: 20px; justify-content: center; position: relative; width: 20px; overflow-anchor: auto;&quot;&gt;
                                    &lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-14&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; font-size: 14px; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                                        &lt;path fill=&quot;currentColor&quot; d=&quot;M22 3v7a1 1 0 1 1-2 0V4h-6a1 1 0 1 1 0-2h7a1 1 0 0 1 1 1M11.005 21a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1v-7a1 1 0 0 1 2.002 0v6h6.003a1 1 0 0 1 1 1&quot;&gt;&lt;/path&gt;
                                    &lt;/svg&gt;&lt;/span&gt;
                                &lt;/div&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;content-EGRozu code-content light-scrollbar-TbsSwi&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border-width: 0px 1px 1px; border-style: solid; border-color: rgba(0, 0, 0, 0.08); border-image: initial; margin: 0px; padding: 12px 16px 16px; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; flex-shrink: 0; height: fit-content; overflow: overlay; overflow-anchor: auto; border-radius: 0px 0px 5px 5px;&quot;&gt;
                        &lt;pre class=&quot;container-_HmLba language-plaintext&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin-top: 0px; margin-bottom: 0px; padding: 0px; font-family: ui-monospace, SFMono-Regular, &amp;quot;SF Mono&amp;quot;, Menlo, Consolas, &amp;quot;Liberation Mono&amp;quot;, monospace; overflow-wrap: normal; font-feature-settings: normal; font-size: 13.6px; font-variation-settings: normal; --code-text_v3: #000000d9; --code-doc_v3: #00000073; --code-Link_v3: #2f74ff; --code-number_v3: #e54595; --code-keycontrol_v3: #9952e1; --code-function_v3: #ff5d4d; --code-variable_v3: #000000d9; --code-parameter_v3: #4da621; --code-attributes_v3: #c70; --code-selection-bg-color: #a9d6ff; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); color: rgb(0, 0, 0); word-break: normal; word-spacing: normal; hyphens: none; line-height: 1.5; tab-size: 4; overflow: auto; border-radius: 6px; overflow-anchor: auto; width: fit-content;&quot;&gt;1Panel 安装成功!
----------------------------------------------------------------------
访问地址: http://服务器IP:8888
用户名: admin
密码: xxxxxxxx
----------------------------------------------------------------------&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;mask-wrapper-VgpgeU&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto; opacity: 0; transition: opacity 0.15s;&quot;&gt;
                        &lt;div class=&quot;mask-ZLHDuN&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; background: linear-gradient(rgba(249, 250, 251, 0), rgb(249, 250, 251)) 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); bottom: 0px; height: 56px; pointer-events: none; position: absolute; width: 769px; overflow-anchor: auto;&quot;&gt;&lt;/div&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;p&gt;
            &lt;br class=&quot;container-utlnW2 wrapper-d0Cc1k undefined&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto;&quot;/&gt;
        &lt;/p&gt;
        &lt;div class=&quot;auto-hide-last-sibling-br paragraph-JOTKXA paragraph-element br-paragraph-space&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; line-height: 28px; overflow-anchor: auto;&quot;&gt;
            请务必保存好这些信息，首次登录需要使用。
        &lt;/div&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;div class=&quot;auto-hide-last-sibling-br paragraph-JOTKXA paragraph-element br-paragraph-space&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; line-height: 28px; overflow-anchor: auto;&quot;&gt;
            &lt;span style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; font-weight: 600; line-height: 28px; overflow-anchor: auto; color: #000000 !important;&quot;&gt;访问 1Panel 面板&lt;/span&gt;：&lt;br class=&quot;container-utlnW2 wrapper-d0Cc1k undefined&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 1em; padding: 0px; font-size: 20px; content: &amp;quot;&amp;quot;; display: block; overflow-anchor: auto;&quot;/&gt;在浏览器中输入提示的访问地址（如&amp;nbsp;&lt;code style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0.06); border-radius: 4px; overflow-anchor: auto; line-height: 28px;&quot;&gt;http://你的服务器IP:8888&lt;/code&gt;），输入用户名和密码登录即可开始使用。
        &lt;/div&gt;
    &lt;/li&gt;
&lt;/ol&gt;
&lt;h3 class=&quot;header-vfC6AV auto-hide-last-sibling-br&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin-top: 28px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; font-size: 18px; line-height: 28px; overflow-anchor: auto; font-family: Inter, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;SF Pro SC&amp;quot;, &amp;quot;SF Pro Display&amp;quot;, &amp;quot;SF Pro Icons&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; text-wrap-mode: wrap; background-color: rgb(255, 255, 255); margin-bottom: 12px !important; padding-bottom: 0px !important;&quot;&gt;
    注意事项
&lt;/h3&gt;
&lt;ul class=&quot;auto-hide-last-sibling-br list-paddingleft-2&quot; style=&quot;list-style-type: none;&quot;&gt;
    &lt;li&gt;
        &lt;p&gt;
            &lt;span style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; font-weight: 600; line-height: 28px; overflow-anchor: auto; color: #000000 !important;&quot;&gt;端口开放&lt;/span&gt;：确保服务器的 8888 端口已开放（默认端口，可在安装后修改），如果使用防火墙，需要允许该端口访问：
        &lt;/p&gt;
        &lt;div class=&quot;relative w-fit custom-code-block-canvas-wrapper w-full&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; position: relative; width: 769px; overflow-anchor: auto;&quot;&gt;
            &lt;div class=&quot;code-block-element-YDlfvc light custom-code-block-container--bash hide-indicator disable-theme-style custom-code-block-container&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 8px 0px 0px; padding: 0px; display: flex; flex-direction: column; position: relative; --chat-md-codeblock-bg-color: #f9fafb; --chat-md-codeblock-header-bg-color: #f3f4f6; --code-area-radius: 6px; --code-area-radius-inner: calc(6px - 1px); --code-area-bg-color: #f9fafb; --code-header-bg-color: #f3f4f6; --code-mask-bg-color: linear-gradient(180deg,rgba(249,250,251,0),#f9fafb); --code-header-icon-color: rgba(0,0,0,.5); --code-header-text-color: rgba(0,0,0,.85); --code-header-icon-bg-color: rgba(0,0,0,.06); --code-block-code-color: #000000d9; --code-block-std-bg-color: #f3f4f6; --code-block-std-err-color: #d60000; overflow-anchor: auto;&quot;&gt;
                &lt;div class=&quot;code-area-tZtDgG code-area&quot; dir=&quot;ltr&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 250, 251); border-radius: 6px; display: flex; flex-direction: column; height: fit-content; width: 769px; overflow-anchor: auto;&quot;&gt;
                    &lt;div class=&quot;header-wrapper-UnnlXS&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto; background-color: rgb(255, 255, 255); position: sticky; top: 0px;&quot;&gt;
                        &lt;div class=&quot;header-cGu84a&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border-width: 1px 1px 0px; border-style: solid; border-color: rgba(0, 0, 0, 0.08); border-image: none 100% / 1 / 0 stretch; margin: 0px; padding: 6px 9px 6px 6px; align-items: center; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(243, 244, 246); display: flex; flex-direction: row; flex-shrink: 0; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; height: 32px; justify-content: space-between; border-radius: 5px 5px 0px 0px; overflow-anchor: auto;&quot;&gt;
                            &lt;div class=&quot;title-XQhI4x clickable-eGISjP&quot; tabindex=&quot;0&quot; aria-describedby=&quot;nfz8io1&quot; data-popupid=&quot;nfz8io1&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px 4px 0px 10px; overflow-anchor: auto; align-items: center; border-radius: 4px; color: rgba(0, 0, 0, 0.5); display: flex; flex-direction: row; gap: 3px; cursor: pointer;&quot;&gt;
                                &lt;div class=&quot;text-jgT4jF&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto; align-items: center; color: rgba(0, 0, 0, 0.85); display: flex; font-family: &amp;quot;PingFang SC&amp;quot;; font-size: 14px; gap: 3px; line-height: 22px; overflow: hidden; text-overflow: ellipsis; text-wrap-mode: nowrap;&quot;&gt;
                                    bash
                                &lt;/div&gt;
                                &lt;div class=&quot;icon-FIfuuc&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto; align-items: center; display: flex; height: 20px; justify-content: center; position: relative; width: 15px;&quot;&gt;
                                    &lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-12&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                                        &lt;path fill=&quot;currentColor&quot; d=&quot;M21.707 17.293a1 1 0 0 1-1.414 0L12 9l-8.293 8.293a1 1 0 0 1-1.414-1.414l8.293-8.293a2 2 0 0 1 2.828 0l8.293 8.293a1 1 0 0 1 0 1.414&quot;&gt;&lt;/path&gt;
                                    &lt;/svg&gt;&lt;/span&gt;
                                &lt;/div&gt;
                            &lt;/div&gt;
                            &lt;div class=&quot;action-tEcs3i&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto; align-items: center; color: rgba(0, 0, 0, 0.5); cursor: pointer; display: flex; flex-direction: row; gap: 8px; justify-content: space-between;&quot;&gt;
                                &lt;div class=&quot;hoverable-sPLxOT&quot; data-testid=&quot;code-block-copy&quot; tabindex=&quot;0&quot; aria-describedby=&quot;vu8f2lf&quot; data-popupid=&quot;vu8f2lf&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; align-items: center; display: flex; height: 20px; justify-content: center; position: relative; width: 20px; overflow-anchor: auto;&quot;&gt;
                                    &lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-14&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; font-size: 14px; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                                        &lt;path fill=&quot;currentColor&quot; fill-rule=&quot;evenodd&quot; d=&quot;M21 3.5V17a2 2 0 0 1-2 2h-2v-2h2V3.5H9v2h5.857c1.184 0 2.143.895 2.143 2v13c0 1.105-.96 2-2.143 2H5.143C3.959 22.5 3 21.605 3 20.5v-13c0-1.105.96-2 2.143-2H7v-2a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2m-6.143 4H5.143v13h9.714z&quot; clip-rule=&quot;evenodd&quot;&gt;&lt;/path&gt;
                                    &lt;/svg&gt;&lt;/span&gt;
                                &lt;/div&gt;
                                &lt;div class=&quot;hoverable-sPLxOT&quot; tabindex=&quot;0&quot; aria-describedby=&quot;0p7ddab&quot; data-popupid=&quot;0p7ddab&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; align-items: center; display: flex; height: 20px; justify-content: center; position: relative; width: 20px; overflow-anchor: auto;&quot;&gt;
                                    &lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-14&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; font-size: 14px; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                                        &lt;path fill=&quot;currentColor&quot; fill-rule=&quot;evenodd&quot; d=&quot;M4 4a1 1 0 0 1 1 1v3a3 3 0 0 0 3 3h11.086l-5.293-5.293a1 1 0 0 1 1.414-1.414l7 7a1 1 0 0 1 0 1.414l-7 7a1 1 0 0 1-1.414-1.414L19.086 13H8a5 5 0 0 1-5-5V5a1 1 0 0 1 1-1&quot; clip-rule=&quot;evenodd&quot;&gt;&lt;/path&gt;
                                    &lt;/svg&gt;&lt;/span&gt;
                                &lt;/div&gt;
                                &lt;div class=&quot;hoverable-sPLxOT&quot; tabindex=&quot;0&quot; aria-describedby=&quot;aqjvbyp&quot; data-popupid=&quot;aqjvbyp&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; align-items: center; display: flex; height: 20px; justify-content: center; position: relative; width: 20px; overflow-anchor: auto;&quot;&gt;
                                    &lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-14&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; font-size: 14px; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                                        &lt;path fill=&quot;currentColor&quot; fill-rule=&quot;evenodd&quot; d=&quot;M4.797 16.856a8.28 8.28 0 0 0 6.27 2.87h.008A8.28 8.28 0 0 0 14.372 3.84a11.6 11.6 0 0 1-1.658 7.714 11.62 11.62 0 0 1-7.917 5.303M13.415 1.43a10.28 10.28 0 0 1-2.348 20.296 10.28 10.28 0 0 1-8.883-5.103c-.397-.74.155-1.605.912-1.609a9.617 9.617 0 0 0 9.011-12.258 1.093 1.093 0 0 1 1.308-1.326&quot; clip-rule=&quot;evenodd&quot;&gt;&lt;/path&gt;
                                    &lt;/svg&gt;&lt;/span&gt;
                                &lt;/div&gt;
                                &lt;div class=&quot;hoverable-sPLxOT&quot; tabindex=&quot;0&quot; aria-describedby=&quot;83wf4jg&quot; data-popupid=&quot;83wf4jg&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; align-items: center; display: flex; height: 20px; justify-content: center; position: relative; width: 20px; overflow-anchor: auto;&quot;&gt;
                                    &lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-14&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; font-size: 14px; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                                        &lt;path fill=&quot;currentColor&quot; d=&quot;M22 3v7a1 1 0 1 1-2 0V4h-6a1 1 0 1 1 0-2h7a1 1 0 0 1 1 1M11.005 21a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1v-7a1 1 0 0 1 2.002 0v6h6.003a1 1 0 0 1 1 1&quot;&gt;&lt;/path&gt;
                                    &lt;/svg&gt;&lt;/span&gt;
                                &lt;/div&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;content-EGRozu code-content light-scrollbar-TbsSwi&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border-width: 0px 1px 1px; border-style: solid; border-color: rgba(0, 0, 0, 0.08); border-image: initial; margin: 0px; padding: 12px 16px 16px; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; flex-shrink: 0; height: fit-content; overflow: overlay; overflow-anchor: auto; border-radius: 0px 0px 5px 5px;&quot;&gt;
                        &lt;pre class=&quot;container-_HmLba language-bash&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin-top: 0px; margin-bottom: 0px; padding: 0px; font-family: ui-monospace, SFMono-Regular, &amp;quot;SF Mono&amp;quot;, Menlo, Consolas, &amp;quot;Liberation Mono&amp;quot;, monospace; overflow-wrap: normal; font-feature-settings: normal; font-size: 13.6px; font-variation-settings: normal; --code-text_v3: #000000d9; --code-doc_v3: #00000073; --code-Link_v3: #2f74ff; --code-number_v3: #e54595; --code-keycontrol_v3: #9952e1; --code-function_v3: #ff5d4d; --code-variable_v3: #000000d9; --code-parameter_v3: #4da621; --code-attributes_v3: #c70; --code-selection-bg-color: #a9d6ff; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); color: rgb(0, 0, 0); word-break: normal; word-spacing: normal; hyphens: none; line-height: 1.5; tab-size: 4; overflow: auto; border-radius: 6px; overflow-anchor: auto; width: fit-content;&quot;&gt;sudo ufw allow 8888/tcp&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;mask-wrapper-VgpgeU&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto; opacity: 0; transition: opacity 0.15s;&quot;&gt;
                        &lt;div class=&quot;mask-ZLHDuN&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; background: linear-gradient(rgba(249, 250, 251, 0), rgb(249, 250, 251)) 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); bottom: 0px; height: 56px; pointer-events: none; position: absolute; width: 769px; overflow-anchor: auto;&quot;&gt;&lt;/div&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;p&gt;
            &lt;br class=&quot;container-utlnW2 wrapper-d0Cc1k undefined&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto;&quot;/&gt;
        &lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;p&gt;
            &lt;span style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; font-weight: 600; line-height: 28px; overflow-anchor: auto; color: #000000 !important;&quot;&gt;重置密码&lt;/span&gt;：如果忘记密码，可通过以下命令重置：
        &lt;/p&gt;
        &lt;div class=&quot;relative w-fit custom-code-block-canvas-wrapper w-full&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; position: relative; width: 769px; overflow-anchor: auto;&quot;&gt;
            &lt;div class=&quot;code-block-element-YDlfvc light custom-code-block-container--bash hide-indicator disable-theme-style custom-code-block-container&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 8px 0px 0px; padding: 0px; display: flex; flex-direction: column; position: relative; --chat-md-codeblock-bg-color: #f9fafb; --chat-md-codeblock-header-bg-color: #f3f4f6; --code-area-radius: 6px; --code-area-radius-inner: calc(6px - 1px); --code-area-bg-color: #f9fafb; --code-header-bg-color: #f3f4f6; --code-mask-bg-color: linear-gradient(180deg,rgba(249,250,251,0),#f9fafb); --code-header-icon-color: rgba(0,0,0,.5); --code-header-text-color: rgba(0,0,0,.85); --code-header-icon-bg-color: rgba(0,0,0,.06); --code-block-code-color: #000000d9; --code-block-std-bg-color: #f3f4f6; --code-block-std-err-color: #d60000; overflow-anchor: auto;&quot;&gt;
                &lt;div class=&quot;code-area-tZtDgG code-area&quot; dir=&quot;ltr&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 250, 251); border-radius: 6px; display: flex; flex-direction: column; height: fit-content; width: 769px; overflow-anchor: auto;&quot;&gt;
                    &lt;div class=&quot;header-wrapper-UnnlXS&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto; background-color: rgb(255, 255, 255); position: sticky; top: 0px;&quot;&gt;
                        &lt;div class=&quot;header-cGu84a&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border-width: 1px 1px 0px; border-style: solid; border-color: rgba(0, 0, 0, 0.08); border-image: none 100% / 1 / 0 stretch; margin: 0px; padding: 6px 9px 6px 6px; align-items: center; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(243, 244, 246); display: flex; flex-direction: row; flex-shrink: 0; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; height: 32px; justify-content: space-between; border-radius: 5px 5px 0px 0px; overflow-anchor: auto;&quot;&gt;
                            &lt;div class=&quot;title-XQhI4x clickable-eGISjP&quot; tabindex=&quot;0&quot; aria-describedby=&quot;vmhzrip&quot; data-popupid=&quot;vmhzrip&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px 4px 0px 10px; overflow-anchor: auto; align-items: center; border-radius: 4px; color: rgba(0, 0, 0, 0.5); display: flex; flex-direction: row; gap: 3px; cursor: pointer;&quot;&gt;
                                &lt;div class=&quot;text-jgT4jF&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto; align-items: center; color: rgba(0, 0, 0, 0.85); display: flex; font-family: &amp;quot;PingFang SC&amp;quot;; font-size: 14px; gap: 3px; line-height: 22px; overflow: hidden; text-overflow: ellipsis; text-wrap-mode: nowrap;&quot;&gt;
                                    bash
                                &lt;/div&gt;
                                &lt;div class=&quot;icon-FIfuuc&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto; align-items: center; display: flex; height: 20px; justify-content: center; position: relative; width: 15px;&quot;&gt;
                                    &lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-12&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                                        &lt;path fill=&quot;currentColor&quot; d=&quot;M21.707 17.293a1 1 0 0 1-1.414 0L12 9l-8.293 8.293a1 1 0 0 1-1.414-1.414l8.293-8.293a2 2 0 0 1 2.828 0l8.293 8.293a1 1 0 0 1 0 1.414&quot;&gt;&lt;/path&gt;
                                    &lt;/svg&gt;&lt;/span&gt;
                                &lt;/div&gt;
                            &lt;/div&gt;
                            &lt;div class=&quot;action-tEcs3i&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto; align-items: center; color: rgba(0, 0, 0, 0.5); cursor: pointer; display: flex; flex-direction: row; gap: 8px; justify-content: space-between;&quot;&gt;
                                &lt;div class=&quot;hoverable-sPLxOT&quot; data-testid=&quot;code-block-copy&quot; tabindex=&quot;0&quot; aria-describedby=&quot;weprhjd&quot; data-popupid=&quot;weprhjd&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; align-items: center; display: flex; height: 20px; justify-content: center; position: relative; width: 20px; overflow-anchor: auto;&quot;&gt;
                                    &lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-14&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; font-size: 14px; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                                        &lt;path fill=&quot;currentColor&quot; fill-rule=&quot;evenodd&quot; d=&quot;M21 3.5V17a2 2 0 0 1-2 2h-2v-2h2V3.5H9v2h5.857c1.184 0 2.143.895 2.143 2v13c0 1.105-.96 2-2.143 2H5.143C3.959 22.5 3 21.605 3 20.5v-13c0-1.105.96-2 2.143-2H7v-2a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2m-6.143 4H5.143v13h9.714z&quot; clip-rule=&quot;evenodd&quot;&gt;&lt;/path&gt;
                                    &lt;/svg&gt;&lt;/span&gt;
                                &lt;/div&gt;
                                &lt;div class=&quot;hoverable-sPLxOT&quot; tabindex=&quot;0&quot; aria-describedby=&quot;0luuep0&quot; data-popupid=&quot;0luuep0&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; align-items: center; display: flex; height: 20px; justify-content: center; position: relative; width: 20px; overflow-anchor: auto;&quot;&gt;
                                    &lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-14&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; font-size: 14px; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                                        &lt;path fill=&quot;currentColor&quot; fill-rule=&quot;evenodd&quot; d=&quot;M4 4a1 1 0 0 1 1 1v3a3 3 0 0 0 3 3h11.086l-5.293-5.293a1 1 0 0 1 1.414-1.414l7 7a1 1 0 0 1 0 1.414l-7 7a1 1 0 0 1-1.414-1.414L19.086 13H8a5 5 0 0 1-5-5V5a1 1 0 0 1 1-1&quot; clip-rule=&quot;evenodd&quot;&gt;&lt;/path&gt;
                                    &lt;/svg&gt;&lt;/span&gt;
                                &lt;/div&gt;
                                &lt;div class=&quot;hoverable-sPLxOT&quot; tabindex=&quot;0&quot; aria-describedby=&quot;6im72hq&quot; data-popupid=&quot;6im72hq&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; align-items: center; display: flex; height: 20px; justify-content: center; position: relative; width: 20px; overflow-anchor: auto;&quot;&gt;
                                    &lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-14&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; font-size: 14px; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                                        &lt;path fill=&quot;currentColor&quot; fill-rule=&quot;evenodd&quot; d=&quot;M4.797 16.856a8.28 8.28 0 0 0 6.27 2.87h.008A8.28 8.28 0 0 0 14.372 3.84a11.6 11.6 0 0 1-1.658 7.714 11.62 11.62 0 0 1-7.917 5.303M13.415 1.43a10.28 10.28 0 0 1-2.348 20.296 10.28 10.28 0 0 1-8.883-5.103c-.397-.74.155-1.605.912-1.609a9.617 9.617 0 0 0 9.011-12.258 1.093 1.093 0 0 1 1.308-1.326&quot; clip-rule=&quot;evenodd&quot;&gt;&lt;/path&gt;
                                    &lt;/svg&gt;&lt;/span&gt;
                                &lt;/div&gt;
                                &lt;div class=&quot;hoverable-sPLxOT&quot; tabindex=&quot;0&quot; aria-describedby=&quot;hv8stez&quot; data-popupid=&quot;hv8stez&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; align-items: center; display: flex; height: 20px; justify-content: center; position: relative; width: 20px; overflow-anchor: auto;&quot;&gt;
                                    &lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-14&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; font-size: 14px; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                                        &lt;path fill=&quot;currentColor&quot; d=&quot;M22 3v7a1 1 0 1 1-2 0V4h-6a1 1 0 1 1 0-2h7a1 1 0 0 1 1 1M11.005 21a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1v-7a1 1 0 0 1 2.002 0v6h6.003a1 1 0 0 1 1 1&quot;&gt;&lt;/path&gt;
                                    &lt;/svg&gt;&lt;/span&gt;
                                &lt;/div&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;content-EGRozu code-content light-scrollbar-TbsSwi&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border-width: 0px 1px 1px; border-style: solid; border-color: rgba(0, 0, 0, 0.08); border-image: initial; margin: 0px; padding: 12px 16px 16px; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; flex-shrink: 0; height: fit-content; overflow: overlay; overflow-anchor: auto; border-radius: 0px 0px 5px 5px;&quot;&gt;
                        &lt;pre class=&quot;container-_HmLba language-bash&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin-top: 0px; margin-bottom: 0px; padding: 0px; font-family: ui-monospace, SFMono-Regular, &amp;quot;SF Mono&amp;quot;, Menlo, Consolas, &amp;quot;Liberation Mono&amp;quot;, monospace; overflow-wrap: normal; font-feature-settings: normal; font-size: 13.6px; font-variation-settings: normal; --code-text_v3: #000000d9; --code-doc_v3: #00000073; --code-Link_v3: #2f74ff; --code-number_v3: #e54595; --code-keycontrol_v3: #9952e1; --code-function_v3: #ff5d4d; --code-variable_v3: #000000d9; --code-parameter_v3: #4da621; --code-attributes_v3: #c70; --code-selection-bg-color: #a9d6ff; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); color: rgb(0, 0, 0); word-break: normal; word-spacing: normal; hyphens: none; line-height: 1.5; tab-size: 4; overflow: auto; border-radius: 6px; overflow-anchor: auto; width: fit-content;&quot;&gt;1panel reset-password&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;mask-wrapper-VgpgeU&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto; opacity: 0; transition: opacity 0.15s;&quot;&gt;
                        &lt;div class=&quot;mask-ZLHDuN&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; background: linear-gradient(rgba(249, 250, 251, 0), rgb(249, 250, 251)) 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); bottom: 0px; height: 56px; pointer-events: none; position: absolute; width: 769px; overflow-anchor: auto;&quot;&gt;&lt;/div&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;p&gt;
            &lt;br class=&quot;container-utlnW2 wrapper-d0Cc1k undefined&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto;&quot;/&gt;
        &lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;p&gt;
            &lt;span style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; font-weight: 600; line-height: 28px; overflow-anchor: auto; color: #000000 !important;&quot;&gt;卸载方法&lt;/span&gt;：如需卸载，执行命令：
        &lt;/p&gt;
        &lt;div class=&quot;relative w-fit custom-code-block-canvas-wrapper w-full&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; position: relative; width: 769px; overflow-anchor: auto;&quot;&gt;
            &lt;div class=&quot;code-block-element-YDlfvc light custom-code-block-container--bash hide-indicator disable-theme-style custom-code-block-container&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 8px 0px 0px; padding: 0px; display: flex; flex-direction: column; position: relative; --chat-md-codeblock-bg-color: #f9fafb; --chat-md-codeblock-header-bg-color: #f3f4f6; --code-area-radius: 6px; --code-area-radius-inner: calc(6px - 1px); --code-area-bg-color: #f9fafb; --code-header-bg-color: #f3f4f6; --code-mask-bg-color: linear-gradient(180deg,rgba(249,250,251,0),#f9fafb); --code-header-icon-color: rgba(0,0,0,.5); --code-header-text-color: rgba(0,0,0,.85); --code-header-icon-bg-color: rgba(0,0,0,.06); --code-block-code-color: #000000d9; --code-block-std-bg-color: #f3f4f6; --code-block-std-err-color: #d60000; overflow-anchor: auto;&quot;&gt;
                &lt;div class=&quot;code-area-tZtDgG code-area&quot; dir=&quot;ltr&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 250, 251); border-radius: 6px; display: flex; flex-direction: column; height: fit-content; width: 769px; overflow-anchor: auto;&quot;&gt;
                    &lt;div class=&quot;header-wrapper-UnnlXS&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto; background-color: rgb(255, 255, 255); position: sticky; top: 0px;&quot;&gt;
                        &lt;div class=&quot;header-cGu84a&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border-width: 1px 1px 0px; border-style: solid; border-color: rgba(0, 0, 0, 0.08); border-image: none 100% / 1 / 0 stretch; margin: 0px; padding: 6px 9px 6px 6px; align-items: center; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(243, 244, 246); display: flex; flex-direction: row; flex-shrink: 0; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; height: 32px; justify-content: space-between; border-radius: 5px 5px 0px 0px; overflow-anchor: auto;&quot;&gt;
                            &lt;div class=&quot;title-XQhI4x clickable-eGISjP&quot; tabindex=&quot;0&quot; aria-describedby=&quot;hc95o23&quot; data-popupid=&quot;hc95o23&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px 4px 0px 10px; overflow-anchor: auto; align-items: center; border-radius: 4px; color: rgba(0, 0, 0, 0.5); display: flex; flex-direction: row; gap: 3px; cursor: pointer;&quot;&gt;
                                &lt;div class=&quot;text-jgT4jF&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto; align-items: center; color: rgba(0, 0, 0, 0.85); display: flex; font-family: &amp;quot;PingFang SC&amp;quot;; font-size: 14px; gap: 3px; line-height: 22px; overflow: hidden; text-overflow: ellipsis; text-wrap-mode: nowrap;&quot;&gt;
                                    bash
                                &lt;/div&gt;
                                &lt;div class=&quot;icon-FIfuuc&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto; align-items: center; display: flex; height: 20px; justify-content: center; position: relative; width: 15px;&quot;&gt;
                                    &lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-12&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                                        &lt;path fill=&quot;currentColor&quot; d=&quot;M21.707 17.293a1 1 0 0 1-1.414 0L12 9l-8.293 8.293a1 1 0 0 1-1.414-1.414l8.293-8.293a2 2 0 0 1 2.828 0l8.293 8.293a1 1 0 0 1 0 1.414&quot;&gt;&lt;/path&gt;
                                    &lt;/svg&gt;&lt;/span&gt;
                                &lt;/div&gt;
                            &lt;/div&gt;
                            &lt;div class=&quot;action-tEcs3i&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto; align-items: center; color: rgba(0, 0, 0, 0.5); cursor: pointer; display: flex; flex-direction: row; gap: 8px; justify-content: space-between;&quot;&gt;
                                &lt;div class=&quot;hoverable-sPLxOT&quot; data-testid=&quot;code-block-copy&quot; tabindex=&quot;0&quot; aria-describedby=&quot;54heei1&quot; data-popupid=&quot;54heei1&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; align-items: center; display: flex; height: 20px; justify-content: center; position: relative; width: 20px; overflow-anchor: auto;&quot;&gt;
                                    &lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-14&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; font-size: 14px; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                                        &lt;path fill=&quot;currentColor&quot; fill-rule=&quot;evenodd&quot; d=&quot;M21 3.5V17a2 2 0 0 1-2 2h-2v-2h2V3.5H9v2h5.857c1.184 0 2.143.895 2.143 2v13c0 1.105-.96 2-2.143 2H5.143C3.959 22.5 3 21.605 3 20.5v-13c0-1.105.96-2 2.143-2H7v-2a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2m-6.143 4H5.143v13h9.714z&quot; clip-rule=&quot;evenodd&quot;&gt;&lt;/path&gt;
                                    &lt;/svg&gt;&lt;/span&gt;
                                &lt;/div&gt;
                                &lt;div class=&quot;hoverable-sPLxOT&quot; tabindex=&quot;0&quot; aria-describedby=&quot;78lw5zz&quot; data-popupid=&quot;78lw5zz&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; align-items: center; display: flex; height: 20px; justify-content: center; position: relative; width: 20px; overflow-anchor: auto;&quot;&gt;
                                    &lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-14&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; font-size: 14px; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                                        &lt;path fill=&quot;currentColor&quot; fill-rule=&quot;evenodd&quot; d=&quot;M4 4a1 1 0 0 1 1 1v3a3 3 0 0 0 3 3h11.086l-5.293-5.293a1 1 0 0 1 1.414-1.414l7 7a1 1 0 0 1 0 1.414l-7 7a1 1 0 0 1-1.414-1.414L19.086 13H8a5 5 0 0 1-5-5V5a1 1 0 0 1 1-1&quot; clip-rule=&quot;evenodd&quot;&gt;&lt;/path&gt;
                                    &lt;/svg&gt;&lt;/span&gt;
                                &lt;/div&gt;
                                &lt;div class=&quot;hoverable-sPLxOT&quot; tabindex=&quot;0&quot; aria-describedby=&quot;kua3enh&quot; data-popupid=&quot;kua3enh&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; align-items: center; display: flex; height: 20px; justify-content: center; position: relative; width: 20px; overflow-anchor: auto;&quot;&gt;
                                    &lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-14&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; font-size: 14px; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                                        &lt;path fill=&quot;currentColor&quot; fill-rule=&quot;evenodd&quot; d=&quot;M4.797 16.856a8.28 8.28 0 0 0 6.27 2.87h.008A8.28 8.28 0 0 0 14.372 3.84a11.6 11.6 0 0 1-1.658 7.714 11.62 11.62 0 0 1-7.917 5.303M13.415 1.43a10.28 10.28 0 0 1-2.348 20.296 10.28 10.28 0 0 1-8.883-5.103c-.397-.74.155-1.605.912-1.609a9.617 9.617 0 0 0 9.011-12.258 1.093 1.093 0 0 1 1.308-1.326&quot; clip-rule=&quot;evenodd&quot;&gt;&lt;/path&gt;
                                    &lt;/svg&gt;&lt;/span&gt;
                                &lt;/div&gt;
                                &lt;div class=&quot;hoverable-sPLxOT&quot; tabindex=&quot;0&quot; aria-describedby=&quot;ws6smwg&quot; data-popupid=&quot;ws6smwg&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; align-items: center; display: flex; height: 20px; justify-content: center; position: relative; width: 20px; overflow-anchor: auto;&quot;&gt;
                                    &lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-14&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; font-size: 14px; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                                        &lt;path fill=&quot;currentColor&quot; d=&quot;M22 3v7a1 1 0 1 1-2 0V4h-6a1 1 0 1 1 0-2h7a1 1 0 0 1 1 1M11.005 21a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1v-7a1 1 0 0 1 2.002 0v6h6.003a1 1 0 0 1 1 1&quot;&gt;&lt;/path&gt;
                                    &lt;/svg&gt;&lt;/span&gt;
                                &lt;/div&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;content-EGRozu code-content light-scrollbar-TbsSwi&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border-width: 0px 1px 1px; border-style: solid; border-color: rgba(0, 0, 0, 0.08); border-image: initial; margin: 0px; padding: 12px 16px 16px; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; flex-shrink: 0; height: fit-content; overflow: overlay; overflow-anchor: auto; border-radius: 0px 0px 5px 5px;&quot;&gt;
                        &lt;pre class=&quot;container-_HmLba language-bash&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin-top: 0px; margin-bottom: 0px; padding: 0px; font-family: ui-monospace, SFMono-Regular, &amp;quot;SF Mono&amp;quot;, Menlo, Consolas, &amp;quot;Liberation Mono&amp;quot;, monospace; overflow-wrap: normal; font-feature-settings: normal; font-size: 13.6px; font-variation-settings: normal; --code-text_v3: #000000d9; --code-doc_v3: #00000073; --code-Link_v3: #2f74ff; --code-number_v3: #e54595; --code-keycontrol_v3: #9952e1; --code-function_v3: #ff5d4d; --code-variable_v3: #000000d9; --code-parameter_v3: #4da621; --code-attributes_v3: #c70; --code-selection-bg-color: #a9d6ff; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); color: rgb(0, 0, 0); word-break: normal; word-spacing: normal; hyphens: none; line-height: 1.5; tab-size: 4; overflow: auto; border-radius: 6px; overflow-anchor: auto; width: fit-content;&quot;&gt;/opt/1panel/bin/1panel remove&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;mask-wrapper-VgpgeU&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto; opacity: 0; transition: opacity 0.15s;&quot;&gt;
                        &lt;div class=&quot;mask-ZLHDuN&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; background: linear-gradient(rgba(249, 250, 251, 0), rgb(249, 250, 251)) 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); bottom: 0px; height: 56px; pointer-events: none; position: absolute; width: 769px; overflow-anchor: auto;&quot;&gt;&lt;/div&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;p&gt;
            &lt;br class=&quot;container-utlnW2 wrapper-d0Cc1k undefined&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto;&quot;/&gt;
        &lt;/p&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
    &lt;br class=&quot;container-utlnW2 wrapper-d0Cc1k undefined&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 1em; padding: 0px; content: &amp;quot;&amp;quot;; display: block; font-size: 20px; overflow-anchor: auto; font-family: Inter, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;SF Pro SC&amp;quot;, &amp;quot;SF Pro Display&amp;quot;, &amp;quot;SF Pro Icons&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; text-wrap-mode: wrap; background-color: rgb(255, 255, 255);&quot;/&gt;
&lt;/p&gt;
&lt;div class=&quot;auto-hide-last-sibling-br paragraph-JOTKXA paragraph-element br-paragraph-space&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; line-height: 28px; font-size: 16px; overflow-anchor: auto; font-family: Inter, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;SF Pro SC&amp;quot;, &amp;quot;SF Pro Display&amp;quot;, &amp;quot;SF Pro Icons&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; text-wrap-mode: wrap; background-color: rgb(255, 255, 255); color: rgba(0, 0, 0, 0.85) !important;&quot;&gt;
    安装完成后，你可以通过 1Panel 可视化界面管理服务器、部署应用、配置数据库等，非常适合新手和需要高效管理服务器的用户。
&lt;/div&gt;
&lt;p&gt;
    &lt;br/&gt;
&lt;/p&gt;</description><pubDate>Wed, 13 Aug 2025 00:37:32 +0800</pubDate></item><item><title>Linux系统备份及恢复的一个方案</title><link>https://sysplus.top/?id=7</link><description>&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;本文为借鉴经验并按实际梳理，测试成功，环境如下:&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;VMware虚拟机Ubuntu20.04系统、实体电脑Ubuntu20.04系统&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;br/&gt;&lt;/p&gt;&lt;blockquote style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;p&gt;主要思路如下：由于linux系统一切皆文件的理念。通过tar工具将除启动分区（/boot）、/etc/fstab和动态生成的文件夹（media、proc等，下详细列出）将根目录下所有文件夹打包并压缩成一个文件backup.tar.gz。恢复时，通过Ubuntu Desktop版的ISO镜像进入试用环境（可直接进入其他系统或者系统ISO镜像写U盘进入试用环境，不能直接进入目标恢复系统），然后将backup.tar.gz解压到目标系统的根目录，恢复/etc/fstab，重启系统后正常运行。&lt;/p&gt;&lt;/blockquote&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;strong&gt;原电脑：&lt;/strong&gt;A，实体电脑，安装了Ubuntu20.04系统，安装有nginx、anaconda等软件&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;strong&gt;恢复的电脑：&lt;/strong&gt;B，VMware虚拟机，安装了纯净的Ubuntu20.04系统（本次测试为异地恢复，非恢复原系统，原理一样）&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;strong&gt;1、将A电脑的相关文件打包到一个压缩文件&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;（c&amp;nbsp;创建，v&amp;nbsp;显示指令执行过程，p&amp;nbsp;保留原来权限，z&amp;nbsp;进行压缩，f指定备份文件，&amp;nbsp;--exclude&amp;nbsp;指不打包的文件/夹）
tar&amp;nbsp;cvpzf&amp;nbsp;backup.tgz&amp;nbsp;--exclude=/proc&amp;nbsp;--exclude=/lost+found&amp;nbsp;--exclude=/backup.tgz&amp;nbsp;--exclude=/mnt&amp;nbsp;--exclude=/sys&amp;nbsp;--exclude=/media&amp;nbsp;&amp;nbsp;--exclude=/swap.img&amp;nbsp;&amp;nbsp;--exclude=/boot&amp;nbsp;/&lt;/pre&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;2、B电脑安装好纯净的系统（如果在原电脑恢复，可以跳过这步），提前将backup.tar.gz拷贝到一个U盘&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap; text-align: center;&quot;&gt;&lt;img src=&quot;https://ixiaoye.top/zb_users/upload/2022/12/202212231671803905175808.jpg&quot; title=&quot;空白新系统.jpg&quot; alt=&quot;空白新系统.jpg&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;将Ubuntu 20.04 desktop版本的ISO镜像装载到虚拟机B电脑（实际操作可以用U盘写desktop镜像启动）并启动进入bois，选择优先光驱启动&lt;br/&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap; text-align: center;&quot;&gt;&lt;img src=&quot;https://ixiaoye.top/zb_users/upload/2022/12/202212231671803966506077.jpg&quot; title=&quot;选择desktop镜像.jpg&quot; alt=&quot;选择desktop镜像.jpg&quot; width=&quot;671&quot; height=&quot;323&quot; style=&quot;width: 671px; height: 323px;&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;启动时选择Try Ubuntu，进入试用系统环境，挂载U盘&lt;br/&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap; text-align: center;&quot;&gt;&lt;img src=&quot;https://ixiaoye.top/zb_users/upload/2022/12/202212231671804160903748.jpg&quot; title=&quot;分配USB到虚拟机.jpg&quot; alt=&quot;分配USB到虚拟机.jpg&quot; width=&quot;882&quot; height=&quot;426&quot; style=&quot;width: 882px; height: 426px;&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;3、系统文件恢复&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;可以通过查看待恢复B电脑硬盘的文件了解路径，一般路径都是 /media/ubuntu/xxxxxxxxxxxxxxxxxxxxxxxxxxx/ ,xxx代表不同的磁盘分区，其中B电脑和U盘的不同路径&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap; text-align: center;&quot;&gt;&lt;img src=&quot;https://ixiaoye.top/zb_users/upload/2022/12/202212231671804212103864.jpg&quot; title=&quot;硬盘位置.jpg&quot; alt=&quot;硬盘位置.jpg&quot; width=&quot;1241&quot; height=&quot;789&quot; style=&quot;width: 1241px; height: 789px;&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;进入到B电脑硬盘分区的目录，通过sudo cp 命令备份/etc/fstab到U盘目录。（注意如果boot是单独一个分区，无需理会，但是在当前分区下，则注意不能删/boot，最好就是直接保留/boot）&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;然后&lt;strong&gt;删除除了第一步压缩--exclude 排除的文件/夹，即保留proc、lost+found、mnt、sys、media、swap.img、boot&lt;/strong&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;解压&amp;nbsp;/为具体解压到那个目录（x&amp;nbsp;还原，v&amp;nbsp;显示指令执行过程，p&amp;nbsp;保留原来权限，z&amp;nbsp;进行压缩，f指定备份文件），注意backup.tar.gz文件路径和解压目标路径需要根据实际补全。
tar&amp;nbsp;xvpzf&amp;nbsp;backup.tar.gz&amp;nbsp;-C&amp;nbsp;/
解压完，恢复B电脑备份的/etc/fstab文件,Axxx-Bxxx指U盘所在路径,当前路径为B电脑的分区根目录
sudo&amp;nbsp;cp&amp;nbsp;/media/ubunt/Axxx-Bxxx/fstab&amp;nbsp;./etc/fstab&lt;/pre&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;strong&gt;4、重启电脑，恢复完成，查询原A电脑的环境已经恢复到了B电脑&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap; text-align: center;&quot;&gt;&lt;img src=&quot;https://ixiaoye.top/zb_users/upload/2022/12/202212231671804813407745.jpg&quot; title=&quot;切换成功.jpg&quot; alt=&quot;切换成功.jpg&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Wed, 13 Aug 2025 00:35:55 +0800</pubDate></item><item><title>Mysql数据库主从模式配置及切换方案</title><link>https://sysplus.top/?id=6</link><description>&lt;p&gt;&lt;span style=&quot;color: #05073B; font-family: PingFang-SC-Regular; font-size: 15px; text-wrap: wrap; background-color: #FDFDFE;&quot;&gt;有一个项目的需求，同时配置两台服务器，两台服务器的mysql数据库、系统图片、视频等资源等实时同步，在出现故障时迅速切换。（通过mysql主从复制、rsync数据同步、nginx负载均衡的方案实现）&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #05073B; font-family: PingFang-SC-Regular; font-size: 15px; text-wrap: wrap; background-color: #FDFDFE;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #05073B; font-family: PingFang-SC-Regular; font-size: 15px; text-wrap: wrap; background-color: #FDFDFE;&quot;&gt;通过实现MySQL数据库的从数据库实时备份，以便在故障发生时能迅速切换到从数据库。同时，为了避免在服务器切换时手动拷贝图片、视频资源，采用rsync同步复制技术。系统正常运行的情况下，两台服务器分别有一条线路，采用云解释分别访问两台服务器，然后通过nginx负载均衡，mysql默认访问主服务器的mysql。&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #05073B; font-family: PingFang-SC-Regular; font-size: 15px; text-wrap: wrap; background-color: #FDFDFE;&quot;&gt;&lt;img src=&quot;https://ixiaoye.top/zb_users/upload/2023/09/202309091694262360234082.png&quot; title=&quot;双线路服务器容灾方案.png&quot; alt=&quot;双线路服务器容灾方案.png&quot; width=&quot;718&quot; height=&quot;624&quot; style=&quot;width: 718px; height: 624px;&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #05073B; font-family: PingFang-SC-Regular; font-size: 15px; text-wrap: wrap; background-color: #FDFDFE;&quot;&gt;关于MySQL的主从配置，下面详细记录，参考了其他博主的方法。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #05073B; font-family: PingFang-SC-Regular; font-size: 15px; text-wrap: wrap; background-color: #FDFDFE;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;主库：192.168.100.60&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3306&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
从库：192.168.100.101&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3306&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;text-wrap: wrap; font-size: 16px;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;text-wrap: wrap;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br/&gt;&lt;/p&gt;&lt;h2 id=&quot;1、主从原理&quot; style=&quot;box-sizing: border-box; outline: 0px; padding: 0px; margin: 24px 0px 8px; font-size: 20px; color: rgb(79, 79, 79); line-height: 30px; overflow-wrap: break-word; font-family: -apple-system, &amp;quot;SF UI Text&amp;quot;, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, sans-serif, SimHei, SimSun; text-wrap: wrap; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;1、主从原理&lt;/span&gt;&lt;/h2&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 16px; box-sizing: border-box; outline: 0px; padding: 0px; font-size: 16px; color: rgb(77, 77, 77); overflow: auto hidden; overflow-wrap: break-word; font-family: -apple-system, &amp;quot;SF UI Text&amp;quot;, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, sans-serif, SimHei, SimSun; text-wrap: wrap; background-color: rgb(255, 255, 255); line-height: 24px !important;&quot;&gt;主从原理大致有三个步骤：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot; style=&quot;list-style-type: none;&quot;&gt;&lt;li&gt;&lt;p&gt;在主库上把数据更改记录到二进制日志中（Binary Log）中，这些记录称为二进制日志事件。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;从库通过IO线程将主库上的日志复制到自己的中继日志（Relay Log）中。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;从库通过SQL线程读取中继日志中的事件，将其重放到自己数据上。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;配置前，要保证主从库数据的数据一致。&lt;br/&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;原理图如下：&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;https://ixiaoye.top/zb_users/upload/2023/10/202310131697164243229980.png&quot; title=&quot;a92f84c812290352714f7853c3a4f85a.png&quot; alt=&quot;a92f84c812290352714f7853c3a4f85a.png&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: #05073B; font-family: PingFang-SC-Regular; font-size: 15px; text-wrap: wrap; background-color: #FDFDFE;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;h2 style=&quot;box-sizing: border-box; outline: 0px; padding: 0px; margin: 24px 0px 8px; font-size: 20px; color: rgb(79, 79, 79); line-height: 30px; overflow-wrap: break-word; font-family: -apple-system, &amp;quot;SF UI Text&amp;quot;, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, sans-serif, SimHei, SimSun; text-wrap: wrap; background-color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;font-size: 18px;&quot;&gt;2、主从配置&lt;/span&gt;&lt;/h2&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 16px; box-sizing: border-box; outline: 0px; padding: 0px; font-size: 16px; color: rgb(77, 77, 77); overflow: auto hidden; overflow-wrap: break-word; font-family: -apple-system, &amp;quot;SF UI Text&amp;quot;, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, sans-serif, SimHei, SimSun; text-wrap: wrap; background-color: rgb(255, 255, 255); line-height: 24px !important;&quot;&gt;&lt;strong&gt;（1）配置主库&lt;br/&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 16px; box-sizing: border-box; outline: 0px; padding: 0px; font-size: 16px; color: rgb(77, 77, 77); overflow: auto hidden; overflow-wrap: break-word; font-family: -apple-system, &amp;quot;SF UI Text&amp;quot;, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, sans-serif, SimHei, SimSun; text-wrap: wrap; background-color: rgb(255, 255, 255); line-height: 24px !important;&quot;&gt;&lt;span style=&quot;text-wrap-style: initial;&quot;&gt;修改my.cnf文件，在[mysqld]加入下面的内容：&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#&amp;nbsp;服务的唯一编号
server-id&amp;nbsp;=&amp;nbsp;1
#&amp;nbsp;开启mysql&amp;nbsp;binlog功能
log-bin&amp;nbsp;=&amp;nbsp;mysql-bin
#&amp;nbsp;binlog记录内容的方式，记录被操作的每一行
binlog_format&amp;nbsp;=&amp;nbsp;ROW
#&amp;nbsp;减少记录日志的内容，只记录受影响的列
binlog_row_image&amp;nbsp;=&amp;nbsp;minimal
#&amp;nbsp;指定需要复制的数据库名为test
binlog-do-db&amp;nbsp;=&amp;nbsp;test&lt;/pre&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 16px; box-sizing: border-box; outline: 0px; padding: 0px; font-size: 16px; color: rgb(77, 77, 77); overflow: auto hidden; overflow-wrap: break-word; font-family: -apple-system, &amp;quot;SF UI Text&amp;quot;, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, sans-serif, SimHei, SimSun; text-wrap: wrap; background-color: rgb(255, 255, 255); line-height: 24px !important;&quot;&gt;&lt;strong&gt;修改好配置文件，重启mysql服务&lt;/strong&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;service&amp;nbsp;mysqld&amp;nbsp;restart&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;在mysql命令终端执行下面指令，创建从库用于同步数据的账号（主库ip为：&lt;span style=&quot;text-wrap: wrap;&quot;&gt;192.168.100.60，&lt;/span&gt;192.168.100.101为从库ip，也可以直接用 % 代替）&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;CREATE&amp;nbsp;USER&amp;nbsp;&amp;#39;test&amp;#39;@&amp;#39;192.168.100.101&amp;#39;&amp;nbsp;IDENTIFIED&amp;nbsp;BY&amp;nbsp;&amp;#39;test123&amp;#39;;
GRANT&amp;nbsp;REPLICATION&amp;nbsp;SLAVE&amp;nbsp;ON&amp;nbsp;*.*&amp;nbsp;TO&amp;nbsp;&amp;#39;test&amp;#39;@&amp;#39;192.168.100.101&amp;#39;;
flush&amp;nbsp;privileges;&lt;/pre&gt;&lt;p style=&quot;margin-top: 0px; margin-bottom: 16px; box-sizing: border-box; outline: 0px; padding: 0px; font-size: 16px; color: rgb(77, 77, 77); overflow: auto hidden; overflow-wrap: break-word; font-family: -apple-system, &amp;quot;SF UI Text&amp;quot;, Arial, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;WenQuanYi Micro Hei&amp;quot;, sans-serif, SimHei, SimSun; text-wrap: wrap; background-color: rgb(255, 255, 255); line-height: 24px !important;&quot;&gt;&lt;strong&gt;（2）配置从库&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;同配置主库步骤配置从库的my.cnf文件，唯一不同的是：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;server-id&amp;nbsp;=&amp;nbsp;2&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;以下在mysql终端执行：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#&amp;nbsp;设置主服务器ip，同步账号密码，同步位置，这两个信息在主库mysql终端执行&amp;nbsp;show&amp;nbsp;master&amp;nbsp;status\G;&amp;nbsp;可得
CHANGE&amp;nbsp;MASTER&amp;nbsp;TO&amp;nbsp;MASTER_HOST=&amp;#39;192.168.100.60&amp;#39;,MASTER_USER=&amp;#39;test&amp;#39;,MASTER_PASSWORD=&amp;#39;test123&amp;#39;,MASTER_LOG_FILE=&amp;#39;mysql-bin.000001&amp;#39;,MASTER_LOG_POS=4778;
#&amp;nbsp;开启同步功能
start&amp;nbsp;slave;&lt;/pre&gt;&lt;p&gt;查看从库的运行状态：&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;show&amp;nbsp;slave&amp;nbsp;status\G;

#成功的标志是：
...
Slave_IO_Running:&amp;nbsp;Yes
Slave_SQL_Running:&amp;nbsp;Yes
...&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;strong&gt;注意：&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;（1）报错&lt;span style=&quot;color: #05073B; font-family: &amp;quot;PingFang SC&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, SimSun, sans-serif; font-size: 15px; white-space: pre-wrap;&quot;&gt;Authentication plugin &amp;#39;caching_sha2_password&amp;#39; reported error: Authentication requires secure connection，&lt;/span&gt;文心一言建议：如果你没有打算使用SSL/TLS，或者只是为了测试目的，你可以尝试更改MySQL用户的身份验证插件。例如，你可以将其更改为“mysql_native_password”。&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;ALTER&amp;nbsp;USER&amp;nbsp;&amp;#39;test&amp;#39;@&amp;#39;192.168.100.101&amp;#39;&amp;nbsp;IDENTIFIED&amp;nbsp;WITH&amp;nbsp;mysql_native_password&amp;nbsp;BY&amp;nbsp;&amp;#39;test123&amp;#39;;&amp;nbsp;&amp;nbsp;
FLUSH&amp;nbsp;PRIVILEGES;&lt;/pre&gt;&lt;p&gt;（2）如果需要重新运行Change master....，需要先STOP SLAVE IO_THREAD;&lt;/p&gt;&lt;p&gt;（3）从库需要禁止写入，防止不同步。&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;#&amp;nbsp;选定数据库
use&amp;nbsp;test;
#&amp;nbsp;读锁定，禁止写操作
FLUSH&amp;nbsp;TABLES&amp;nbsp;WITH&amp;nbsp;READ&amp;nbsp;LOCK;
#&amp;nbsp;解锁
UNLOCK&amp;nbsp;TABLES;&lt;/pre&gt;&lt;p&gt;&lt;br style=&quot;text-wrap-mode: wrap;&quot;/&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Wed, 13 Aug 2025 00:34:43 +0800</pubDate></item><item><title>虚拟机模拟mongodb配置多节点副本集，实现事务特性</title><link>https://sysplus.top/?id=5</link><description>&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-family: 宋体, SimSun;&quot;&gt;一、环境环境：Ubuntu 22，完成mongd、mongosh、mongodump安装，第一步先进行备份（这里端口用的是27070）：（注意，这里配置内部地址，在远程连接时无法连接，或者加上直连参数；正式环境时可以配置内部地址，因为数据库和服务器在同一设备或者一个网络内）&lt;/span&gt;&lt;/p&gt;&lt;pre style=&quot;background-color: rgb(43, 43, 43); color: rgb(169, 183, 198); font-family: &amp;quot;JetBrains Mono&amp;quot;, monospace; font-size: 9.8pt;&quot;&gt;mongodb://35.109.172.62:27070/emanyuen?directConnection=true&amp;amp;replicaSet=rs0&amp;#39;})&amp;nbsp;&amp;nbsp;#地址非真实&lt;/pre&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;br/&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;mongodump&amp;nbsp;--port&amp;nbsp;27070&amp;nbsp;--out&amp;nbsp;./backup&lt;/pre&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;br/&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;font-family: 宋体, SimSun;&quot;&gt;二、新建2个节点，1个仲裁节点，通过docker创建。事先下载mongo:latest镜像&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;docker&amp;nbsp;network&amp;nbsp;create&amp;nbsp;mongo-cluster&amp;nbsp;#创建虚拟网络
docker&amp;nbsp;run&amp;nbsp;-d&amp;nbsp;--name&amp;nbsp;mongo-secondary1&amp;nbsp;--network&amp;nbsp;mongo-cluster&amp;nbsp;-p&amp;nbsp;27071:27017&amp;nbsp;mongo:latest&amp;nbsp;mongod&amp;nbsp;--replSet&amp;nbsp;rs0
docker&amp;nbsp;run&amp;nbsp;-d&amp;nbsp;--name&amp;nbsp;mongo-secondary2&amp;nbsp;--network&amp;nbsp;mongo-cluster&amp;nbsp;-p&amp;nbsp;27072:27017&amp;nbsp;mongo:latest&amp;nbsp;mongod&amp;nbsp;--replSet&amp;nbsp;rs0
docker&amp;nbsp;run&amp;nbsp;-d&amp;nbsp;--name&amp;nbsp;mongo-arbiter&amp;nbsp;--network&amp;nbsp;mongo-cluster&amp;nbsp;-p&amp;nbsp;27073:27017&amp;nbsp;mongo:latest&amp;nbsp;mongod&amp;nbsp;--replSet&amp;nbsp;rs0&lt;/pre&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;img src=&quot;https://ixiaoye.top/zb_users/upload/2025/03/202503081741415079607723.png&quot; alt=&quot;image.png&quot;/&gt;&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;三、修改/etc/mongd.conf配置，重新启动 mongod&lt;/p&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-actionscript&quot;&gt;storage:
&amp;nbsp;&amp;nbsp;dbPath:&amp;nbsp;/var/lib/mongodb
systemLog:
&amp;nbsp;&amp;nbsp;destination:&amp;nbsp;file
&amp;nbsp;&amp;nbsp;logAppend:&amp;nbsp;true
&amp;nbsp;&amp;nbsp;path:&amp;nbsp;/var/log/mongodb/mongod.log
#&amp;nbsp;network&amp;nbsp;interfaces
net:
&amp;nbsp;&amp;nbsp;port:&amp;nbsp;27070
&amp;nbsp;&amp;nbsp;bindIp:&amp;nbsp;0.0.0.0
#&amp;nbsp;how&amp;nbsp;the&amp;nbsp;process&amp;nbsp;runs
processManagement:
&amp;nbsp;&amp;nbsp;timeZoneInfo:&amp;nbsp;/usr/share/zoneinfo
#security:
security:
&amp;nbsp;authorization:&amp;nbsp;disabled
#operationProfiling:
replication:
&amp;nbsp;&amp;nbsp;replSetName:&amp;nbsp;rs0&amp;nbsp;&amp;nbsp;#这里重点统一副本集名称&lt;/pre&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;/span&gt;四、进入mongo shell进行配置&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;mongo&amp;nbsp;--port&amp;nbsp;27070&lt;/pre&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;//&amp;nbsp;初始化副本集,注意host要么都使用localhost，要么全部不能使用，这里使用mongo-cluster的ip
var&amp;nbsp;config&amp;nbsp;=&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;_id&amp;quot;:&amp;nbsp;&amp;quot;rs0&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;members&amp;quot;:&amp;nbsp;[
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;_id&amp;quot;:&amp;nbsp;0,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;host&amp;quot;:&amp;nbsp;&amp;quot;172.18.0.1:27070&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;_id&amp;quot;:&amp;nbsp;1,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;host&amp;quot;:&amp;nbsp;&amp;quot;172.18.0.2:27071&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;_id&amp;quot;:&amp;nbsp;2,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;host&amp;quot;:&amp;nbsp;&amp;quot;172.18.0.3:27072&amp;quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;_id&amp;quot;:&amp;nbsp;3,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;host&amp;quot;:&amp;nbsp;&amp;quot;172.18.0.4:27073&amp;quot;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;arbiterOnly&amp;quot;:&amp;nbsp;true
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;]
};
rs.initiate(config);&lt;/pre&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;可以通过rs.status()查看状态&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;rs0&amp;nbsp;[direct:&amp;nbsp;primary]&amp;nbsp;test&amp;gt;&amp;nbsp;rs.status()
{
&amp;nbsp;&amp;nbsp;set:&amp;nbsp;&amp;#39;rs0&amp;#39;,
&amp;nbsp;&amp;nbsp;date:&amp;nbsp;ISODate(&amp;#39;2025-03-08T06:11:27.651Z&amp;#39;),
&amp;nbsp;&amp;nbsp;myState:&amp;nbsp;1,
&amp;nbsp;&amp;nbsp;term:&amp;nbsp;Long(&amp;#39;2&amp;#39;),
&amp;nbsp;&amp;nbsp;syncSourceHost:&amp;nbsp;&amp;#39;&amp;#39;,
&amp;nbsp;&amp;nbsp;syncSourceId:&amp;nbsp;-1,
&amp;nbsp;&amp;nbsp;heartbeatIntervalMillis:&amp;nbsp;Long(&amp;#39;2000&amp;#39;),
&amp;nbsp;&amp;nbsp;majorityVoteCount:&amp;nbsp;3,
&amp;nbsp;&amp;nbsp;writeMajorityCount:&amp;nbsp;3,
&amp;nbsp;&amp;nbsp;votingMembersCount:&amp;nbsp;4,
&amp;nbsp;&amp;nbsp;writableVotingMembersCount:&amp;nbsp;3,
&amp;nbsp;&amp;nbsp;optimes:&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastCommittedOpTime:&amp;nbsp;{&amp;nbsp;ts:&amp;nbsp;Timestamp({&amp;nbsp;t:&amp;nbsp;1741414278,&amp;nbsp;i:&amp;nbsp;1&amp;nbsp;}),&amp;nbsp;t:&amp;nbsp;Long(&amp;#39;2&amp;#39;)&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastCommittedWallTime:&amp;nbsp;ISODate(&amp;#39;2025-03-08T06:11:18.725Z&amp;#39;),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;readConcernMajorityOpTime:&amp;nbsp;{&amp;nbsp;ts:&amp;nbsp;Timestamp({&amp;nbsp;t:&amp;nbsp;1741414278,&amp;nbsp;i:&amp;nbsp;1&amp;nbsp;}),&amp;nbsp;t:&amp;nbsp;Long(&amp;#39;2&amp;#39;)&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;appliedOpTime:&amp;nbsp;{&amp;nbsp;ts:&amp;nbsp;Timestamp({&amp;nbsp;t:&amp;nbsp;1741414278,&amp;nbsp;i:&amp;nbsp;1&amp;nbsp;}),&amp;nbsp;t:&amp;nbsp;Long(&amp;#39;2&amp;#39;)&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;durableOpTime:&amp;nbsp;{&amp;nbsp;ts:&amp;nbsp;Timestamp({&amp;nbsp;t:&amp;nbsp;1741414278,&amp;nbsp;i:&amp;nbsp;1&amp;nbsp;}),&amp;nbsp;t:&amp;nbsp;Long(&amp;#39;2&amp;#39;)&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastAppliedWallTime:&amp;nbsp;ISODate(&amp;#39;2025-03-08T06:11:18.725Z&amp;#39;),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastDurableWallTime:&amp;nbsp;ISODate(&amp;#39;2025-03-08T06:11:18.725Z&amp;#39;)
&amp;nbsp;&amp;nbsp;},
&amp;nbsp;&amp;nbsp;lastStableRecoveryTimestamp:&amp;nbsp;Timestamp({&amp;nbsp;t:&amp;nbsp;1741414238,&amp;nbsp;i:&amp;nbsp;1&amp;nbsp;}),
&amp;nbsp;&amp;nbsp;electionCandidateMetrics:&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastElectionReason:&amp;nbsp;&amp;#39;electionTimeout&amp;#39;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastElectionDate:&amp;nbsp;ISODate(&amp;#39;2025-03-08T05:45:38.697Z&amp;#39;),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;electionTerm:&amp;nbsp;Long(&amp;#39;2&amp;#39;),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastCommittedOpTimeAtElection:&amp;nbsp;{&amp;nbsp;ts:&amp;nbsp;Timestamp({&amp;nbsp;t:&amp;nbsp;0,&amp;nbsp;i:&amp;nbsp;0&amp;nbsp;}),&amp;nbsp;t:&amp;nbsp;Long(&amp;#39;-1&amp;#39;)&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastSeenOpTimeAtElection:&amp;nbsp;{&amp;nbsp;ts:&amp;nbsp;Timestamp({&amp;nbsp;t:&amp;nbsp;1741412554,&amp;nbsp;i:&amp;nbsp;1&amp;nbsp;}),&amp;nbsp;t:&amp;nbsp;Long(&amp;#39;1&amp;#39;)&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;numVotesNeeded:&amp;nbsp;1,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;priorityAtElection:&amp;nbsp;1,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;electionTimeoutMillis:&amp;nbsp;Long(&amp;#39;10000&amp;#39;),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;newTermStartDate:&amp;nbsp;ISODate(&amp;#39;2025-03-08T05:45:38.699Z&amp;#39;),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wMajorityWriteAvailabilityDate:&amp;nbsp;ISODate(&amp;#39;2025-03-08T05:45:38.702Z&amp;#39;)
&amp;nbsp;&amp;nbsp;},
&amp;nbsp;&amp;nbsp;members:&amp;nbsp;[
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_id:&amp;nbsp;0,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name:&amp;nbsp;&amp;#39;172.18.0.1:27070&amp;#39;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;health:&amp;nbsp;1,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;state:&amp;nbsp;1,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stateStr:&amp;nbsp;&amp;#39;PRIMARY&amp;#39;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;uptime:&amp;nbsp;1550,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;optime:&amp;nbsp;{&amp;nbsp;ts:&amp;nbsp;Timestamp({&amp;nbsp;t:&amp;nbsp;1741414278,&amp;nbsp;i:&amp;nbsp;1&amp;nbsp;}),&amp;nbsp;t:&amp;nbsp;Long(&amp;#39;2&amp;#39;)&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;optimeDate:&amp;nbsp;ISODate(&amp;#39;2025-03-08T06:11:18.000Z&amp;#39;),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastAppliedWallTime:&amp;nbsp;ISODate(&amp;#39;2025-03-08T06:11:18.725Z&amp;#39;),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastDurableWallTime:&amp;nbsp;ISODate(&amp;#39;2025-03-08T06:11:18.725Z&amp;#39;),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;syncSourceHost:&amp;nbsp;&amp;#39;&amp;#39;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;syncSourceId:&amp;nbsp;-1,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;infoMessage:&amp;nbsp;&amp;#39;&amp;#39;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;electionTime:&amp;nbsp;Timestamp({&amp;nbsp;t:&amp;nbsp;1741412738,&amp;nbsp;i:&amp;nbsp;1&amp;nbsp;}),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;electionDate:&amp;nbsp;ISODate(&amp;#39;2025-03-08T05:45:38.000Z&amp;#39;),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;configVersion:&amp;nbsp;6,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;configTerm:&amp;nbsp;2,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self:&amp;nbsp;true,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastHeartbeatMessage:&amp;nbsp;&amp;#39;&amp;#39;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_id:&amp;nbsp;1,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name:&amp;nbsp;&amp;#39;172.18.0.2:27017&amp;#39;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;health:&amp;nbsp;1,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;state:&amp;nbsp;2,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stateStr:&amp;nbsp;&amp;#39;SECONDARY&amp;#39;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;uptime:&amp;nbsp;44,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;optime:&amp;nbsp;{&amp;nbsp;ts:&amp;nbsp;Timestamp({&amp;nbsp;t:&amp;nbsp;1741414278,&amp;nbsp;i:&amp;nbsp;1&amp;nbsp;}),&amp;nbsp;t:&amp;nbsp;Long(&amp;#39;2&amp;#39;)&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;optimeDurable:&amp;nbsp;{&amp;nbsp;ts:&amp;nbsp;Timestamp({&amp;nbsp;t:&amp;nbsp;1741414278,&amp;nbsp;i:&amp;nbsp;1&amp;nbsp;}),&amp;nbsp;t:&amp;nbsp;Long(&amp;#39;2&amp;#39;)&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;optimeDate:&amp;nbsp;ISODate(&amp;#39;2025-03-08T06:11:18.000Z&amp;#39;),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;optimeDurableDate:&amp;nbsp;ISODate(&amp;#39;2025-03-08T06:11:18.000Z&amp;#39;),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastAppliedWallTime:&amp;nbsp;ISODate(&amp;#39;2025-03-08T06:11:18.725Z&amp;#39;),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastDurableWallTime:&amp;nbsp;ISODate(&amp;#39;2025-03-08T06:11:18.725Z&amp;#39;),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastHeartbeat:&amp;nbsp;ISODate(&amp;#39;2025-03-08T06:11:25.990Z&amp;#39;),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastHeartbeatRecv:&amp;nbsp;ISODate(&amp;#39;2025-03-08T06:11:25.987Z&amp;#39;),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pingMs:&amp;nbsp;Long(&amp;#39;0&amp;#39;),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastHeartbeatMessage:&amp;nbsp;&amp;#39;&amp;#39;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;syncSourceHost:&amp;nbsp;&amp;#39;172.18.0.1:27070&amp;#39;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;syncSourceId:&amp;nbsp;0,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;infoMessage:&amp;nbsp;&amp;#39;&amp;#39;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;configVersion:&amp;nbsp;6,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;configTerm:&amp;nbsp;2
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_id:&amp;nbsp;2,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name:&amp;nbsp;&amp;#39;172.18.0.3:27017&amp;#39;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;health:&amp;nbsp;1,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;state:&amp;nbsp;2,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stateStr:&amp;nbsp;&amp;#39;SECONDARY&amp;#39;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;uptime:&amp;nbsp;44,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;optime:&amp;nbsp;{&amp;nbsp;ts:&amp;nbsp;Timestamp({&amp;nbsp;t:&amp;nbsp;1741414278,&amp;nbsp;i:&amp;nbsp;1&amp;nbsp;}),&amp;nbsp;t:&amp;nbsp;Long(&amp;#39;2&amp;#39;)&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;optimeDurable:&amp;nbsp;{&amp;nbsp;ts:&amp;nbsp;Timestamp({&amp;nbsp;t:&amp;nbsp;1741414278,&amp;nbsp;i:&amp;nbsp;1&amp;nbsp;}),&amp;nbsp;t:&amp;nbsp;Long(&amp;#39;2&amp;#39;)&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;optimeDate:&amp;nbsp;ISODate(&amp;#39;2025-03-08T06:11:18.000Z&amp;#39;),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;optimeDurableDate:&amp;nbsp;ISODate(&amp;#39;2025-03-08T06:11:18.000Z&amp;#39;),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastAppliedWallTime:&amp;nbsp;ISODate(&amp;#39;2025-03-08T06:11:18.725Z&amp;#39;),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastDurableWallTime:&amp;nbsp;ISODate(&amp;#39;2025-03-08T06:11:18.725Z&amp;#39;),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastHeartbeat:&amp;nbsp;ISODate(&amp;#39;2025-03-08T06:11:25.992Z&amp;#39;),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastHeartbeatRecv:&amp;nbsp;ISODate(&amp;#39;2025-03-08T06:11:25.993Z&amp;#39;),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pingMs:&amp;nbsp;Long(&amp;#39;0&amp;#39;),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastHeartbeatMessage:&amp;nbsp;&amp;#39;&amp;#39;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;syncSourceHost:&amp;nbsp;&amp;#39;172.18.0.1:27070&amp;#39;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;syncSourceId:&amp;nbsp;0,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;infoMessage:&amp;nbsp;&amp;#39;&amp;#39;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;configVersion:&amp;nbsp;6,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;configTerm:&amp;nbsp;2
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_id:&amp;nbsp;3,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name:&amp;nbsp;&amp;#39;172.18.0.4:27017&amp;#39;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;health:&amp;nbsp;1,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;state:&amp;nbsp;7,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stateStr:&amp;nbsp;&amp;#39;ARBITER&amp;#39;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;uptime:&amp;nbsp;44,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastHeartbeat:&amp;nbsp;ISODate(&amp;#39;2025-03-08T06:11:25.988Z&amp;#39;),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastHeartbeatRecv:&amp;nbsp;ISODate(&amp;#39;2025-03-08T06:11:25.990Z&amp;#39;),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pingMs:&amp;nbsp;Long(&amp;#39;0&amp;#39;),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastHeartbeatMessage:&amp;nbsp;&amp;#39;&amp;#39;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;syncSourceHost:&amp;nbsp;&amp;#39;&amp;#39;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;syncSourceId:&amp;nbsp;-1,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;infoMessage:&amp;nbsp;&amp;#39;&amp;#39;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;configVersion:&amp;nbsp;6,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;configTerm:&amp;nbsp;2
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;],
&amp;nbsp;&amp;nbsp;ok:&amp;nbsp;1,
&amp;nbsp;&amp;nbsp;&amp;#39;$clusterTime&amp;#39;:&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;clusterTime:&amp;nbsp;Timestamp({&amp;nbsp;t:&amp;nbsp;1741414278,&amp;nbsp;i:&amp;nbsp;1&amp;nbsp;}),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;signature:&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hash:&amp;nbsp;Binary.createFromBase64(&amp;#39;AAAAAAAAAAAAAAAAAAAAAAAAAAA=&amp;#39;,&amp;nbsp;0),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;keyId:&amp;nbsp;Long(&amp;#39;0&amp;#39;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;},
&amp;nbsp;&amp;nbsp;operationTime:&amp;nbsp;Timestamp({&amp;nbsp;t:&amp;nbsp;1741414278,&amp;nbsp;i:&amp;nbsp;1&amp;nbsp;})
}&lt;/pre&gt;&lt;p style=&quot;text-wrap-mode: wrap;&quot;&gt;五、修改配置方法，先查出cfg，然后类似js语法，对members进行修改，然后rs.reconfig(cfg)，同时关注rs.add，rs.addArb用法&lt;/p&gt;&lt;pre class=&quot;prism-highlight prism-language-bash&quot;&gt;rs0&amp;nbsp;[direct:&amp;nbsp;primary]&amp;nbsp;test&amp;gt;&amp;nbsp;var&amp;nbsp;cfg&amp;nbsp;=&amp;nbsp;rs.conf();

rs0&amp;nbsp;[direct:&amp;nbsp;primary]&amp;nbsp;test&amp;gt;&amp;nbsp;cfg
{
&amp;nbsp;&amp;nbsp;_id:&amp;nbsp;&amp;#39;rs0&amp;#39;,
&amp;nbsp;&amp;nbsp;version:&amp;nbsp;3,
&amp;nbsp;&amp;nbsp;term:&amp;nbsp;2,
&amp;nbsp;&amp;nbsp;members:&amp;nbsp;[
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_id:&amp;nbsp;0,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;host:&amp;nbsp;&amp;#39;172.18.0.1:27070&amp;#39;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;arbiterOnly:&amp;nbsp;false,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buildIndexes:&amp;nbsp;true,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hidden:&amp;nbsp;false,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;priority:&amp;nbsp;1,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tags:&amp;nbsp;{},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;secondaryDelaySecs:&amp;nbsp;Long(&amp;#39;0&amp;#39;),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;votes:&amp;nbsp;1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_id:&amp;nbsp;1,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;host:&amp;nbsp;&amp;#39;172.18.0.2:27017&amp;#39;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;arbiterOnly:&amp;nbsp;false,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buildIndexes:&amp;nbsp;true,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hidden:&amp;nbsp;false,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;priority:&amp;nbsp;1,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tags:&amp;nbsp;{},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;secondaryDelaySecs:&amp;nbsp;Long(&amp;#39;0&amp;#39;),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;votes:&amp;nbsp;1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_id:&amp;nbsp;2,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;host:&amp;nbsp;&amp;#39;172.18.0.3:27017&amp;#39;,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;arbiterOnly:&amp;nbsp;false,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buildIndexes:&amp;nbsp;true,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hidden:&amp;nbsp;false,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;priority:&amp;nbsp;1,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tags:&amp;nbsp;{},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;secondaryDelaySecs:&amp;nbsp;Long(&amp;#39;0&amp;#39;),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;votes:&amp;nbsp;1
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;],
&amp;nbsp;&amp;nbsp;protocolVersion:&amp;nbsp;Long(&amp;#39;1&amp;#39;),
&amp;nbsp;&amp;nbsp;writeConcernMajorityJournalDefault:&amp;nbsp;true,
&amp;nbsp;&amp;nbsp;settings:&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;chainingAllowed:&amp;nbsp;true,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;heartbeatIntervalMillis:&amp;nbsp;2000,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;heartbeatTimeoutSecs:&amp;nbsp;10,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;electionTimeoutMillis:&amp;nbsp;10000,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;catchUpTimeoutMillis:&amp;nbsp;-1,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;catchUpTakeoverDelayMillis:&amp;nbsp;30000,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;getLastErrorModes:&amp;nbsp;{},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;getLastErrorDefaults:&amp;nbsp;{&amp;nbsp;w:&amp;nbsp;1,&amp;nbsp;wtimeout:&amp;nbsp;0&amp;nbsp;},
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;replicaSetId:&amp;nbsp;ObjectId(&amp;#39;67cbd7ee890e374fac85a194&amp;#39;)
&amp;nbsp;&amp;nbsp;}
}
rs0&amp;nbsp;[direct:&amp;nbsp;primary]&amp;nbsp;test&amp;gt;&amp;nbsp;cfg.members.push({&amp;quot;_id&amp;quot;:3,&amp;quot;host&amp;quot;:&amp;quot;172.18.0.4:27017&amp;quot;,&amp;quot;arbiterOnly&amp;quot;:true})

rs0&amp;nbsp;[direct:&amp;nbsp;primary]&amp;nbsp;test&amp;gt;&amp;nbsp;rs.reconfig(cfg);

#或者直接对cfg.members重新赋值，最后在rs.reconfig(cfg)&lt;/pre&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Wed, 13 Aug 2025 00:33:50 +0800</pubDate></item><item><title>通过云主机SSH 反向端口转发访问无公网ip电脑的服务</title><link>https://sysplus.top/?id=4</link><description>&lt;h1&gt;
    利用 SSH 反向端口转发：轻松实现本地服务远程访问
&lt;/h1&gt;
&lt;div class=&quot;auto-hide-last-sibling-br paragraph-JOTKXA paragraph-element br-paragraph-space&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; line-height: 28px; font-size: 16px; overflow-anchor: auto; font-family: Inter, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;SF Pro SC&amp;quot;, &amp;quot;SF Pro Display&amp;quot;, &amp;quot;SF Pro Icons&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; text-wrap-mode: wrap; background-color: rgb(255, 255, 255); color: rgba(0, 0, 0, 0.85) !important;&quot;&gt;
    在日常开发或服务器管理中，我们经常需要将本地服务暴露给外部网络访问，比如让客户临时访问你的本地开发环境，或者在没有公网 IP 的情况下让远程服务器访问内网服务。这时，SSH 反向端口转发就是一个简单高效的解决方案。本文将以实际命令为例，详细讲解其原理与应用。
&lt;/div&gt;
&lt;h2 class=&quot;header-vfC6AV auto-hide-last-sibling-br&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin-top: 40px; margin-right: 0px; margin-left: 0px; padding: 0px 0px 0.3em; font-size: 20px; line-height: 32px; overflow-anchor: auto; font-family: Inter, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;SF Pro SC&amp;quot;, &amp;quot;SF Pro Display&amp;quot;, &amp;quot;SF Pro Icons&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; text-wrap-mode: wrap; background-color: rgb(255, 255, 255); margin-bottom: 12px !important;&quot;&gt;
    什么是 SSH 反向端口转发？
&lt;/h2&gt;
&lt;div class=&quot;auto-hide-last-sibling-br paragraph-JOTKXA paragraph-element br-paragraph-space&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; line-height: 28px; font-size: 16px; overflow-anchor: auto; font-family: Inter, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;SF Pro SC&amp;quot;, &amp;quot;SF Pro Display&amp;quot;, &amp;quot;SF Pro Icons&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; text-wrap-mode: wrap; background-color: rgb(255, 255, 255); color: rgba(0, 0, 0, 0.85) !important;&quot;&gt;
    SSH 端口转发分为&lt;span style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; font-weight: 600; line-height: 28px; overflow-anchor: auto; color: #000000 !important;&quot;&gt;本地端口转发&lt;/span&gt;和&lt;span style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; font-weight: 600; line-height: 28px; overflow-anchor: auto; color: #000000 !important;&quot;&gt;反向端口转发&lt;/span&gt;：
&lt;/div&gt;
&lt;p&gt;
    &lt;br class=&quot;container-utlnW2 wrapper-d0Cc1k undefined&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 1em; padding: 0px; content: &amp;quot;&amp;quot;; display: block; font-size: 20px; overflow-anchor: auto; font-family: Inter, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;SF Pro SC&amp;quot;, &amp;quot;SF Pro Display&amp;quot;, &amp;quot;SF Pro Icons&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; text-wrap-mode: wrap; background-color: rgb(255, 255, 255);&quot;/&gt;
&lt;/p&gt;
&lt;ul class=&quot;auto-hide-last-sibling-br list-paddingleft-2&quot; style=&quot;list-style-type: none;&quot;&gt;
    &lt;li&gt;
        &lt;p&gt;
            本地端口转发：将远程服务映射到本地端口（如访问&amp;nbsp;&lt;code style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-size: 14px; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0.06); border-radius: 4px; color: rgb(0, 0, 0); overflow-anchor: auto;&quot;&gt;localhost:8080&lt;/code&gt;&amp;nbsp;相当于访问远程服务器的 80 端口）。
        &lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;p&gt;
            反向端口转发：将本地服务映射到远程服务器端口（如让远程服务器的 8888 端口指向你的本地 2202 端口）。
        &lt;/p&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
    &lt;br class=&quot;container-utlnW2 wrapper-d0Cc1k undefined&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 1em; padding: 0px; content: &amp;quot;&amp;quot;; display: block; font-size: 20px; overflow-anchor: auto; font-family: Inter, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;SF Pro SC&amp;quot;, &amp;quot;SF Pro Display&amp;quot;, &amp;quot;SF Pro Icons&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; text-wrap-mode: wrap; background-color: rgb(255, 255, 255);&quot;/&gt;
&lt;/p&gt;
&lt;div class=&quot;auto-hide-last-sibling-br paragraph-JOTKXA paragraph-element br-paragraph-space&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; line-height: 28px; font-size: 16px; overflow-anchor: auto; font-family: Inter, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;SF Pro SC&amp;quot;, &amp;quot;SF Pro Display&amp;quot;, &amp;quot;SF Pro Icons&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; text-wrap-mode: wrap; background-color: rgb(255, 255, 255); color: rgba(0, 0, 0, 0.85) !important;&quot;&gt;
    简单来说，反向端口转发能让&lt;span style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; font-weight: 600; line-height: 28px; overflow-anchor: auto; color: #000000 !important;&quot;&gt;外部网络通过远程服务器&lt;/span&gt;访问你本地的服务，这在本地设备没有公网 IP 时非常有用。
&lt;/div&gt;
&lt;h2 class=&quot;header-vfC6AV auto-hide-last-sibling-br&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin-top: 40px; margin-right: 0px; margin-left: 0px; padding: 0px 0px 0.3em; font-size: 20px; line-height: 32px; overflow-anchor: auto; font-family: Inter, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;SF Pro SC&amp;quot;, &amp;quot;SF Pro Display&amp;quot;, &amp;quot;SF Pro Icons&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; text-wrap-mode: wrap; background-color: rgb(255, 255, 255); margin-bottom: 12px !important;&quot;&gt;
    实战命令解析：一行代码实现反向转发
&lt;/h2&gt;
&lt;div class=&quot;auto-hide-last-sibling-br paragraph-JOTKXA paragraph-element br-paragraph-space&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; line-height: 28px; font-size: 16px; overflow-anchor: auto; font-family: Inter, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;SF Pro SC&amp;quot;, &amp;quot;SF Pro Display&amp;quot;, &amp;quot;SF Pro Icons&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; text-wrap-mode: wrap; background-color: rgb(255, 255, 255); color: rgba(0, 0, 0, 0.85) !important;&quot;&gt;
    我们以这个命令为例，逐步拆解其作用：
&lt;/div&gt;
&lt;p&gt;
    &lt;br class=&quot;container-utlnW2 wrapper-d0Cc1k undefined&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 1em; padding: 0px; content: &amp;quot;&amp;quot;; display: block; font-size: 20px; overflow-anchor: auto; font-family: Inter, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;SF Pro SC&amp;quot;, &amp;quot;SF Pro Display&amp;quot;, &amp;quot;SF Pro Icons&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; text-wrap-mode: wrap; background-color: rgb(255, 255, 255);&quot;/&gt;
&lt;/p&gt;
&lt;div class=&quot;relative w-fit custom-code-block-canvas-wrapper w-full&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; position: relative; width: 793px; overflow-anchor: auto; font-family: Inter, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;SF Pro SC&amp;quot;, &amp;quot;SF Pro Display&amp;quot;, &amp;quot;SF Pro Icons&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 16px; text-wrap-mode: wrap; background-color: rgb(255, 255, 255);&quot;&gt;
    &lt;div class=&quot;code-block-element-YDlfvc light custom-code-block-container--bash hide-indicator disable-theme-style custom-code-block-container&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 8px 0px 0px; padding: 0px; display: flex; flex-direction: column; position: relative; --chat-md-codeblock-bg-color: #f9fafb; --chat-md-codeblock-header-bg-color: #f3f4f6; --code-area-radius: 6px; --code-area-radius-inner: calc(6px - 1px); --code-area-bg-color: #f9fafb; --code-header-bg-color: #f3f4f6; --code-mask-bg-color: linear-gradient(180deg,rgba(249,250,251,0),#f9fafb); --code-header-icon-color: rgba(0,0,0,.5); --code-header-text-color: rgba(0,0,0,.85); --code-header-icon-bg-color: rgba(0,0,0,.06); --code-block-code-color: #000000d9; --code-block-std-bg-color: #f3f4f6; --code-block-std-err-color: #d60000; overflow-anchor: auto;&quot;&gt;
        &lt;div class=&quot;code-area-tZtDgG code-area&quot; dir=&quot;ltr&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 250, 251); border-radius: 6px; display: flex; flex-direction: column; height: fit-content; width: 793px; overflow-anchor: auto;&quot;&gt;
            &lt;div class=&quot;header-wrapper-UnnlXS&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto; background-color: rgb(255, 255, 255); position: sticky; top: 0px;&quot;&gt;
                &lt;div class=&quot;header-cGu84a&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border-width: 1px 1px 0px; border-style: solid; border-color: rgba(0, 0, 0, 0.08); border-image: none 100% / 1 / 0 stretch; margin: 0px; padding: 6px 9px 6px 6px; align-items: center; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(243, 244, 246); display: flex; flex-direction: row; flex-shrink: 0; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; height: 32px; justify-content: space-between; border-radius: 5px 5px 0px 0px; overflow-anchor: auto;&quot;&gt;
                    &lt;div class=&quot;title-XQhI4x clickable-eGISjP&quot; tabindex=&quot;0&quot; aria-describedby=&quot;tenra3a&quot; data-popupid=&quot;tenra3a&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px 4px 0px 10px; overflow-anchor: auto; align-items: center; border-radius: 4px; color: rgba(0, 0, 0, 0.5); display: flex; flex-direction: row; gap: 3px; cursor: pointer;&quot;&gt;
                        &lt;div class=&quot;text-jgT4jF&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto; align-items: center; color: rgba(0, 0, 0, 0.85); display: flex; font-family: &amp;quot;PingFang SC&amp;quot;; font-size: 14px; gap: 3px; line-height: 22px; overflow: hidden; text-overflow: ellipsis; text-wrap-mode: nowrap;&quot;&gt;
                            bash
                        &lt;/div&gt;&lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-12&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                            &lt;path fill=&quot;currentColor&quot; d=&quot;M21.707 17.293a1 1 0 0 1-1.414 0L12 9l-8.293 8.293a1 1 0 0 1-1.414-1.414l8.293-8.293a2 2 0 0 1 2.828 0l8.293 8.293a1 1 0 0 1 0 1.414&quot;&gt;&lt;/path&gt;
                        &lt;/svg&gt;&lt;/span&gt;
                    &lt;/div&gt;&lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-14&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; font-size: 14px; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                        &lt;path fill=&quot;currentColor&quot; fill-rule=&quot;evenodd&quot; d=&quot;M21 3.5V17a2 2 0 0 1-2 2h-2v-2h2V3.5H9v2h5.857c1.184 0 2.143.895 2.143 2v13c0 1.105-.96 2-2.143 2H5.143C3.959 22.5 3 21.605 3 20.5v-13c0-1.105.96-2 2.143-2H7v-2a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2m-6.143 4H5.143v13h9.714z&quot; clip-rule=&quot;evenodd&quot;&gt;&lt;/path&gt;
                    &lt;/svg&gt;&lt;/span&gt;&lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-14&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; font-size: 14px; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                        &lt;path fill=&quot;currentColor&quot; fill-rule=&quot;evenodd&quot; d=&quot;M4 4a1 1 0 0 1 1 1v3a3 3 0 0 0 3 3h11.086l-5.293-5.293a1 1 0 0 1 1.414-1.414l7 7a1 1 0 0 1 0 1.414l-7 7a1 1 0 0 1-1.414-1.414L19.086 13H8a5 5 0 0 1-5-5V5a1 1 0 0 1 1-1&quot; clip-rule=&quot;evenodd&quot;&gt;&lt;/path&gt;
                    &lt;/svg&gt;&lt;/span&gt;&lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-14&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; font-size: 14px; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                        &lt;path fill=&quot;currentColor&quot; fill-rule=&quot;evenodd&quot; d=&quot;M4.797 16.856a8.28 8.28 0 0 0 6.27 2.87h.008A8.28 8.28 0 0 0 14.372 3.84a11.6 11.6 0 0 1-1.658 7.714 11.62 11.62 0 0 1-7.917 5.303M13.415 1.43a10.28 10.28 0 0 1-2.348 20.296 10.28 10.28 0 0 1-8.883-5.103c-.397-.74.155-1.605.912-1.609a9.617 9.617 0 0 0 9.011-12.258 1.093 1.093 0 0 1 1.308-1.326&quot; clip-rule=&quot;evenodd&quot;&gt;&lt;/path&gt;
                    &lt;/svg&gt;&lt;/span&gt;&lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-14&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; font-size: 14px; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                        &lt;path fill=&quot;currentColor&quot; d=&quot;M22 3v7a1 1 0 1 1-2 0V4h-6a1 1 0 1 1 0-2h7a1 1 0 0 1 1 1M11.005 21a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1v-7a1 1 0 0 1 2.002 0v6h6.003a1 1 0 0 1 1 1&quot;&gt;&lt;/path&gt;
                    &lt;/svg&gt;&lt;/span&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;content-EGRozu code-content light-scrollbar-TbsSwi&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border-width: 0px 1px 1px; border-style: solid; border-color: rgba(0, 0, 0, 0.08); border-image: initial; margin: 0px; padding: 12px 16px 16px; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; flex-shrink: 0; height: fit-content; overflow: overlay; overflow-anchor: auto; border-radius: 0px 0px 5px 5px;&quot;&gt;
                &lt;pre class=&quot;container-_HmLba language-bash&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin-top: 0px; margin-bottom: 0px; padding: 0px; font-family: ui-monospace, SFMono-Regular, &amp;quot;SF Mono&amp;quot;, Menlo, Consolas, &amp;quot;Liberation Mono&amp;quot;, monospace; overflow-wrap: normal; font-feature-settings: normal; font-size: 13.6px; font-variation-settings: normal; --code-text_v3: #000000d9; --code-doc_v3: #00000073; --code-Link_v3: #2f74ff; --code-number_v3: #e54595; --code-keycontrol_v3: #9952e1; --code-function_v3: #ff5d4d; --code-variable_v3: #000000d9; --code-parameter_v3: #4da621; --code-attributes_v3: #c70; --code-selection-bg-color: #a9d6ff; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); word-break: normal; word-spacing: normal; hyphens: none; line-height: 1.5; tab-size: 4; overflow: auto; border-radius: 6px; overflow-anchor: auto; width: fit-content;&quot;&gt;ssh -R 0.0.0.0:8888:localhost:2202 root@8.9.10.11 -p 22 -N -f&lt;/pre&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;h3 class=&quot;header-vfC6AV auto-hide-last-sibling-br&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin-top: 28px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; font-size: 18px; line-height: 28px; overflow-anchor: auto; font-family: Inter, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;SF Pro SC&amp;quot;, &amp;quot;SF Pro Display&amp;quot;, &amp;quot;SF Pro Icons&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; text-wrap-mode: wrap; background-color: rgb(255, 255, 255); margin-bottom: 12px !important; padding-bottom: 0px !important;&quot;&gt;
    各参数含义详解：
&lt;/h3&gt;
&lt;ol class=&quot;auto-hide-last-sibling-br list-paddingleft-2&quot; style=&quot;list-style-type: none;&quot;&gt;
    &lt;li&gt;
        &lt;div class=&quot;auto-hide-last-sibling-br paragraph-JOTKXA paragraph-element br-paragraph-space&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; line-height: 28px; overflow-anchor: auto;&quot;&gt;
            &lt;span style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; font-weight: 600; line-height: 28px; overflow-anchor: auto; color: #000000 !important;&quot;&gt;&lt;code style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-size: 14px; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0.06); border-radius: 4px; overflow-anchor: auto;&quot;&gt;-R&lt;/code&gt;&lt;/span&gt;：表示启用反向端口转发，格式为&amp;nbsp;&lt;code style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0.06); border-radius: 4px; overflow-anchor: auto; line-height: 28px;&quot;&gt;远程地址:远程端口:本地地址:本地端口&lt;/code&gt;。
        &lt;/div&gt;
    &lt;/li&gt;
    &lt;ul class=&quot;auto-hide-last-sibling-br list-paddingleft-2&quot; style=&quot;list-style-type: none;&quot;&gt;
        &lt;li&gt;
            &lt;p&gt;
                &lt;code style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-size: 14px; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0.06); border-radius: 4px; color: rgb(0, 0, 0); overflow-anchor: auto;&quot;&gt;0.0.0.0:8888&lt;/code&gt;：指定远程服务器的 8888 端口作为入口，&lt;code style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-size: 14px; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0.06); border-radius: 4px; color: rgb(0, 0, 0); overflow-anchor: auto;&quot;&gt;0.0.0.0&lt;/code&gt;&amp;nbsp;表示允许远程服务器的所有网络接口访问（包括公网 IP）。
            &lt;/p&gt;
        &lt;/li&gt;
        &lt;li&gt;
            &lt;p&gt;
                &lt;code style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-size: 14px; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0.06); border-radius: 4px; color: rgb(0, 0, 0); overflow-anchor: auto;&quot;&gt;localhost:2202&lt;/code&gt;：表示将远程 8888 端口的请求转发到本地的 22 端口（本地服务运行的端口）。
            &lt;/p&gt;
        &lt;/li&gt;
    &lt;/ul&gt;
    &lt;li&gt;
        &lt;div class=&quot;auto-hide-last-sibling-br paragraph-JOTKXA paragraph-element br-paragraph-space&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; line-height: 28px; overflow-anchor: auto;&quot;&gt;
            &lt;span style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; font-weight: 600; line-height: 28px; overflow-anchor: auto; color: #000000 !important;&quot;&gt;&lt;code style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-size: 14px; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0.06); border-radius: 4px; overflow-anchor: auto;&quot;&gt;root@8.9.10.11&lt;/code&gt;&lt;/span&gt;：远程服务器的登录信息，&lt;code style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0.06); border-radius: 4px; overflow-anchor: auto; line-height: 28px;&quot;&gt;root&lt;/code&gt;&amp;nbsp;是用户名，&lt;code style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0.06); border-radius: 4px; overflow-anchor: auto; line-height: 28px;&quot;&gt;8.9.10.11&lt;/code&gt;&amp;nbsp;是远程服务器的公网 IP。
        &lt;/div&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;div class=&quot;auto-hide-last-sibling-br paragraph-JOTKXA paragraph-element br-paragraph-space&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; line-height: 28px; overflow-anchor: auto;&quot;&gt;
            &lt;span style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; font-weight: 600; line-height: 28px; overflow-anchor: auto; color: #000000 !important;&quot;&gt;&lt;code style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-size: 14px; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0.06); border-radius: 4px; overflow-anchor: auto;&quot;&gt;-p 22&lt;/code&gt;&lt;/span&gt;：指定连接远程服务器的 SSH 端口（默认是 22，这里是自定义端口）。
        &lt;/div&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;div class=&quot;auto-hide-last-sibling-br paragraph-JOTKXA paragraph-element br-paragraph-space&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; line-height: 28px; overflow-anchor: auto;&quot;&gt;
            &lt;span style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; font-weight: 600; line-height: 28px; overflow-anchor: auto; color: #000000 !important;&quot;&gt;&lt;code style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-size: 14px; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0.06); border-radius: 4px; overflow-anchor: auto;&quot;&gt;-N&lt;/code&gt;&lt;/span&gt;：表示不执行远程命令，仅用于端口转发（纯转发模式，不登录远程 shell）。
        &lt;/div&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;div class=&quot;auto-hide-last-sibling-br paragraph-JOTKXA paragraph-element br-paragraph-space&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; line-height: 28px; overflow-anchor: auto;&quot;&gt;
            &lt;span style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; font-weight: 600; line-height: 28px; overflow-anchor: auto; color: #000000 !important;&quot;&gt;&lt;code style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-size: 14px; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0.06); border-radius: 4px; overflow-anchor: auto;&quot;&gt;-f&lt;/code&gt;&lt;/span&gt;：表示在后台运行 SSH 进程，不占用当前终端。
        &lt;/div&gt;
    &lt;/li&gt;
&lt;/ol&gt;
&lt;h2 class=&quot;header-vfC6AV auto-hide-last-sibling-br&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin-top: 40px; margin-right: 0px; margin-left: 0px; padding: 0px 0px 0.3em; font-size: 20px; line-height: 32px; overflow-anchor: auto; font-family: Inter, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;SF Pro SC&amp;quot;, &amp;quot;SF Pro Display&amp;quot;, &amp;quot;SF Pro Icons&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; text-wrap-mode: wrap; background-color: rgb(255, 255, 255); margin-bottom: 12px !important;&quot;&gt;
    执行效果：远程访问本地服务
&lt;/h2&gt;
&lt;div class=&quot;auto-hide-last-sibling-br paragraph-JOTKXA paragraph-element br-paragraph-space&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; line-height: 28px; font-size: 16px; overflow-anchor: auto; font-family: Inter, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;SF Pro SC&amp;quot;, &amp;quot;SF Pro Display&amp;quot;, &amp;quot;SF Pro Icons&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; text-wrap-mode: wrap; background-color: rgb(255, 255, 255); color: rgba(0, 0, 0, 0.85) !important;&quot;&gt;
    命令执行成功后，会在远程服务器上建立一个 “通道”：
&lt;/div&gt;
&lt;p&gt;
    &lt;br class=&quot;container-utlnW2 wrapper-d0Cc1k undefined&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 1em; padding: 0px; content: &amp;quot;&amp;quot;; display: block; font-size: 20px; overflow-anchor: auto; font-family: Inter, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;SF Pro SC&amp;quot;, &amp;quot;SF Pro Display&amp;quot;, &amp;quot;SF Pro Icons&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; text-wrap-mode: wrap; background-color: rgb(255, 255, 255);&quot;/&gt;
&lt;/p&gt;
&lt;ul class=&quot;auto-hide-last-sibling-br list-paddingleft-2&quot; style=&quot;list-style-type: none;&quot;&gt;
    &lt;li&gt;
        &lt;p&gt;
            当有人访问远程服务器的&amp;nbsp;&lt;code style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-size: 14px; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0.06); border-radius: 4px; color: rgb(0, 0, 0); overflow-anchor: auto;&quot;&gt;8.9.10.11:8888&lt;/code&gt;&amp;nbsp;时，请求会被自动转发到你的本地&amp;nbsp;&lt;code style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-size: 14px; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0.06); border-radius: 4px; color: rgb(0, 0, 0); overflow-anchor: auto;&quot;&gt;localhost:22&lt;/code&gt;。
        &lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;p&gt;
            例如：如果你的本地 2202 端口运行着一个 Web 服务，那么通过&amp;nbsp;&lt;code style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-size: 14px; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0.06); border-radius: 4px; color: rgb(0, 0, 0); overflow-anchor: auto;&quot;&gt;http://8.9.10.11:8888&lt;/code&gt;&amp;nbsp;就能访问这个本地服务。
        &lt;/p&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class=&quot;header-vfC6AV auto-hide-last-sibling-br&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin-top: 40px; margin-right: 0px; margin-left: 0px; padding: 0px 0px 0.3em; font-size: 20px; line-height: 32px; overflow-anchor: auto; font-family: Inter, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;SF Pro SC&amp;quot;, &amp;quot;SF Pro Display&amp;quot;, &amp;quot;SF Pro Icons&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; text-wrap-mode: wrap; background-color: rgb(255, 255, 255); margin-bottom: 12px !important;&quot;&gt;
    操作步骤与注意事项
&lt;/h2&gt;
&lt;h3 class=&quot;header-vfC6AV auto-hide-last-sibling-br&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin-top: 28px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; font-size: 18px; line-height: 28px; overflow-anchor: auto; font-family: Inter, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;SF Pro SC&amp;quot;, &amp;quot;SF Pro Display&amp;quot;, &amp;quot;SF Pro Icons&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; text-wrap-mode: wrap; background-color: rgb(255, 255, 255); margin-bottom: 12px !important; padding-bottom: 0px !important;&quot;&gt;
    1. 前提条件
&lt;/h3&gt;
&lt;ul class=&quot;auto-hide-last-sibling-br list-paddingleft-2&quot; style=&quot;list-style-type: none;&quot;&gt;
    &lt;li&gt;
        &lt;p&gt;
            本地设备已安装 SSH 客户端（Linux/macOS 内置，Windows 可使用 PowerShell 或 PuTTY）。
        &lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;p&gt;
            拥有一台带公网 IP 的远程服务器（如 VPS），并能通过 SSH 登录（需知道 IP、端口、用户名和密码 / 密钥）。
        &lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;p&gt;
            本地 22 端口已运行服务（如 Web 服务器、数据库等）。
        &lt;/p&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class=&quot;header-vfC6AV auto-hide-last-sibling-br&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin-top: 28px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; font-size: 18px; line-height: 28px; overflow-anchor: auto; font-family: Inter, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;SF Pro SC&amp;quot;, &amp;quot;SF Pro Display&amp;quot;, &amp;quot;SF Pro Icons&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; text-wrap-mode: wrap; background-color: rgb(255, 255, 255); margin-bottom: 12px !important; padding-bottom: 0px !important;&quot;&gt;
    2. 执行命令并验证
&lt;/h3&gt;
&lt;ol class=&quot;auto-hide-last-sibling-br list-paddingleft-2&quot; style=&quot;list-style-type: none;&quot;&gt;
    &lt;li&gt;
        &lt;div class=&quot;auto-hide-last-sibling-br paragraph-JOTKXA paragraph-element br-paragraph-space&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; line-height: 28px; overflow-anchor: auto;&quot;&gt;
            在本地终端执行上述命令，首次连接需确认远程服务器指纹（输入&amp;nbsp;&lt;code style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0.06); border-radius: 4px; overflow-anchor: auto; line-height: 28px;&quot;&gt;yes&lt;/code&gt;），并输入远程服务器的登录密码。
        &lt;/div&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;div class=&quot;auto-hide-last-sibling-br paragraph-JOTKXA paragraph-element br-paragraph-space&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; line-height: 28px; overflow-anchor: auto;&quot;&gt;
            验证转发是否生效：
        &lt;/div&gt;
    &lt;/li&gt;
    &lt;ul class=&quot;auto-hide-last-sibling-br list-paddingleft-2&quot; style=&quot;list-style-type: none;&quot;&gt;
        &lt;li&gt;
            &lt;p&gt;
                登录远程服务器，执行&amp;nbsp;&lt;code style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-size: 14px; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0.06); border-radius: 4px; color: rgb(0, 0, 0); overflow-anchor: auto;&quot;&gt;netstat -tuln | grep 8888&lt;/code&gt;，若看到&amp;nbsp;&lt;code style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-size: 14px; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0.06); border-radius: 4px; color: rgb(0, 0, 0); overflow-anchor: auto;&quot;&gt;0.0.0.0:8888&lt;/code&gt;&amp;nbsp;处于监听状态，说明转发成功。
            &lt;/p&gt;
        &lt;/li&gt;
        &lt;li&gt;
            &lt;p&gt;
                从外部设备访问&amp;nbsp;&lt;code style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-size: 14px; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0.06); border-radius: 4px; color: rgb(0, 0, 0); overflow-anchor: auto;&quot;&gt;远程服务器IP:8888&lt;/code&gt;，测试是否能连接到本地服务。
            &lt;/p&gt;
        &lt;/li&gt;
    &lt;/ul&gt;
&lt;/ol&gt;
&lt;h3 class=&quot;header-vfC6AV auto-hide-last-sibling-br&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin-top: 28px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; font-size: 18px; line-height: 28px; overflow-anchor: auto; font-family: Inter, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;SF Pro SC&amp;quot;, &amp;quot;SF Pro Display&amp;quot;, &amp;quot;SF Pro Icons&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; text-wrap-mode: wrap; background-color: rgb(255, 255, 255); margin-bottom: 12px !important; padding-bottom: 0px !important;&quot;&gt;
    3. 常见问题与解决
&lt;/h3&gt;
&lt;ul class=&quot;auto-hide-last-sibling-br list-paddingleft-2&quot; style=&quot;list-style-type: none;&quot;&gt;
    &lt;li&gt;
        &lt;p&gt;
            &lt;span style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; font-weight: 600; line-height: 28px; overflow-anchor: auto; color: #000000 !important;&quot;&gt;“端口被占用” 错误&lt;/span&gt;：远程服务器 8888 端口已被其他程序使用，可更换为其他端口（如 8080）。
        &lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;p&gt;
            &lt;span style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; font-weight: 600; line-height: 28px; overflow-anchor: auto; color: #000000 !important;&quot;&gt;无法从外部访问&lt;/span&gt;：检查远程服务器防火墙是否开放 8888 端口，或 SSH 服务器配置是否允许反向转发。
        &lt;/p&gt;
    &lt;/li&gt;
    &lt;ul class=&quot;auto-hide-last-sibling-br list-paddingleft-2&quot; style=&quot;list-style-type: circle;&quot;&gt;
        &lt;li&gt;
            &lt;p&gt;
                需在远程服务器的&amp;nbsp;&lt;code style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-size: 14px; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0.06); border-radius: 4px; color: rgb(0, 0, 0); overflow-anchor: auto;&quot;&gt;/etc/ssh/sshd_config&lt;/code&gt;&amp;nbsp;中确保&amp;nbsp;&lt;code style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-size: 14px; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0.06); border-radius: 4px; color: rgb(0, 0, 0); overflow-anchor: auto;&quot;&gt;GatewayPorts yes&lt;/code&gt;（默认可能为&amp;nbsp;&lt;code style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-size: 14px; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0.06); border-radius: 4px; color: rgb(0, 0, 0); overflow-anchor: auto;&quot;&gt;no&lt;/code&gt;&amp;nbsp;或&amp;nbsp;&lt;code style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-size: 14px; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0.06); border-radius: 4px; color: rgb(0, 0, 0); overflow-anchor: auto;&quot;&gt;clientspecified&lt;/code&gt;），修改后重启&amp;nbsp;&lt;code style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-size: 14px; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0.06); border-radius: 4px; color: rgb(0, 0, 0); overflow-anchor: auto;&quot;&gt;sshd&lt;/code&gt;&amp;nbsp;服务。
            &lt;/p&gt;
        &lt;/li&gt;
    &lt;/ul&gt;
    &lt;li&gt;
        &lt;p&gt;
            &lt;span style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; font-weight: 600; line-height: 28px; overflow-anchor: auto; color: #000000 !important;&quot;&gt;连接断开&lt;/span&gt;：SSH 连接可能因超时断开，可配合&amp;nbsp;&lt;code style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-size: 14px; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0.06); border-radius: 4px; color: rgb(0, 0, 0); overflow-anchor: auto;&quot;&gt;autossh&lt;/code&gt;&amp;nbsp;工具实现自动重连（需额外安装）。
        &lt;/p&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class=&quot;header-vfC6AV auto-hide-last-sibling-br&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin-top: 28px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; font-size: 18px; line-height: 28px; overflow-anchor: auto; font-family: Inter, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;SF Pro SC&amp;quot;, &amp;quot;SF Pro Display&amp;quot;, &amp;quot;SF Pro Icons&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; text-wrap-mode: wrap; background-color: rgb(255, 255, 255); margin-bottom: 12px !important; padding-bottom: 0px !important;&quot;&gt;
    4. 安全最佳实践
&lt;/h3&gt;
&lt;ul class=&quot;auto-hide-last-sibling-br list-paddingleft-2&quot; style=&quot;list-style-type: none;&quot;&gt;
    &lt;li&gt;
        &lt;p&gt;
            &lt;span style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; font-weight: 600; line-height: 28px; overflow-anchor: auto; color: #000000 !important;&quot;&gt;避免明文密码&lt;/span&gt;：命令中直接输入密码会暴露在历史记录中，建议配置 SSH 密钥登录（免密码且更安全）：
        &lt;/p&gt;
        &lt;div class=&quot;relative w-fit custom-code-block-canvas-wrapper w-full&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; position: relative; width: 769px; overflow-anchor: auto;&quot;&gt;
            &lt;div class=&quot;code-block-element-YDlfvc light custom-code-block-container--bash hide-indicator disable-theme-style custom-code-block-container&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 8px 0px 0px; padding: 0px; display: flex; flex-direction: column; position: relative; --chat-md-codeblock-bg-color: #f9fafb; --chat-md-codeblock-header-bg-color: #f3f4f6; --code-area-radius: 6px; --code-area-radius-inner: calc(6px - 1px); --code-area-bg-color: #f9fafb; --code-header-bg-color: #f3f4f6; --code-mask-bg-color: linear-gradient(180deg,rgba(249,250,251,0),#f9fafb); --code-header-icon-color: rgba(0,0,0,.5); --code-header-text-color: rgba(0,0,0,.85); --code-header-icon-bg-color: rgba(0,0,0,.06); --code-block-code-color: #000000d9; --code-block-std-bg-color: #f3f4f6; --code-block-std-err-color: #d60000; overflow-anchor: auto;&quot;&gt;
                &lt;div class=&quot;code-area-tZtDgG code-area&quot; dir=&quot;ltr&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(249, 250, 251); border-radius: 6px; display: flex; flex-direction: column; height: fit-content; width: 769px; overflow-anchor: auto;&quot;&gt;
                    &lt;div class=&quot;header-wrapper-UnnlXS&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto; background-color: rgb(255, 255, 255); position: sticky; top: 0px;&quot;&gt;
                        &lt;div class=&quot;header-cGu84a&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border-width: 1px 1px 0px; border-style: solid; border-color: rgba(0, 0, 0, 0.08); border-image: none 100% / 1 / 0 stretch; margin: 0px; padding: 6px 9px 6px 6px; align-items: center; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(243, 244, 246); display: flex; flex-direction: row; flex-shrink: 0; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; height: 32px; justify-content: space-between; border-radius: 5px 5px 0px 0px; overflow-anchor: auto;&quot;&gt;
                            &lt;div class=&quot;title-XQhI4x clickable-eGISjP&quot; tabindex=&quot;0&quot; aria-describedby=&quot;t36ip81&quot; data-popupid=&quot;t36ip81&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px 4px 0px 10px; overflow-anchor: auto; align-items: center; border-radius: 4px; color: rgba(0, 0, 0, 0.5); display: flex; flex-direction: row; gap: 3px; cursor: pointer;&quot;&gt;
                                &lt;div class=&quot;text-jgT4jF&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto; align-items: center; color: rgba(0, 0, 0, 0.85); display: flex; font-family: &amp;quot;PingFang SC&amp;quot;; font-size: 14px; gap: 3px; line-height: 22px; overflow: hidden; text-overflow: ellipsis; text-wrap-mode: nowrap;&quot;&gt;
                                    bash
                                &lt;/div&gt;&lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-12&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                                    &lt;path fill=&quot;currentColor&quot; d=&quot;M21.707 17.293a1 1 0 0 1-1.414 0L12 9l-8.293 8.293a1 1 0 0 1-1.414-1.414l8.293-8.293a2 2 0 0 1 2.828 0l8.293 8.293a1 1 0 0 1 0 1.414&quot;&gt;&lt;/path&gt;
                                &lt;/svg&gt;&lt;/span&gt;
                            &lt;/div&gt;&lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-14&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; font-size: 14px; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                                &lt;path fill=&quot;currentColor&quot; fill-rule=&quot;evenodd&quot; d=&quot;M21 3.5V17a2 2 0 0 1-2 2h-2v-2h2V3.5H9v2h5.857c1.184 0 2.143.895 2.143 2v13c0 1.105-.96 2-2.143 2H5.143C3.959 22.5 3 21.605 3 20.5v-13c0-1.105.96-2 2.143-2H7v-2a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2m-6.143 4H5.143v13h9.714z&quot; clip-rule=&quot;evenodd&quot;&gt;&lt;/path&gt;
                            &lt;/svg&gt;&lt;/span&gt;&lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-14&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; font-size: 14px; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                                &lt;path fill=&quot;currentColor&quot; fill-rule=&quot;evenodd&quot; d=&quot;M4 4a1 1 0 0 1 1 1v3a3 3 0 0 0 3 3h11.086l-5.293-5.293a1 1 0 0 1 1.414-1.414l7 7a1 1 0 0 1 0 1.414l-7 7a1 1 0 0 1-1.414-1.414L19.086 13H8a5 5 0 0 1-5-5V5a1 1 0 0 1 1-1&quot; clip-rule=&quot;evenodd&quot;&gt;&lt;/path&gt;
                            &lt;/svg&gt;&lt;/span&gt;&lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-14&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; font-size: 14px; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                                &lt;path fill=&quot;currentColor&quot; fill-rule=&quot;evenodd&quot; d=&quot;M4.797 16.856a8.28 8.28 0 0 0 6.27 2.87h.008A8.28 8.28 0 0 0 14.372 3.84a11.6 11.6 0 0 1-1.658 7.714 11.62 11.62 0 0 1-7.917 5.303M13.415 1.43a10.28 10.28 0 0 1-2.348 20.296 10.28 10.28 0 0 1-8.883-5.103c-.397-.74.155-1.605.912-1.609a9.617 9.617 0 0 0 9.011-12.258 1.093 1.093 0 0 1 1.308-1.326&quot; clip-rule=&quot;evenodd&quot;&gt;&lt;/path&gt;
                            &lt;/svg&gt;&lt;/span&gt;&lt;span role=&quot;img&quot; class=&quot;semi-icon semi-icon-default text-14&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; display: inline-block; line-height: 0; text-align: center; text-rendering: optimizelegibility; fill: currentcolor; font-size: 14px; overflow-anchor: auto;&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1em&quot; height=&quot;1em&quot; fill=&quot;none&quot; viewbox=&quot;0 0 24 24&quot;&gt;
                                &lt;path fill=&quot;currentColor&quot; d=&quot;M22 3v7a1 1 0 1 1-2 0V4h-6a1 1 0 1 1 0-2h7a1 1 0 0 1 1 1M11.005 21a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1v-7a1 1 0 0 1 2.002 0v6h6.003a1 1 0 0 1 1 1&quot;&gt;&lt;/path&gt;
                            &lt;/svg&gt;&lt;/span&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;content-EGRozu code-content light-scrollbar-TbsSwi&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border-width: 0px 1px 1px; border-style: solid; border-color: rgba(0, 0, 0, 0.08); border-image: initial; margin: 0px; padding: 12px 16px 16px; background-image: none; background-position: 0% 0%; background-size: auto; background-repeat: repeat; background-attachment: scroll; background-origin: padding-box; background-clip: border-box; flex-shrink: 0; height: fit-content; overflow: overlay; overflow-anchor: auto; border-radius: 0px 0px 5px 5px;&quot;&gt;
                        &lt;pre class=&quot;container-_HmLba language-bash&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin-top: 0px; margin-bottom: 0px; padding: 0px; font-family: ui-monospace, SFMono-Regular, &amp;quot;SF Mono&amp;quot;, Menlo, Consolas, &amp;quot;Liberation Mono&amp;quot;, monospace; overflow-wrap: normal; font-feature-settings: normal; font-size: 13.6px; font-variation-settings: normal; --code-text_v3: #000000d9; --code-doc_v3: #00000073; --code-Link_v3: #2f74ff; --code-number_v3: #e54595; --code-keycontrol_v3: #9952e1; --code-function_v3: #ff5d4d; --code-variable_v3: #000000d9; --code-parameter_v3: #4da621; --code-attributes_v3: #c70; --code-selection-bg-color: #a9d6ff; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); color: rgb(0, 0, 0); word-break: normal; word-spacing: normal; hyphens: none; line-height: 1.5; tab-size: 4; overflow: auto; border-radius: 6px; overflow-anchor: auto; width: fit-content;&quot;&gt;# 本地生成密钥对（一路回车）ssh-keygen -t ed25519# 将公钥上传到远程服务器ssh-copy-id -p 2202 root@8.9.10.11&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;p&gt;
            &lt;br class=&quot;container-utlnW2 wrapper-d0Cc1k undefined&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; overflow-anchor: auto;&quot;/&gt;
        &lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;p&gt;
            &lt;span style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; font-weight: 600; line-height: 28px; overflow-anchor: auto; color: #000000 !important;&quot;&gt;限制访问来源&lt;/span&gt;：若无需公网访问，可将&amp;nbsp;&lt;code style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-size: 14px; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0.06); border-radius: 4px; color: rgb(0, 0, 0); overflow-anchor: auto;&quot;&gt;0.0.0.0&lt;/code&gt;&amp;nbsp;改为&amp;nbsp;&lt;code style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-size: 14px; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0.06); border-radius: 4px; color: rgb(0, 0, 0); overflow-anchor: auto;&quot;&gt;127.0.0.1&lt;/code&gt;，仅允许远程服务器本地访问转发端口。
        &lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;p&gt;
            &lt;span style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; font-weight: 600; line-height: 28px; overflow-anchor: auto; color: #000000 !important;&quot;&gt;及时关闭转发&lt;/span&gt;：用完后通过&amp;nbsp;&lt;code style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-size: 14px; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0.06); border-radius: 4px; color: rgb(0, 0, 0); overflow-anchor: auto;&quot;&gt;ps aux | grep ssh&lt;/code&gt;&amp;nbsp;找到进程 ID，用&amp;nbsp;&lt;code style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-size: 14px; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0.06); border-radius: 4px; color: rgb(0, 0, 0); overflow-anchor: auto;&quot;&gt;kill &amp;lt;PID&amp;gt;&lt;/code&gt;&amp;nbsp;关闭，避免安全隐患。
        &lt;/p&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class=&quot;header-vfC6AV auto-hide-last-sibling-br&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin-top: 40px; margin-right: 0px; margin-left: 0px; padding: 0px 0px 0.3em; font-size: 20px; line-height: 32px; overflow-anchor: auto; font-family: Inter, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;SF Pro SC&amp;quot;, &amp;quot;SF Pro Display&amp;quot;, &amp;quot;SF Pro Icons&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; text-wrap-mode: wrap; background-color: rgb(255, 255, 255); margin-bottom: 12px !important;&quot;&gt;
    适用场景
&lt;/h2&gt;
&lt;ol class=&quot;auto-hide-last-sibling-br list-paddingleft-2&quot; style=&quot;list-style-type: none;&quot;&gt;
    &lt;li&gt;
        &lt;p&gt;
            &lt;span style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; font-weight: 600; line-height: 28px; overflow-anchor: auto; color: #000000 !important;&quot;&gt;本地开发调试&lt;/span&gt;：通过公网访问你的本地开发环境，无需部署到服务器。
        &lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;p&gt;
            &lt;span style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; font-weight: 600; line-height: 28px; overflow-anchor: auto; color: #000000 !important;&quot;&gt;内网服务暴露&lt;/span&gt;：将内网设备（如树莓派、NAS）的服务通过远程服务器暴露到公网。
        &lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;p&gt;
            &lt;span style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: ; outline: none; border: 0px solid; margin: 0px; padding: 0px; font-weight: 600; line-height: 28px; overflow-anchor: auto; color: #000000 !important;&quot;&gt;临时文件传输&lt;/span&gt;：通过反向转发临时开放本地 FTP/SFTP 服务，方便远程传输文件。
        &lt;/p&gt;
    &lt;/li&gt;
&lt;/ol&gt;
&lt;h2 class=&quot;header-vfC6AV auto-hide-last-sibling-br&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin-top: 40px; margin-right: 0px; margin-left: 0px; padding: 0px 0px 0.3em; font-size: 20px; line-height: 32px; overflow-anchor: auto; font-family: Inter, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;SF Pro SC&amp;quot;, &amp;quot;SF Pro Display&amp;quot;, &amp;quot;SF Pro Icons&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; text-wrap-mode: wrap; background-color: rgb(255, 255, 255); margin-bottom: 12px !important;&quot;&gt;
    总结
&lt;/h2&gt;
&lt;div class=&quot;auto-hide-last-sibling-br paragraph-JOTKXA paragraph-element br-paragraph-space&quot; style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; line-height: 28px; font-size: 16px; overflow-anchor: auto; font-family: Inter, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;SF Pro SC&amp;quot;, &amp;quot;SF Pro Display&amp;quot;, &amp;quot;SF Pro Icons&amp;quot;, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; text-wrap-mode: wrap; background-color: rgb(255, 255, 255); color: rgba(0, 0, 0, 0.85) !important;&quot;&gt;
    SSH 反向端口转发是一个轻量级且强大的工具，仅需一行命令就能打破内网限制，实现本地服务的远程访问。关键是理解&amp;nbsp;&lt;code style=&quot;-webkit-font-smoothing: antialiased; box-sizing: border-box; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: none; border: 0px solid; margin: 0px; padding: 0px; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-feature-settings: normal; font-variation-settings: normal; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0.06); border-radius: 4px; overflow-anchor: auto; line-height: 28px;&quot;&gt;-R&lt;/code&gt;&amp;nbsp;参数的转发逻辑，并注意配置安全选项（如密钥登录、防火墙规则）。无论是开发调试还是临时服务暴露，它都能成为你的得力助手。
&lt;/div&gt;
&lt;p&gt;
    &lt;br/&gt;
&lt;/p&gt;</description><pubDate>Wed, 13 Aug 2025 00:26:38 +0800</pubDate></item><item><title>Linux通过手机USB网络共享上网设置方法</title><link>https://sysplus.top/?id=3</link><description>&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;多数情况下，服务器无法直接联网，需通过手机连线上网。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;设置方法如下：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;终端中查看现有网络接口：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;ip addr 或 ifconfig&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;连接好数据线并在手机设置中打开“通过USB共享网络”&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;再次查看是否将USB识别为新的网络接口，此时没有IP地址。注意新增的网络接口名称，如“usb0”&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;为网络接口分配IP地址：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;dhclient usb0&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;再次查看网络接口：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;ip addr 或 ifconfig&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;确认已接入互联网：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;ping www.baidu.com&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;下文讲述Linux中dhclient的功能说明，如下所示；&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;dhclient命令功能：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;用于动态主机配置协议&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;动态的配置网络接口的&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;网络参数&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;dhclient命令注意事项：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;此命令也支持BOOTP协议&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;dhclient命令的语法格式:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;dhclient [参数] [网络接口]&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;-----常用参数说明------&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;-p:指定dhcp客户端监听的端口号(默认端口号86)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;-d:总是以前台方式运行程序&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;-q:安静模式，不打印任何错误的提示信息&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;-r:释放ip地址&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;-n:不配置任何接口&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;-x:停止正在运行的DHCP客户端，而不释放当前租约，杀死现有的dhclient&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;-s:在获取ip地址之前指定DHCP服务器&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;-w:即使没有找到广播接口，也继续运行&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;例：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;dhclient命令的示例分享&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;---在指定网络接口上发出DHCP请求&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;[root@maomao365 ~]# dhclient eth0&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;---释放IP地址&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;[root@maomao365 ~]# dhclient -r&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;Killed old client process&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;---从指定的服务器获取ip地址&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;[root@maomao365 ~]# dhclient -s 192.168.8.188&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;---停止运行dhclient&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;[root@maomao365 ~]# dhclient -x&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;text-wrap-mode: nowrap;&quot;&gt;Killed old client process&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Wed, 13 Aug 2025 00:21:50 +0800</pubDate></item></channel></rss>