<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Aaron Ji's blog (Posts about jumperserver)</title><link>https://blog.jiya.net/</link><description></description><atom:link href="https://blog.jiya.net/categories/jumperserver.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2025 &lt;a href="mailto:me@jiya.net"&gt;Aaron Ji&lt;/a&gt; </copyright><lastBuildDate>Wed, 19 Feb 2025 06:17:18 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>批量删除 jumpserver 节点</title><link>https://blog.jiya.net/posts/2022/03/jumpserver-delete-nodes-in-bulk.html</link><dc:creator>Aaron Ji</dc:creator><description>&lt;p&gt;
由于 jumpserver 中删除节点只能一部分一部分的删除，无法进行大量批量删除，分析后发现 jumpserver 中节点相关信息主要存储在以下数据表中：
&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;
assets_authbook
&lt;/p&gt;

&lt;p&gt;
assets_asset_nodes
&lt;/p&gt;

&lt;p&gt;
assets_historicalauthbook
&lt;/p&gt;

&lt;p&gt;
ops_adhoc_hosts
&lt;/p&gt;

&lt;p&gt;
ops_commandexecution_hosts
&lt;/p&gt;

&lt;p&gt;
perms_assetpermission_assets
&lt;/p&gt;

&lt;p&gt;
assets_asset
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;
因此，若想批量删除节点，则需要删除这些节点中的对应节点的数据。
&lt;/p&gt;

&lt;p&gt;
首先，使用 SQL 命令拼组删除命令（除 &lt;code&gt;assets_asset&lt;/code&gt; 表）：
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;CONCAT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="s1"&gt;'delete from assets_asset_nodes where asset_id =\'',&lt;/span&gt;
&lt;span class="s1"&gt;                `id`,&lt;/span&gt;
&lt;span class="s1"&gt;                '&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="s1"&gt;';'&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;CONCAT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="s1"&gt;'delete from ops_commandexecution_hosts where asset_id =\'',&lt;/span&gt;
&lt;span class="s1"&gt;                `id`,&lt;/span&gt;
&lt;span class="s1"&gt;                '&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="s1"&gt;';'&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;CONCAT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="s1"&gt;'delete from assets_authbook where asset_id =\'',&lt;/span&gt;
&lt;span class="s1"&gt;                `id`,&lt;/span&gt;
&lt;span class="s1"&gt;                '&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="s1"&gt;';'&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;CONCAT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="s1"&gt;'delete from assets_asset_nodes where asset_id =\'',&lt;/span&gt;
&lt;span class="s1"&gt;                `id`,&lt;/span&gt;
&lt;span class="s1"&gt;                '&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="s1"&gt;';'&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;CONCAT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="s1"&gt;'delete from assets_historicalauthbook where asset_id =\'',&lt;/span&gt;
&lt;span class="s1"&gt;                `id`,&lt;/span&gt;
&lt;span class="s1"&gt;                '&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="s1"&gt;';'&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;CONCAT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="s1"&gt;'delete from ops_adhoc_hosts where asset_id =\'',&lt;/span&gt;
&lt;span class="s1"&gt;                `id`,&lt;/span&gt;
&lt;span class="s1"&gt;                '&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="s1"&gt;';'&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;CONCAT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;span class="w"&gt;                &lt;/span&gt;&lt;span class="s1"&gt;'delete from perms_assetpermission_assets where asset_id =\'',&lt;/span&gt;
&lt;span class="s1"&gt;                `id`,&lt;/span&gt;
&lt;span class="s1"&gt;                '&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;&lt;span class="s1"&gt;';'&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;assets_asset&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;ip&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;like&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'%192.168.199%'&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
然后执行得到的 &lt;code&gt;SQL&lt;/code&gt; 语句。
&lt;/p&gt;

&lt;p&gt;
最后再删除 &lt;code&gt;assets_asset&lt;/code&gt; 表中的数据。
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="k"&gt;DELETE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;assets_asset&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="n"&gt;ip&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;LIKE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'%192.168.199%'&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
最后发现 WEB 终端更新的服务器数量还是原来的数量，点刷新没有作用，此时需要修改 &lt;code&gt;assets_node&lt;/code&gt; 表中的参数使数值变化。
&lt;/p&gt;

&lt;p&gt;
此外，还可以使用 JumpServer 服务 API 执行删除节点操作，详见&lt;a href="https://docs.jumpserver.org/zh/master/dev/rest_api/"&gt;JumpServer API&lt;/a&gt;。
&lt;/p&gt;

&lt;p&gt;
参考：
&lt;/p&gt;

&lt;p&gt;
&lt;a href="https://blog.csdn.net/madman163/article/details/115579814"&gt;https://blog.csdn.net/madman163/article/details/115579814&lt;/a&gt;
&lt;/p&gt;</description><category>jumperserver</category><guid>https://blog.jiya.net/posts/2022/03/jumpserver-delete-nodes-in-bulk.html</guid><pubDate>Mon, 28 Mar 2022 03:42:00 GMT</pubDate></item><item><title>安装 jumpserver</title><link>https://blog.jiya.net/posts/2021/05/install-jumperserver-on-centos.html</link><dc:creator>Aaron Ji</dc:creator><description>&lt;p&gt;
为了便于后续升级与迁移，使用外部 &lt;code&gt;redis&lt;/code&gt; 及 &lt;code&gt;MySQL&lt;/code&gt; 。另外，根据官方安装文档说明，要求 &lt;code&gt;Redis&lt;/code&gt; 版本要求 &lt;code&gt;6.0&lt;/code&gt; 以上， &lt;code&gt;MySQL&lt;/code&gt; 版本要求 &lt;code&gt;5.7&lt;/code&gt; 以上。本文中使用 &lt;code&gt;MariaDB 10.5&lt;/code&gt; 。
&lt;/p&gt;

&lt;p&gt;
安装 &lt;code&gt;MariaDB&lt;/code&gt; 教程见：&lt;a href="https://downloads.mariadb.org/mariadb/repositories/#distro=CentOS&amp;amp;distro_release=centos7-amd64--centos7&amp;amp;mirror=tuna&amp;amp;version=10.5"&gt;link&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
特别注意 &lt;code&gt;Mariadb&lt;/code&gt; 修改用户密码使用如下方式：
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;ALTER USER 'root'@'localhost' IDENTIFIED BY 'pass';
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;
&lt;code&gt;Redis&lt;/code&gt; 安装教程见：&lt;a href="https://computingforgeeks.com/how-to-install-latest-redis-on-centos-7/"&gt;link&lt;/a&gt;
&lt;/p&gt;


&lt;p&gt;
其余操作步骤参见：&lt;a href="https://www.cnblogs.com/you-men/p/13939724.html"&gt;link&lt;/a&gt;
&lt;/p&gt;

&lt;ul class="org-ul"&gt;
&lt;li&gt;注意使用 &lt;code&gt;nginx&lt;/code&gt; 转发 &lt;code&gt;websocket&lt;/code&gt; 请求的时候会有问题，报 &lt;code&gt;307&lt;/code&gt; 错误（解决方法见下）；&lt;/li&gt;
&lt;li&gt;注意使用 &lt;code&gt;terminal&lt;/code&gt; 登录需要使用 &lt;code&gt;websocket&lt;/code&gt; ，需要特别注意中间代理都需要如下设置。&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
&lt;/pre&gt;&lt;/div&gt;
&lt;div id="outline-container-orgc0e1926" class="outline-2"&gt;
&lt;h2 id="orgc0e1926"&gt;迁移后 &lt;code&gt;koko&lt;/code&gt; 模块报错 &lt;code&gt;register access key failed&lt;/code&gt; 或 &lt;code&gt;注册终端失败退出&lt;/code&gt;&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-orgc0e1926"&gt;
&lt;p&gt;
主要是因为 &lt;code&gt;jumperserver&lt;/code&gt; 其他组件需要通过终端注册注册对应组件用户，默认应该是关闭的，迁移后由于新部署的组件需要重新注册，故而需要重新开启 &lt;code&gt;终端注册&lt;/code&gt; 开关（安全设置 -&amp;gt; 终端注册）。
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="outline-container-org73bb8d2" class="outline-2"&gt;
&lt;h2 id="org73bb8d2"&gt;2022-03-22 使用 docker 部署&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-org73bb8d2"&gt;
&lt;p&gt;
docker 部署方案可参考&lt;a href="https://docs.jumpserver.org/zh/master/install/migration/"&gt;官方文档&lt;/a&gt;。
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</description><category>jumperserver</category><guid>https://blog.jiya.net/posts/2021/05/install-jumperserver-on-centos.html</guid><pubDate>Mon, 31 May 2021 09:01:00 GMT</pubDate></item></channel></rss>