<?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>服务器安全维护工作室 &#187; 重用 SSH 连接</title>
	<atom:link href="https://www.fuwuqiok.com/tag/%e9%87%8d%e7%94%a8-ssh-%e8%bf%9e%e6%8e%a5/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.fuwuqiok.com</link>
	<description></description>
	<lastBuildDate>Sun, 01 Mar 2020 07:28:40 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.2.26</generator>
	<item>
		<title>重用 SSH 连接</title>
		<link>https://www.fuwuqiok.com/%e9%87%8d%e7%94%a8-ssh-%e8%bf%9e%e6%8e%a5/</link>
		<comments>https://www.fuwuqiok.com/%e9%87%8d%e7%94%a8-ssh-%e8%bf%9e%e6%8e%a5/#comments</comments>
		<pubDate>Tue, 08 Dec 2015 14:04:21 +0000</pubDate>
		<dc:creator><![CDATA[admin]]></dc:creator>
				<category><![CDATA[aliyun服务器代维]]></category>
		<category><![CDATA[服务器迁移]]></category>
		<category><![CDATA[服务器基础环境搭建]]></category>
		<category><![CDATA[重用 SSH 连接]]></category>

		<guid isPermaLink="false">https://www.fuwuqiok.com/?p=2807</guid>
		<description><![CDATA[<p>平时需要经常用到 SSH，比如登录远程服务器，用 Git 推送和更新代码等。建立一次 SSH 连接可能并不需要 [&#8230;]</p>
<p><a rel="nofollow" href="https://www.fuwuqiok.com/%e9%87%8d%e7%94%a8-ssh-%e8%bf%9e%e6%8e%a5/">重用 SSH 连接</a>，首发于<a rel="nofollow" href="https://www.fuwuqiok.com">服务器安全维护工作室</a>。</p>
]]></description>
				<content:encoded><![CDATA[<div class="entry-content">
<p>平时需要经常用到 SSH，比如登录远程服务器，用 Git 推送和更新代码等。建立一次 SSH 连接可能并不需要多久长时间，但是如果要频繁登录同一台服务器，就未免显得有些繁琐和浪费时间。如果是用用户名和密码登录，每次都要输入密码就更加让人崩 溃。还有使用 Git 的时候，短时间内可能需要经常 <code>git pull</code> 和 <code>git push</code>，如果每次操作都需要重新建立连接，等待过程就让人心生厌恶了。</p>
<p>实际上，SSH 有个「鲜为人知」的特性可以做到重用连接，只有在第一次登录的时候会创建新的连接，后续的会话都可以重用这个已经存在的连接。这样，后续的登录就会非常快，而且不需要输入密码认证。配置也很简单，直接上代码。</p>
<p>修改 <code>~/.ssh/config</code> 文件，添加如下配置：</p>
<pre><code class="language-sshconfig">Host *
    ControlMaster auto
    ControlPath /tmp/ssh_mux_%h_%p_%r
    ControlPersist 600
</code></pre>
<p>意思也很好理解：</p>
<p><code>Host *</code> 这一行表示下面这些配置和规则影响到的 host，<code>*</code> 表示所有的远程 host 都生效。如果要指定某个（些）特定的 host，可以使用类似 <code>Host *.example.com</code> 的配置。</p>
<p><code>ControlMaster auto</code> 这个选项告诉 SSH 客户端尝试重用现有的连接（master connection）。</p>
<p><code>ControlPath</code> 指定了这个连接的 socket 保存的路径，这里配置的是在 /tmp 目录，实际上可以在任何有读写权限的路径下。<code>/tmp/ssh_mux_%h_%p_%r</code> 配置了 socket 文件名，<code>%h</code> 表示远程主机名（host），<code>%p</code> 表示远程 SSH 服务器的端口（port），<code>%r</code> 表示登录的远程用户名（remote user name）。这些 socket 可以随时删掉（<code>rm</code>），删除后首次会话又会创建新的 master 连接。曾经遇到过这种情况，本地断网了，打开的几个远程终端都卡死，网络恢复后也一直这样，甚至打开新的终端也登录不上。这个时候只需要把之前的 socket 文件都删掉，重新登录就可以了。</p>
<p><code>ControlPersist</code> 这个选项比较重要，表示在创建首个连接（master connection）的会话退出后，master 连接仍然在后台保留，以便其他复用该连接的会话不会出现问题。这个特性在使用 Git 的时候就非常有用，在频繁提交和拉代码的时候，每次 SSH 会话都是很短暂的，如果 master 连接能保持在后台，后续的操作就会如丝般顺滑。</p>
<p>只需要添加上面几行配置，SSH 的体验就瞬间上升了好几个档次，简直是懒人必备。</p>
</div>
<p><a rel="nofollow" href="https://www.fuwuqiok.com/%e9%87%8d%e7%94%a8-ssh-%e8%bf%9e%e6%8e%a5/">重用 SSH 连接</a>，首发于<a rel="nofollow" href="https://www.fuwuqiok.com">服务器安全维护工作室</a>。</p>
]]></content:encoded>
			<wfw:commentRss>https://www.fuwuqiok.com/%e9%87%8d%e7%94%a8-ssh-%e8%bf%9e%e6%8e%a5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
