<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>统信归档 - Liao&#039;s blog</title>
	<atom:link href="https://www.laobaiblog.top/tag/%E7%BB%9F%E4%BF%A1/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.laobaiblog.top/tag/统信/</link>
	<description>路漫漫其修远兮，吾将上下而求索</description>
	<lastBuildDate>Mon, 22 Jun 2026 05:50:08 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://www.laobaiblog.top/wp-content/uploads/2022/01/cropped-tyuu-32x32.png</url>
	<title>统信归档 - Liao&#039;s blog</title>
	<link>https://www.laobaiblog.top/tag/统信/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>UOS离线升级OpenSSH 10.3p1</title>
		<link>https://www.laobaiblog.top/2026/06/22/uos_upopenssh/</link>
		
		<dc:creator><![CDATA[大白]]></dc:creator>
		<pubDate>Mon, 22 Jun 2026 05:50:08 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[分享]]></category>
		<category><![CDATA[openssh]]></category>
		<category><![CDATA[openssl]]></category>
		<category><![CDATA[pam]]></category>
		<category><![CDATA[UOS]]></category>
		<category><![CDATA[扫描]]></category>
		<category><![CDATA[漏洞]]></category>
		<category><![CDATA[统信]]></category>
		<guid isPermaLink="false">https://www.laobaiblog.top/?p=654</guid>

					<description><![CDATA[<p>本文由Codex生成 下载脚本，解压密码：dabai 适用环境： 系统：UnionTech OS S &#8230;</p>
<p><a href="https://www.laobaiblog.top/2026/06/22/uos_upopenssh/">UOS离线升级OpenSSH 10.3p1</a>最先出现在<a href="https://www.laobaiblog.top">Liao&#039;s blog</a>。</p>
]]></description>
										<content:encoded><![CDATA[<blockquote><p>
  本文由Codex生成
</p></blockquote>
<p><a class="wp-editor-md-post-content-link" href="https://mrliao.lanzouu.com/i0xs13skiixg">下载脚本，解压密码：<strong>dabai</strong></a></p>
<p>适用环境：</p>
<ul>
<li>系统：UnionTech OS Server 20 / uel20 / aarch64</li>
<li>原版本：OpenSSH_8.2p1, OpenSSL 1.1.1f</li>
<li>目标版本：OpenSSH_10.3p1, OpenSSL 3.5.6, zlib 1.3.2</li>
<li>离线包目录：<code>/data/downloads</code></li>
<li>新版本安装目录：
<ul>
<li>zlib：<code>/usr/local/zlib-1.3.2</code></li>
<li>OpenSSL：<code>/usr/local/openssl-3.5.6</code></li>
<li>OpenSSH：<code>/usr/local/openssh-10.3p1</code></li>
</ul>
</li>
</ul>
<h2>一、重要原则</h2>
<p>升级 SSH 时不要关闭当前 SSH 会话。</p>
<p>正确操作顺序：</p>
<ol>
<li>先编译安装新版 OpenSSH。</li>
<li>先启动 <code>2222</code> 测试端口。</li>
<li>用新终端测试 <code>ssh -p 2222 root@服务器IP</code>。</li>
<li>测试通过后再切换生产 <code>22</code> 端口。</li>
<li>切换生产后，再用新终端测试 <code>ssh root@服务器IP</code>。</li>
<li>新终端确认可以登录后，当前旧终端才可以关闭。</li>
</ol>
<h2>二、离线包准备</h2>
<p>将以下文件放到 <code>/data/downloads</code>：</p>
<pre><code class="language-bash line-numbers">/data/downloads/zlib-1.3.2.tar
/data/downloads/openssl-3.5.6.tar
/data/downloads/openssh-10.3p1.tar
</code></pre>
<p>如果是 <code>.tar.gz</code> 也可以，脚本会自动识别：</p>
<pre><code class="language-bash line-numbers">zlib-1.3.2.tar.gz
openssl-3.5.6.tar.gz
openssh-10.3p1.tar.gz
</code></pre>
<h2>三、一键脚本运行方式</h2>
<p>脚本路径示例：</p>
<pre><code class="language-bash line-numbers">/root/upgrade_openssh_10.3p1.sh
</code></pre>
<p>先做语法检查：</p>
<pre><code class="language-bash line-numbers">bash -n /root/upgrade_openssh_10.3p1.sh
</code></pre>
<p>没有输出表示语法检查通过。</p>
<p>默认运行，只编译并启动 <code>2222</code> 测试端口，不替换生产 SSH：</p>
<pre><code class="language-bash line-numbers">bash /root/upgrade_openssh_10.3p1.sh
</code></pre>
<p>测试端口登录：</p>
<pre><code class="language-bash line-numbers">ssh -p 2222 root@服务器IP
</code></pre>
<p>测试通过后，切换生产 <code>22</code> 端口：</p>
<pre><code class="language-bash line-numbers">bash /root/upgrade_openssh_10.3p1.sh --switch
</code></pre>
<h2>四、当前遇到的问题和处理方式</h2>
<h3>1. 找不到 pam-devel</h3>
<p>现象：</p>
<pre><code class="language-bash line-numbers">rpm -qa | grep pam
</code></pre>
<p>只有：</p>
<pre><code class="language-text line-numbers">pam-1.4.0-8.up5.uel20.aarch64
</code></pre>
<p>没有：</p>
<pre><code class="language-text line-numbers">pam-devel
</code></pre>
<p>处理方式：</p>
<ul>
<li>本次 OpenSSH 按无 PAM 方式编译。</li>
<li>不使用 <code>--with-pam</code>。</li>
<li>配置文件里不能写 <code>UsePAM yes</code> 或 <code>UsePAM no</code>，需要注释掉 <code>UsePAM</code> 整行。</li>
</ul>
<p>原因：</p>
<p>无 PAM 编译时，新版 <code>sshd</code> 不认识 <code>UsePAM</code> 这个配置项。如果配置里存在该项，会出现：</p>
<pre><code class="language-text line-numbers">Unsupported option UsePAM
</code></pre>
<h3>2. OpenSSL libssl.so.3 找不到</h3>
<p>现象：</p>
<pre><code class="language-text line-numbers">/usr/local/openssl-3.5.6/bin/openssl: error while loading shared libraries: libssl.so.3: cannot open shared object file: No such file or directory
</code></pre>
<p>原因：</p>
<p>OpenSSL 已安装，但系统动态链接器没有加载 <code>/usr/local/openssl-3.5.6/lib</code>。</p>
<p>处理方式：</p>
<pre><code class="language-bash line-numbers">cat &gt; /etc/ld.so.conf.d/openssl-3.5.6-openssh-upgrade.conf &lt;&lt;'EOF'
/usr/local/openssl-3.5.6/lib64
/usr/local/openssl-3.5.6/lib
/usr/local/zlib-1.3.2/lib
EOF

ldconfig
</code></pre>
<p>验证：</p>
<pre><code class="language-bash line-numbers">/usr/local/openssl-3.5.6/bin/openssl version -a
</code></pre>
<h3>3. RSAAuthentication 旧参数告警</h3>
<p>现象：</p>
<pre><code class="language-text line-numbers">Deprecated option RSAAuthentication
Deprecated option RhostsRSAAuthentication
</code></pre>
<p>处理方式：</p>
<p>注释旧参数：</p>
<pre><code class="language-bash line-numbers">sed -i \
  -e 's/^[[:space:]]*RSAAuthentication[[:space:]].*/#&amp;/' \
  -e 's/^[[:space:]]*RhostsRSAAuthentication[[:space:]].*/#&amp;/' \
  /etc/ssh/sshd_config
</code></pre>
<h3>4. GSSAPI 参数兼容问题</h3>
<p>部分新版 OpenSSH 可能不支持旧配置里的 GSSAPI 参数。</p>
<p>处理方式：</p>
<pre><code class="language-bash line-numbers">sed -i \
  -e 's/^[[:space:]]*GSSAPIAuthentication[[:space:]].*/#&amp;/' \
  -e 's/^[[:space:]]*GSSAPICleanupCredentials[[:space:]].*/#&amp;/' \
  /etc/ssh/sshd_config
</code></pre>
<h3>5. 主机密钥权限问题</h3>
<p>新版 <code>sshd</code> 对主机密钥权限要求较严格。</p>
<p>处理方式：</p>
<pre><code class="language-bash line-numbers">chown root:root /etc/ssh/ssh_host_*
chmod 600 /etc/ssh/ssh_host_*_key
chmod 644 /etc/ssh/ssh_host_*_key.pub
chmod 755 /etc/ssh
chmod 644 /etc/ssh/sshd_config
</code></pre>
<h2>五、验证服务端版本</h2>
<p>注意：</p>
<p>在服务器上执行：</p>
<pre><code class="language-bash line-numbers">ssh -V
</code></pre>
<p>看到的是本机 SSH 客户端版本，不是服务端 <code>sshd</code> 版本。</p>
<p>服务端是否已切换，看下面命令。</p>
<p>查看 systemd 状态：</p>
<pre><code class="language-bash line-numbers">systemctl status sshd --no-pager
</code></pre>
<p>应看到类似：</p>
<pre><code class="language-text line-numbers">sshd: /usr/local/openssh-10.3p1/sbin/sshd -D [listener]
</code></pre>
<p>查看进程：</p>
<pre><code class="language-bash line-numbers">ps -ef | grep '[s]shd'
</code></pre>
<p>验证新版服务端二进制：</p>
<pre><code class="language-bash line-numbers">/usr/local/openssh-10.3p1/sbin/sshd -V
</code></pre>
<p>客户端远程确认服务端 banner：</p>
<pre><code class="language-bash line-numbers">ssh -vvv root@服务器IP
</code></pre>
<p>输出中应有类似：</p>
<pre><code class="language-text line-numbers">remote software version OpenSSH_10.3
</code></pre>
<h2>六、停止 2222 测试端口</h2>
<p>生产 <code>22</code> 端口切换并验证成功后，可以停止测试端口：</p>
<pre><code class="language-bash line-numbers">kill $(cat /tmp/sshd-10.3p1-test.pid)
rm -f /tmp/sshd-10.3p1-test.pid
</code></pre>
<p>确认 <code>2222</code> 不再监听：</p>
<pre><code class="language-bash line-numbers">ss -lnt | grep ':2222' || echo "2222 test sshd stopped"
</code></pre>
<h2>七、替换 ssh -V 客户端显示</h2>
<p>生产 <code>sshd</code> 切换后，服务器上执行 <code>ssh -V</code> 仍可能显示旧版本：</p>
<pre><code class="language-text line-numbers">OpenSSH_8.2p1, OpenSSL 1.1.1f
</code></pre>
<p>这是因为 <code>/usr/bin/ssh</code> 还是系统旧客户端。</p>
<p>如果需要让 <code>ssh -V</code> 显示新版，可以用软链接替换客户端命令。</p>
<h3>1. 备份旧客户端</h3>
<pre><code class="language-bash line-numbers">TS=<span class="katex math inline">(date +%F-%H%M%S)

cp -a /usr/bin/ssh /usr/bin/ssh.old-8.2p1-</span>TS
cp -a /usr/bin/scp /usr/bin/scp.old-8.2p1-<span class="katex math inline">TS 2&gt;/dev/null || true
cp -a /usr/bin/sftp /usr/bin/sftp.old-8.2p1-</span>TS 2&gt;/dev/null || true
cp -a /usr/bin/ssh-keygen /usr/bin/ssh-keygen.old-8.2p1-<span class="katex math inline">TS 2&gt;/dev/null || true
cp -a /usr/bin/ssh-agent /usr/bin/ssh-agent.old-8.2p1-</span>TS 2&gt;/dev/null || true
cp -a /usr/bin/ssh-add /usr/bin/ssh-add.old-8.2p1-$TS 2&gt;/dev/null || true
</code></pre>
<h3>2. 创建新版软链接</h3>
<pre><code class="language-bash line-numbers">ln -sf /usr/local/openssh-10.3p1/bin/ssh /usr/bin/ssh
ln -sf /usr/local/openssh-10.3p1/bin/scp /usr/bin/scp
ln -sf /usr/local/openssh-10.3p1/bin/sftp /usr/bin/sftp
ln -sf /usr/local/openssh-10.3p1/bin/ssh-keygen /usr/bin/ssh-keygen
ln -sf /usr/local/openssh-10.3p1/bin/ssh-agent /usr/bin/ssh-agent
ln -sf /usr/local/openssh-10.3p1/bin/ssh-add /usr/bin/ssh-add
</code></pre>
<h3>3. 验证客户端版本</h3>
<pre><code class="language-bash line-numbers">which ssh
ls -l /usr/bin/ssh
ssh -V
scp -V 2&gt;&amp;1 | head -1
sftp -V 2&gt;&amp;1 | head -1
</code></pre>
<p><a class="wp-editor-md-post-content-link" href="https://www.laobaiblog.top/wp-content/uploads/2026/06/wp_editor_md_44996ce56db85151a4bf06a60d9e4bdf.jpg"><img decoding="async" src="https://www.laobaiblog.top/wp-content/uploads/2026/06/wp_editor_md_44996ce56db85151a4bf06a60d9e4bdf.jpg" alt="" /></a></p>
<p>预期：</p>
<pre><code class="language-text line-numbers">OpenSSH_10.3p1, OpenSSL 3.5.6
</code></pre>
<h3>4. 更保守的方式：只改 PATH</h3>
<p>如果不想改 <code>/usr/bin</code>，可以只改 PATH：</p>
<pre><code class="language-bash line-numbers">echo 'export PATH=/usr/local/openssh-10.3p1/bin:$PATH' &gt; /etc/profile.d/openssh-10.3p1.sh
source /etc/profile.d/openssh-10.3p1.sh
ssh -V
</code></pre>
<p>这种方式不会覆盖系统命令，但只对加载该 profile 的 shell 生效。</p>
<h2>八、服务端回滚</h2>
<p>如果执行 <code>--switch</code> 后，新终端无法登录 <code>22</code> 端口，但当前旧终端还在，立即执行：</p>
<pre><code class="language-bash line-numbers">systemctl revert sshd
systemctl daemon-reload
systemctl restart sshd
systemctl status sshd --no-pager
</code></pre>
<p>恢复 sshd 配置文件。</p>
<p>查看脚本自动备份：</p>
<pre><code class="language-bash line-numbers">ls -lh /etc/ssh/sshd_config.before-10.3p1-*
</code></pre>
<p>选择最近的备份恢复：</p>
<pre><code class="language-bash line-numbers">cp -a /etc/ssh/sshd_config.before-10.3p1-具体时间 /etc/ssh/sshd_config
systemctl restart sshd
</code></pre>
<p>也可以使用脚本开头生成的完整备份目录：</p>
<pre><code class="language-bash line-numbers">ls -ld /root/ssh-bak-*
</code></pre>
<p>恢复示例：</p>
<pre><code class="language-bash line-numbers">cp -a /root/ssh-bak-具体时间/ssh/sshd_config /etc/ssh/sshd_config
systemctl restart sshd
</code></pre>
<p>回滚后重新开一个终端测试：</p>
<pre><code class="language-bash line-numbers">ssh root@服务器IP
</code></pre>
<h2>九、客户端软链接回滚</h2>
<p>如果已经替换了 <code>/usr/bin/ssh</code> 等客户端命令，需要回滚：</p>
<p>先找到备份：</p>
<pre><code class="language-bash line-numbers">ls -lh /usr/bin/ssh.old-8.2p1-*
ls -lh /usr/bin/scp.old-8.2p1-* 2&gt;/dev/null
ls -lh /usr/bin/sftp.old-8.2p1-* 2&gt;/dev/null
</code></pre>
<p>删除软链接并恢复旧文件：</p>
<pre><code class="language-bash line-numbers">rm -f /usr/bin/ssh /usr/bin/scp /usr/bin/sftp

cp -a /usr/bin/ssh.old-8.2p1-具体时间 /usr/bin/ssh
cp -a /usr/bin/scp.old-8.2p1-具体时间 /usr/bin/scp 2&gt;/dev/null || true
cp -a /usr/bin/sftp.old-8.2p1-具体时间 /usr/bin/sftp 2&gt;/dev/null || true
</code></pre>
<p>如果也替换了管理工具：</p>
<pre><code class="language-bash line-numbers">rm -f /usr/bin/ssh-keygen /usr/bin/ssh-agent /usr/bin/ssh-add

cp -a /usr/bin/ssh-keygen.old-8.2p1-具体时间 /usr/bin/ssh-keygen 2&gt;/dev/null || true
cp -a /usr/bin/ssh-agent.old-8.2p1-具体时间 /usr/bin/ssh-agent 2&gt;/dev/null || true
cp -a /usr/bin/ssh-add.old-8.2p1-具体时间 /usr/bin/ssh-add 2&gt;/dev/null || true
</code></pre>
<p>验证：</p>
<pre><code class="language-bash line-numbers">ssh -V
</code></pre>
<p>应恢复为：</p>
<pre><code class="language-text line-numbers">OpenSSH_8.2p1, OpenSSL 1.1.1f
</code></pre>
<h2>十、最终验收命令</h2>
<p>服务端验收：</p>
<pre><code class="language-bash line-numbers">systemctl status sshd --no-pager
ps -ef | grep '[s]shd'
/usr/local/openssh-10.3p1/sbin/sshd -V
</code></pre>
<p>客户端验收：</p>
<pre><code class="language-bash line-numbers">ssh -V
which ssh
ls -l /usr/bin/ssh
</code></pre>
<p>远程连接验收：</p>
<pre><code class="language-bash line-numbers">ssh root@服务器IP
ssh -vvv root@服务器IP
</code></pre>
<p>如果 <code>ssh -vvv</code> 中显示：</p>
<pre><code class="language-text line-numbers">remote software version OpenSSH_10.3
</code></pre>
<p>说明远端服务端已经是新版。</p>
<h2>十一、注意事项</h2>
<ul>
<li>本次因为缺少 <code>pam-devel</code>，OpenSSH 是无 PAM 编译。</li>
<li>无 PAM 版本不要在 <code>sshd_config</code> 中保留 <code>UsePAM</code>。</li>
<li>生产切换前必须确认 <code>2222</code> 测试端口可以登录。</li>
<li>生产切换后必须新开终端确认 <code>22</code> 端口可以登录。</li>
<li>不要在未验证新连接前关闭当前 SSH 会话。</li>
<li><code>/usr/bin/ssh</code> 是客户端命令，<code>/usr/local/openssh-10.3p1/sbin/sshd</code> 是服务端守护进程，不要混淆。</li>
</ul>
<p><a href="https://www.laobaiblog.top/2026/06/22/uos_upopenssh/">UOS离线升级OpenSSH 10.3p1</a>最先出现在<a href="https://www.laobaiblog.top">Liao&#039;s blog</a>。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
