<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: chen zong</title>
    <description>The latest articles on DEV Community by chen zong (@chen_zong_43c81f1a65b1a54).</description>
    <link>https://dev.to/chen_zong_43c81f1a65b1a54</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4080717%2F04f31364-806a-461b-8f39-e952910f8ba7.png</url>
      <title>DEV Community: chen zong</title>
      <link>https://dev.to/chen_zong_43c81f1a65b1a54</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/chen_zong_43c81f1a65b1a54"/>
    <language>en</language>
    <item>
      <title>SSH into your servers from your phone: keys, Tailscale, and an AI safety net</title>
      <dc:creator>chen zong</dc:creator>
      <pubDate>Mon, 17 Aug 2026 01:48:50 +0000</pubDate>
      <link>https://dev.to/chen_zong_43c81f1a65b1a54/ssh-into-your-servers-from-your-phone-keys-tailscale-and-an-ai-safety-net-271h</link>
      <guid>https://dev.to/chen_zong_43c81f1a65b1a54/ssh-into-your-servers-from-your-phone-keys-tailscale-and-an-ai-safety-net-271h</guid>
      <description>&lt;p&gt;Every on-call engineer has lived this: an alert fires, you're not at your desk, and all you have is your phone. The laptop-and-VPN scramble takes ten minutes you don't have. Here's a setup that lets you actually fix things from a phone — safely.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Use a real terminal, not a toy
&lt;/h2&gt;

&lt;p&gt;You want an SSH/SFTP client that behaves like a terminal. On iOS/Android the usual names are &lt;strong&gt;Termius&lt;/strong&gt;, &lt;strong&gt;Blink Shell&lt;/strong&gt;, &lt;strong&gt;Termux&lt;/strong&gt;, and &lt;strong&gt;TermAI&lt;/strong&gt;. Whichever you pick, make sure it supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SSH &lt;strong&gt;keys&lt;/strong&gt;, not just passwords&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SFTP&lt;/strong&gt; for pulling and editing configs/logs&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;key-agent&lt;/strong&gt; so you're not retyping a passphrase on every reconnect&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2. Keys, stored right
&lt;/h2&gt;

&lt;p&gt;Password auth on an internet-facing box is asking for trouble. Generate an ed25519 key:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh-keygen &lt;span class="nt"&gt;-t&lt;/span&gt; ed25519 &lt;span class="nt"&gt;-C&lt;/span&gt; &lt;span class="s2"&gt;"phone"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Put the public key in the server's &lt;code&gt;~/.ssh/authorized_keys&lt;/code&gt;, import the &lt;strong&gt;private&lt;/strong&gt; key into your mobile client's key store, then turn password auth off in &lt;code&gt;sshd_config&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ssh"&gt;&lt;code&gt;&lt;span class="k"&gt;PasswordAuthentication&lt;/span&gt; &lt;span class="no"&gt;no&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  3. Reach private servers without opening ports
&lt;/h2&gt;

&lt;p&gt;Most of your boxes shouldn't expose SSH to the internet at all. Instead of port-forwarding, put them on a mesh VPN like &lt;strong&gt;Tailscale&lt;/strong&gt; — your phone joins the tailnet and you SSH straight to the private IP. Some mobile clients ship Tailscale built in, which saves you juggling two apps and a login.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. The part that matters at 3 a.m.: don't fat-finger prod
&lt;/h2&gt;

&lt;p&gt;Typing &lt;code&gt;systemctl restart&lt;/code&gt; against the wrong host, on a phone keyboard, half-awake, is a real failure mode. This is where an AI &lt;strong&gt;assistant&lt;/strong&gt; earns its keep — but the &lt;em&gt;mode&lt;/em&gt; is everything. You want &lt;strong&gt;suggest-then-confirm&lt;/strong&gt; (the tool proposes a command, you read it, then you run it), not an autonomous agent that executes on its own. On a production box, "read before you run" is the whole game.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrap-up
&lt;/h2&gt;

&lt;p&gt;Phone-based ops isn't about replacing your laptop. It's about the five minutes that stop a small incident from becoming a big one. &lt;strong&gt;Keys + a mesh VPN + a suggest-then-confirm assistant&lt;/strong&gt; is a setup you can actually trust while you're on call.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Disclosure: I build &lt;a href="https://termai.sh" rel="noopener noreferrer"&gt;TermAI&lt;/a&gt;, a mobile SSH terminal that bundles SFTP, built-in Tailscale, and a suggest-then-confirm AI assistant — but the setup above works with whatever client you prefer.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ssh</category>
      <category>devops</category>
      <category>mobile</category>
    </item>
  </channel>
</rss>
