<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Bud on slightlymore</title><link>https://slightlymore.co.uk/growths/bud/</link><description>Recent content in Bud on slightlymore</description><generator>Hugo</generator><language>en-GB</language><copyright>&lt;a href="https://creativecommons.org/licenses/by/4.0/" target="_blank" rel="license"&gt;CC BY 4.0&lt;/a&gt; by Clinton Montague</copyright><lastBuildDate>Mon, 06 Apr 2026 12:34:15 +0100</lastBuildDate><atom:link href="https://slightlymore.co.uk/growths/bud/index.xml" rel="self" type="application/rss+xml"/><item><title>How to get keychain to remember ssh passphrase</title><link>https://slightlymore.co.uk/how-to-get-keychain-to-remember-ssh-passphrase/</link><pubDate>Mon, 06 Apr 2026 00:00:00 +0000</pubDate><guid>https://slightlymore.co.uk/how-to-get-keychain-to-remember-ssh-passphrase/</guid><description>&lt;p&gt;&lt;code&gt;ssh-add --apple-use-keychain --apple-load-keychain ~/.ssh/id_ed25519&lt;/code&gt;&lt;/p&gt;
&lt;h2 id="references"&gt;References&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://slightlymore.co.uk/how-to-set-up-git-signing"&gt;How to set up git signing 🌿&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>How to get rid of YouTube shorts</title><link>https://slightlymore.co.uk/how-to-get-rid-of-youtube-shorts/</link><pubDate>Mon, 06 Apr 2026 00:00:00 +0000</pubDate><guid>https://slightlymore.co.uk/how-to-get-rid-of-youtube-shorts/</guid><description>&lt;p&gt;There&amp;rsquo;s no global setting to remove YouTube shorts, but I&amp;rsquo;ve found that by saying &amp;ldquo;not interested&amp;rdquo; to every one which pops up they&amp;rsquo;ve been removed from my feed.&lt;/p&gt;
&lt;p&gt;Right now I&amp;rsquo;m not sure how long this will be in effect for, but it&amp;rsquo;s at least a temporary solution.&lt;/p&gt;</description></item><item><title>Reverse the order of lines in a file</title><link>https://slightlymore.co.uk/reverse-the-order-of-lines-in-a-file/</link><pubDate>Mon, 06 Apr 2026 00:00:00 +0000</pubDate><guid>https://slightlymore.co.uk/reverse-the-order-of-lines-in-a-file/</guid><description>&lt;p&gt;Reading and writing to the same file can in theory cause it to become truncated or corrupted so you can use &lt;code&gt;sponge&lt;/code&gt; from &lt;code&gt;moreutils&lt;/code&gt; to &amp;ldquo;soak up std out and write to a file&amp;rdquo; which ensures that the file is processed in entirety before redirecting the output back to the same file.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tail -r file.txt &lt;span class="p"&gt;|&lt;/span&gt; sponge file.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Enumerating databases, tables, columns, and user privileges with SQL injection</title><link>https://slightlymore.co.uk/enumerating-databases-tables-columns-and-user-privileges-with-sql-injection/</link><pubDate>Sat, 03 Jan 2026 00:00:00 +0000</pubDate><guid>https://slightlymore.co.uk/enumerating-databases-tables-columns-and-user-privileges-with-sql-injection/</guid><description>&lt;p&gt;Using a UNION injection we can find out about a (MySQL/MariaDB) structure.&lt;/p&gt;
&lt;p&gt;Here are some minimal examples. Remember to &lt;a href="https://slightlymore.co.uk/how-to-determine-the-number-of-columns-for-union-sql-injection"&gt;determine the correct number of columns 🌿&lt;/a&gt;
 and match that. Also clearly remember to add &lt;code&gt;WHERE&lt;/code&gt; clauses to these to narrow down the search.&lt;/p&gt;
&lt;h2 id="databases"&gt;Databases&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;UNION&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;SCHEMA_NAME&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;INFORMATION_SCHEMA&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SCHEMATA&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="tables"&gt;Tables&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;UNION&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;TABLE_NAME&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;TABLE_SCHEMA&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;INFORMATION_SCHEMA&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;TABLES&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="columns"&gt;Columns&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;UNION&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;COLUMN_NAME&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="k"&gt;TABLE_NAME&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;INFORMATION_SCHEMA&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;COLUMNS&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="privileges"&gt;Privileges&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;UNION&lt;/span&gt;&lt;span class="w"&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;GRANTEE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;PRIVILEGE_TYPE&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;INFORMATION_SCHEMA&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;USER_PRIVILEGES&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="references"&gt;References&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://slightlymore.co.uk/how-to-determine-the-number-of-columns-for-union-sql-injection"&gt;How to determine the number of columns for &lt;code&gt;union&lt;/code&gt; SQL injection 🌿&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>How to determine the number of columns for `union` SQL injection</title><link>https://slightlymore.co.uk/how-to-determine-the-number-of-columns-for-union-sql-injection/</link><pubDate>Fri, 02 Jan 2026 00:00:00 +0000</pubDate><guid>https://slightlymore.co.uk/how-to-determine-the-number-of-columns-for-union-sql-injection/</guid><description>&lt;p&gt;A union injection causes additional rows to be added to the result set by using the &lt;code&gt;UNION&lt;/code&gt; clause. To do this, we need to know the number of columns in the target result set.&lt;/p&gt;
&lt;p&gt;There are two easy strategies for this. Using &lt;code&gt;order by&lt;/code&gt; or &lt;code&gt;union&lt;/code&gt;. Assume that the following is vulnerable:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&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;users&lt;/span&gt;&lt;span class="w"&gt; &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;username&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;$oops&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="order-by"&gt;&lt;code&gt;order by&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;In MySQL you can use numeric arguments for order by which you can use to infer the number of columns. Let &lt;code&gt;$oops = &amp;quot;test' order by 1 -- &lt;/code&gt; then the query becomes:&lt;/p&gt;</description></item><item><title>Brute forcing subdomain enumeration</title><link>https://slightlymore.co.uk/brute-forcing-subdomain-enumeration/</link><pubDate>Wed, 10 Dec 2025 00:00:00 +0000</pubDate><guid>https://slightlymore.co.uk/brute-forcing-subdomain-enumeration/</guid><description>&lt;h2 id="dnsenum"&gt;&lt;code&gt;dnsenum&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Performs various dns-level and osint searches to find sub domains.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dnsenum &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --enum target.tld &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -f /usr/share/seclists/Discovery/DNS/subdomains-top1million-20000.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="gobuster"&gt;&lt;code&gt;gobuster&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;You can do virtual host subdomain brute forcing with gobuster. You can specify the target as a hostname or ip.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;gobuster vhost &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -u http&lt;span class="o"&gt;[&lt;/span&gt;s&lt;span class="o"&gt;]&lt;/span&gt;://targetip&lt;span class="o"&gt;[&lt;/span&gt;:port&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-20000.txt &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --append-domain
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Proxying cli traffic to burp suite using proxychains</title><link>https://slightlymore.co.uk/proxying-cli-traffic-to-burp-suite-using-proxychains/</link><pubDate>Sat, 06 Dec 2025 00:00:00 +0000</pubDate><guid>https://slightlymore.co.uk/proxying-cli-traffic-to-burp-suite-using-proxychains/</guid><description>&lt;p&gt;&lt;a href="https://github.com/haad/proxychains" target="_blank" rel="noopener"&gt;proxychains ↗️&lt;/a&gt;
 is a tool which forwards TCP traffic via a proxy. You run other applications via it. For example&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;proxychains curl www.example.com
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The relevant part of config for HTTP traffic is in &lt;code&gt;/etc/proxychains.conf&lt;/code&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell-session" data-lang="shell-session"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gp"&gt;#&lt;/span&gt;socks4 127.0.0.1 &lt;span class="m"&gt;9050&lt;/span&gt; &lt;span class="c1"&gt;# comment this line out. TODO: Why?&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gp"&gt;#&lt;/span&gt; Add the following line
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;http 127.0.0.1 8080
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This config forwards the traffic to a proxy on 8080 which is the default for burp. Change the setup as needed for other tools.&lt;/p&gt;</description></item><item><title>Useful search engines</title><link>https://slightlymore.co.uk/useful-search-engines/</link><pubDate>Thu, 27 Nov 2025 00:00:00 +0000</pubDate><guid>https://slightlymore.co.uk/useful-search-engines/</guid><description>&lt;h2 id="meta-search"&gt;Meta search&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.kagi.com" target="_blank" rel="noopener"&gt;Kagi ↗️&lt;/a&gt;
 premium (paid for and ad-free) search prioritising privacy and user experience. Reminiscent of the good-old-days&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/searxng/searxng" target="_blank" rel="noopener"&gt;SearXNG ↗️&lt;/a&gt;
 self-hostable, open-source metasearch engine that aggregates results from 200+ engines. There are hosted versions but privacy or veracity is not guaranteed&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="specialist"&gt;Specialist&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.virustotal.com/" target="_blank" rel="noopener"&gt;Virus Total ↗️&lt;/a&gt;
 meta engine for checking files and their hashes against virus databases&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.shodan.io/" target="_blank" rel="noopener"&gt;Shodan ↗️&lt;/a&gt;
 is an engine to find devices connected to the internet&lt;/li&gt;
&lt;li&gt;&lt;a href="https://search.censys.io/" target="_blank" rel="noopener"&gt;Censys ↗️&lt;/a&gt;
 searches hosts, IPs, certificates&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="exploits-and-cve-databases"&gt;Exploits and CVE databases&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.exploit-db.com/" target="_blank" rel="noopener"&gt;ExploitDB ↗️&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.rapid7.com/db/" target="_blank" rel="noopener"&gt;Rapid7 ↗️&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.vulnerability-lab.com/" target="_blank" rel="noopener"&gt;Vulnerability Lab ↗️&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nvd.nist.gov/search" target="_blank" rel="noopener"&gt;NIST NVD ↗️&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gtfobins.github.io/" target="_blank" rel="noopener"&gt;GTFOBins ↗️&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cirt.net/passwords/" target="_blank" rel="noopener"&gt;Default password database ↗️&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Planting the digital garden</title><link>https://slightlymore.co.uk/planting-the-digital-garden/</link><pubDate>Fri, 21 Nov 2025 00:00:00 +0000</pubDate><guid>https://slightlymore.co.uk/planting-the-digital-garden/</guid><description>&lt;p&gt;After writing &lt;a href="https://slightlymore.co.uk/tap-tap-is-this-thing-still-on"&gt;my notes on revamping the site 🌲&lt;/a&gt;
 I&amp;rsquo;ve stumbled across the new idea of digital gardening as an alternative to blogging. It&amp;rsquo;s not actually that new, but it is to me.&lt;/p&gt;
&lt;p&gt;What I like about it is how close it is to a Zettelkasten and how it allows for notes to be written and published in an unfinished state completely guilt-free. It reminds me of my first website all that time ago where there were pages which had nothing other than an under construction banner.&lt;/p&gt;</description></item><item><title>Deploying a Hugo site using Github Actions</title><link>https://slightlymore.co.uk/deploying-a-hugo-site-using-github-actions/</link><pubDate>Thu, 20 Nov 2025 00:00:00 +0000</pubDate><guid>https://slightlymore.co.uk/deploying-a-hugo-site-using-github-actions/</guid><description>&lt;p&gt;I thought I&amp;rsquo;d share my github action which deploys this site whenever a push a new file to &lt;code&gt;main&lt;/code&gt;. It compiles the site with &lt;code&gt;hugo&lt;/code&gt; and the &lt;code&gt;rsync&lt;/code&gt;s across to the server.&lt;/p&gt;
&lt;p&gt;This means that my workflow is:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;fire up neovim and write&lt;/li&gt;
&lt;li&gt;commit and push&lt;/li&gt;
&lt;li&gt;sit back and wait for the site to update&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The code for the action is below. It requires a couple of secrets to be set up:&lt;/p&gt;</description></item><item><title>About</title><link>https://slightlymore.co.uk/about/</link><pubDate>Tue, 18 Nov 2025 00:00:00 +0000</pubDate><guid>https://slightlymore.co.uk/about/</guid><description>&lt;p&gt;This is yet another variation of a blog by me, Clinton. I am a software engineer working and living in Bath, UK. The goal (this time) is to be somewhere between a blog and a zettelkasten where I&amp;rsquo;ll ramble, write some articles, but also share short facts, notes, and resources.&lt;/p&gt;
&lt;p&gt;The content here is written by me (by which I mean, not AI.) I may use AI to help to plan articles but words will be my own. In fact, as an act of transparency, I&amp;rsquo;ll add Claude (or whatever) as a co-author and expressly note the input if I do use AI for anything anywhere.&lt;/p&gt;</description></item><item><title>How to set up git signing</title><link>https://slightlymore.co.uk/how-to-set-up-git-signing/</link><pubDate>Tue, 03 Sep 2024 00:00:00 +0000</pubDate><guid>https://slightlymore.co.uk/how-to-set-up-git-signing/</guid><description>&lt;ol&gt;
&lt;li&gt;Generate SSH key with passphrase (ssh-keygen)&lt;/li&gt;
&lt;li&gt;Get keychain to remember passphrase &lt;code&gt;ssh-add --apple-use-keychain --apple-load-keychain ~/.ssh/id_ed25519&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Tell git to use SSH for signing: &lt;code&gt;git config --global gpg.format ssh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Tell git about the key &lt;code&gt;git config --global user.signingkey ~/.ssh/id_ed25519.pub&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Auto sign commits &lt;code&gt;git config --global commit.gpgsign true&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="references"&gt;References&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://slightlymore.co.uk/how-to-get-keychain-to-remember-ssh-passphrase"&gt;How to get keychain to remember ssh passphrase 🌿&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>