<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Ssacli on inetshell</title><link>https://inet.sh/en/tags/ssacli/</link><description>Recent content in Ssacli on inetshell</description><generator>Hugo</generator><language>en</language><lastBuildDate>Thu, 24 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://inet.sh/en/tags/ssacli/index.xml" rel="self" type="application/rss+xml"/><item><title>Installing ssacli on Proxmox (HPE Smart Storage) when the guide fails</title><link>https://inet.sh/en/posts/proxmox/ssacli-proxmox/</link><pubDate>Thu, 24 Sep 2026 00:00:00 +0000</pubDate><guid>https://inet.sh/en/posts/proxmox/ssacli-proxmox/</guid><description>Install ssacli on Proxmox / Debian bookworm to manage HPE Smart Array controllers. The usual guide fails in 3 spots: dead HTTP, stale GPG key, and a false deprecation notice. Corrected copy/paste procedure.</description><content:encoded><![CDATA[<h2 id="tldr">TL;DR</h2>
<p>To manage an <strong>HPE Smart Array</strong> controller from Proxmox you need <code>ssacli</code>. The guide that ranks first on Google (<a href="https://aljax.us/install-ssacli-on-pve/">aljax.us</a>) is out of date and, as written, <strong>fails</strong>. Three things changed:</p>
<ol>
<li>The HPE repo <strong>no longer answers over HTTP</strong> (port 80) → use <code>https://</code>.</li>
<li>The <strong>GPG key in the guide is the old one</strong> → today it signs with <code>GPG-KEY2-mcp</code>.</li>
<li>The guide warns &ldquo;HPE removed the repo in Feb 2026&rdquo; → <strong>false</strong>, it&rsquo;s still live.</li>
</ol>
<p>Jump straight to the <a href="/en/posts/proxmox/ssacli-proxmox/#corrected-procedure-copypaste">corrected procedure</a> if you just want the copy/paste.</p>
<p>Tested on <strong>Proxmox VE 8 (Debian bookworm)</strong> on a host with an <strong>HPE Smart Array P840ar</strong> controller, on 2026-09-23.</p>
<h2 id="the-problem">The problem</h2>
<p><code>ssacli</code> (formerly <code>hpssacli</code>) is HPE&rsquo;s CLI for Smart Array controllers: it lets you see controllers, physical disks, logical arrays, and their health without going into iLO or rebooting into the ROM. On a Proxmox node it&rsquo;s the practical way to identify bays and check disks while the box is running.</p>
<p>The community &ldquo;standard&rdquo; path is to add HPE&rsquo;s MCP repo to <code>apt</code>. But if you copy the steps from old guides you hit two errors, one after the other:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">Connection failed [IP: ... 80]
</span></span></code></pre></td></tr></table>
</div>
</div><p>and, if you fix the first but not the second:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">W: GPG error: https://downloads.linux.hpe.com/SDR/repo/mcp bookworm/current Release:
</span></span><span class="line"><span class="cl">   The following signatures couldn&#39;t be verified because the public key is not available:
</span></span><span class="line"><span class="cl">   NO_PUBKEY E3FE26E774C3A4A2
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="1-the-http-endpoint-is-dead">1. The HTTP endpoint is dead</h3>
<p>The MCP repo stopped serving over cleartext HTTP. The guides register <code>deb http://downloads.linux.hpe.com/...</code> and <code>apt update</code> hangs with <em>Connection failed</em> on port 80. The fix is simply to use <strong>HTTPS</strong> in the <code>sources.list</code> (<code>apt-transport-https</code> already ships in bookworm).</p>
<h3 id="2-the-gpg-key-in-the-guide-is-wrong">2. The GPG key in the guide is wrong</h3>
<p>Guides point to <code>hpePublicKey2048_key1.pub</code>. The repo <strong>no longer signs with that key</strong>: today it uses <code>GPG-KEY2-mcp</code>.</p>
<ul>
<li><strong>File:</strong> <code>GPG-KEY2-mcp</code></li>
<li><strong>Type:</strong> RSA-4096</li>
<li><strong>Fingerprint:</strong> <code>9E8C 4A25 C494 08EF A8D0 9D96 E3FE 26E7 74C3 A4A2</code></li>
<li><strong>Validity:</strong> 2024-09-05 → 2034-09-05</li>
</ul>
<p>Without it, <code>apt update</code> fails with <code>NO_PUBKEY E3FE26E774C3A4A2</code> (the last 16 hex of the fingerprint).</p>
<h3 id="3-the-repo-removed-notice-is-false-for-now">3. The &ldquo;repo removed&rdquo; notice is false (for now)</h3>
<p>Several guides warn that HPE took down its public repository in February 2026. As of today (2026-09-23) the <strong>MCP repo for bookworm is still live</strong> and serves <code>ssacli 6.15-11.0</code> without issue. Even so, there&rsquo;s an <a href="/en/posts/proxmox/ssacli-proxmox/#fallback-if-the-repo-disappears">RPM fallback</a> below in case the prophecy comes true one day.</p>
<h2 id="corrected-procedure-copypaste">Corrected procedure (copy/paste)</h2>
<p>As <code>root</code> on the Proxmox host:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl"><span class="c1"># 1. Install the correct GPG key (GPG-KEY2-mcp)</span>
</span></span><span class="line"><span class="cl">mkdir -p /etc/apt/keyrings
</span></span><span class="line"><span class="cl">curl -fsSL https://downloads.linux.hpe.com/SDR/repo/mcp/GPG-KEY2-mcp <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>  <span class="p">|</span> gpg --dearmor &gt; /etc/apt/keyrings/hpePublicKey2-mcp.gpg
</span></span><span class="line"><span class="cl">chmod <span class="m">0644</span> /etc/apt/keyrings/hpePublicKey2-mcp.gpg
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 2. Register the repo (HTTPS, not HTTP; adjust the codename if not bookworm)</span>
</span></span><span class="line"><span class="cl">cat &gt; /etc/apt/sources.list.d/hp-mcp.list <span class="s">&lt;&lt;&#39;EOT&#39;
</span></span></span><span class="line"><span class="cl"><span class="s">deb [signed-by=/etc/apt/keyrings/hpePublicKey2-mcp.gpg] https://downloads.linux.hpe.com/SDR/repo/mcp bookworm/current non-free
</span></span></span><span class="line"><span class="cl"><span class="s">EOT</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 3. Update indexes and install</span>
</span></span><span class="line"><span class="cl">apt-get update
</span></span><span class="line"><span class="cl">apt-get install -y ssacli
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 4. Verify</span>
</span></span><span class="line"><span class="cl">ssacli version
</span></span><span class="line"><span class="cl">ssacli ctrl all show
</span></span></code></pre></td></tr></table>
</div>
</div><p>On a lab node the verification looked like this:</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">root@pve-node1:~# ssacli version
</span></span><span class="line"><span class="cl">   SSACLI Version:  6.15.11.0  2022-11-01
</span></span><span class="line"><span class="cl">   SOULAPI Version: 6.15.11.0  2022-11-01
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">root@pve-node1:~# ssacli ctrl all show
</span></span><span class="line"><span class="cl">Smart Array P840ar in Slot 0 (Embedded)   (sn: &lt;serial&gt;)
</span></span></code></pre></td></tr></table>
</div>
</div><h2 id="useful-ssacli-commands">Useful ssacli commands</h2>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">ssacli ctrl all show                     <span class="c1"># list controllers</span>
</span></span><span class="line"><span class="cl">ssacli ctrl <span class="nv">slot</span><span class="o">=</span><span class="m">0</span> show detail           <span class="c1"># controller detail for slot 0</span>
</span></span><span class="line"><span class="cl">ssacli ctrl <span class="nv">slot</span><span class="o">=</span><span class="m">0</span> pd all show status    <span class="c1"># physical disk status</span>
</span></span><span class="line"><span class="cl">ssacli ctrl <span class="nv">slot</span><span class="o">=</span><span class="m">0</span> ld all show status    <span class="c1"># logical array status</span>
</span></span><span class="line"><span class="cl">ssacli ctrl <span class="nv">slot</span><span class="o">=</span><span class="m">0</span> show config           <span class="c1"># full topology (arrays, LDs, PDs)</span>
</span></span><span class="line"><span class="cl">ssacli ctrl <span class="nv">slot</span><span class="o">=</span><span class="m">0</span> modify <span class="nv">drivewritecache</span><span class="o">=</span><span class="nb">enable</span>
</span></span><span class="line"><span class="cl">ssacli ctrl <span class="nv">slot</span><span class="o">=</span><span class="m">0</span> ld <span class="m">1</span> modify <span class="nv">caching</span><span class="o">=</span><span class="nb">enable</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>To identify a physical bay by serial number (handy when someone is at the rack swapping a disk), <code>ssacli ctrl slot=0 pd all show detail</code> gives you serial, bay, and status per disk. In HBA mode, inserting a disk may transiently flag <em>&ldquo;Degraded (Not authenticated)&rdquo;</em> and then clear to OK; nothing functional changes.</p>
<h2 id="fallback-if-the-repo-disappears">Fallback if the repo disappears</h2>
<p>If <code>downloads.linux.hpe.com/SDR/repo/mcp</code> ever stops responding, download the <code>.rpm</code> from the HPE support portal and extract it by hand (Debian doesn&rsquo;t use RPM, so we just unpack it):</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">rpm2cpio ssacli-*.rpm <span class="p">|</span> cpio -idmv
</span></span><span class="line"><span class="cl">cp -rv ./opt/* /opt
</span></span><span class="line"><span class="cl">cp -rv ./usr/* /usr
</span></span></code></pre></td></tr></table>
</div>
</div><h2 id="applies-to">Applies to</h2>
<p>The same procedure works on any <strong>Proxmox / Debian bookworm</strong> node with an HPE Smart Array controller (Gen8 / Gen9 / Gen10). For <strong>bullseye</strong> or <strong>trixie</strong>, change the codename in the <code>sources.list</code>.</p>
]]></content:encoded></item></channel></rss>