iTerm 2打造ssh完美连接Linux服务器快捷方法
<style>.login-box { position: fixed; display: none; left: 50%; top: 50%; z-index: 10000; -webkit-transform: translate(-50%, -50%); -ms-transform: translate(-50%, -50%); -o-transform: translate(-50%, -50%); -moz-transform: translate(-50%, -50%); transform: translate(-50%, -50%); background-color: rgba(255, 255, 255, 1) }.login-mark { position: fixed; top: 0; left: 0; z-index: 9999; background-color: rgba(0, 0, 0, 0.5); width: 100%; height: 100%; display: none }</style>
<div id="csdn-toolbar" class="csdn-toolbar tb_disnone ">
<div class="container row center-block ">
<p> </p>
</div>
</div>
<div class="container clearfix">
<div class="container clearfix">
<div class="blog-content-box">
<div class="article-header-box">
<div class="article-header">
<div class="article-title-box">
<h1 class="title-article">iTerm 2打造ssh完美连接Linux服务器快捷方法</h1>
</div>
<div class="article-info-box">
<div class="article-bar-top" style="height: 24px"><span class="time">2019年05月02日 10:40:19</span> Mars0908 <span class="read-count">阅读数 213</span><span class="article_info_click" style="position: static">更多</span>
<div class="tags-box space"><span class="label">个人分类:</span> Mac下开发 </div>
</div>
<div class="operating"> </div>
</div>
</div>
</div>
<div id="article_content" class="article_content clearfix">
<div class="article-copyright"><span class="creativecommons"><span class="creativecommons"> <span>版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 </span></span></span>
<div class="article-source-link2222">原文链接:https://blog.csdn.net/OMars/article/details/89627642</div>
</div>
<div id="content_views" class="markdown_views prism-atom-one-dark">
<p> 使用MacOS系统的同学都知道iterm2,怎么打造最强终端的方案iTerm2 + Zsh + vim,大家有兴趣可以去搜一下,这里主要介绍ssh完美连接Linux服务器方案。<br>
经常和服务器打交道,免不了要远程连接服务器,怎么使用iterm2连接服务器,网上一搜一大把。但由于iterm2默认不能使用rz指令上传文件,以及我现在公司远程登录测试服务器,采用的方案是需要先通过跳板机登录。而且往往都会为每一位开发配置一个token,动态的产生一个6位的数字串,用来作为登录密码。<br>
网上的一些方法总会不那么完美,在这里做个整理,顺便结合我的测试,提供一个我自己实践出来的完美解决方案。</p>
<hr>
<h3>方案一:expect+配置文件</h3>
<p>expect连接的方式有两种:</p>
<h5>第一种 expect脚本文件</h5>
<p>1.在一个目录下创建一个expect脚本文件,建议在自己的.ssh目录下,为了分类可以有子目录。<br>
内容如下:</p>
<pre class="prettyprint"><code class="has-numbering" style="position: unset">#!/usr/bin/expect -f
set user xxx
set password xxxxx
set host xxxxx
set port 22
set timeout -1
spawn ssh $user@$host
expect "*assword:*"
send "$password\r"
interact
expect eof</code></pre>
<div class="hljs-button {2}" data-title="复制"> </div>
<p style="color: rgba(153, 153, 153, 1)"> </p>
<p style="color: rgba(153, 153, 153, 1)"> </p>
<p>2.进入iterm2->preference->profiles<br>
新建一个登录标签,内容如下<br>
<img src="https://img-blog.csdnimg.cn/20190502085843632.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L09NYXJz,size_16,color_FFFFFF,t_70"><br>
在send text at start 处输入指令<br>
expect /Users/xxx/.ssh/vmware/login_xxx</p>
<p>然后在profiles下点击具体标签就可以登陆了<br>
<img src="https://img-blog.csdnimg.cn/2019050209022026.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L09NYXJz,size_16,color_FFFFFF,t_70"></p>
<h4>第二种 登录脚本加参数</h4>
<p>1.创建登录脚本 item2login.sh</p>
<pre class="prettyprint"><code class="has-numbering" style="position: unset">#!/usr/bin/expect
set timeout 30
spawn ssh -p @
expect {
"(yes/no)?"
{send "yes\n";exp_continue}
"password:"
{send "\n"}
}
interact</code></pre>
<div class="hljs-button {2}" data-title="复制"> </div>
<ul class="pre-numbering">
<li style="color: rgba(153, 153, 153, 1)">1</li>
<li style="color: rgba(153, 153, 153, 1)">2</li>
<li style="color: rgba(153, 153, 153, 1)">3</li>
<li style="color: rgba(153, 153, 153, 1)">4</li>
<li style="color: rgba(153, 153, 153, 1)">5</li>
<li style="color: rgba(153, 153, 153, 1)">6</li>
<li style="color: rgba(153, 153, 153, 1)">7</li>
<li style="color: rgba(153, 153, 153, 1)">8</li>
<li style="color: rgba(153, 153, 153, 1)">9</li>
<li style="color: rgba(153, 153, 153, 1)">10</li>
</ul>
<p>2.授予执行权限<br>
chmod +x item2login.sh</p>
<p>3.进入iterm2->preference->profiles<br>
<img src="https://img-blog.csdnimg.cn/20190502094459623.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L09NYXJz,size_16,color_FFFFFF,t_70">在send text at start 处输入指令<br>
~/.ssh/item2login.sh 22 用户 ip 密码</p>
<p>以上是expect的两种登录方式,各有各的好处,登录服务器,进行相关操作都没问题,不过当你需要上传下载文件就会有问题。<br>
首先iterm默认不支持rz相关指令,不过对于如何配置iterm2的lrzsz,网上有具体操作文档,我这里就不再叙述了<br>
用expect的方式登录服务器,用rz、sz进行相关操作时,显示都是没问题的,可以正常选择上传文件或者选择下载目录,没有抛出任何异常但是最后上传文件也找不到不过文件却不能成功上传下载。<br>
而且我在实际使用过程中,还发现这种登录方式对于scp 的指令支持的不是很好输入scp 后面接文件,使用tab键进行目录或者文件提示的时候,会报错,如下图<br>
<img src="https://img-blog.csdnimg.cn/20190502101152565.png"></p>
<h3>方案二: sshpass指令登录</h3>
<p>1.安装sshpass<br>
具体安装方法如下:</p>
<pre class="prettyprint"><code class="has-numbering" style="position: unset">sudo brew install http://git.io/sshpass.rb</code></pre>
<div class="hljs-button {2}" data-title="复制"> </div>
<ul class="pre-numbering">
<li style="color: rgba(153, 153, 153, 1)">1</li>
</ul>
<p>2.进入iterm2->preference->profiles<br>
创建登录标签,在send text at start 处输入指令</p>
<pre class="prettyprint"><code class="has-numbering" style="position: unset">/usr/local/bin/sshpass-o StrictHostKeyChecking=no -p 22 passwrod ssh userName@ip</code></pre>
<div class="hljs-button {2}" data-title="复制"> </div>
<ul class="pre-numbering">
<li style="color: rgba(153, 153, 153, 1)">1</li>
</ul>
<p>这种方式登录,可以使用rz/sz指令,对于使用账号密码登录服务器的同学已经可以了。但是对于通过跳板机登录,为每一位开发配置一个token,动态的产生一个6位的数字串,用来作为登录校验的方式会有问题,不能出现输入提示,一直在等待中,就像下图一样,我们公司恰巧就是这种情况,对于这种情况我没有在网上搜到相关的解决方案,不过经过我的尝试,成功搞出了一种解决方案。<br>
<img src="https://img-blog.csdnimg.cn/20190502100409552.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L09NYXJz,size_16,color_FFFFFF,t_70"></p>
<h3>方案三: ssh指令登录</h3>
<p> 其实这种方式也是最基本的方式,前几种方式都是使用的loginshell的方式,其实iterm还有command 的方式让你输入登录指令的,直接ssh登录就可以,只是这种方式需要手动输入密码,对于每次都要输入动态码的方式,只能每次都输入了,如下图<br>
<img src="https://img-blog.csdnimg.cn/20190502101608425.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L09NYXJz,size_16,color_FFFFFF,t_70">然后,sshpass的问题就得到解决了<br>
<img src="https://img-blog.csdnimg.cn/20190502102021750.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L09NYXJz,size_16,color_FFFFFF,t_70"><br>
不过对于这种情况,相当于新建一个新建一个shell标签就得输入随机码,也很不方便,但Mac版的secureCRT支持克隆会话,且直接登录服务器。对于MAC下iterm2 实现clone session,实现起来也比较简单。</p>
<h3>克隆会话</h3>
<p>在~目录下的.ssh文件夹冲创建一个config文件<br>
如果已经有的话,可以直接把内容添加进入,创建其他文件名是不行的<br>
文件内容输入:</p>
<pre class="prettyprint"><code class="has-numbering" style="position: unset"> host *
ControlMaster auto
ControlPath ~/.ssh/master-%r@%h:%p</code></pre>
<div class="hljs-button {2}" data-title="复制"> </div>
<p style="color: rgba(153, 153, 153, 1)"> </p>
</div>
</div>
</div>
</div>
</div>
<div class="report-box"> </div>
<div class="imgViewDom disnone" style="display: none"><img alt=""></div>
<style>.imgViewDom { display: none; position: fixed; top: 0; left: 0; height: 100%; width: 100%; z-index: 99999999; background: rgba(255, 255, 255, 0.8); overflow: auto; -webkit-box-align: center; -webkit-box-pack: center; -moz-box-align: center; -moz-box-pack: center; -o-box-align: center; -o-box-pack: center; -ms-box-align: center; -ms-box-pack: center; box-align: center; box-pack: center }
.imgViewDom img { cursor: zoom-out }</style>
<p></p>
<div id="bdSug_1566379973248" class="bdSug_wpr" style="display: none"> </div>
<style>.MathJax, .MathJax_Message, .MathJax_Preview { display: none }</style>
<style>newsfeed { display: block }
newsfeed .img { background-size: cover; background-repeat: no-repeat }
.QIHOO__WEB__SO__1566379971871_946 info-div { display: block }
.QIHOO__WEB__SO__1566379971871_946 .singleImage { background-color: rgba(255, 255, 255, 1); padding: 10px 0 0; overflow: hidden; width: 900px; height: 74px; cursor: pointer; position: relative }
.QIHOO__WEB__SO__1566379971871_946 .singleImage .wrap { position: relative; width: 900px; height: 74px }
.QIHOO__WEB__SO__1566379971871_946 .singleImage .visited .singleImage-title { color: rgba(158, 158, 158, 1) }
.QIHOO__WEB__SO__1566379971871_946 .singleImage .singleImage-img { width: 90px; height: 60px; padding: 0; display: block }
.QIHOO__WEB__SO__1566379971871_946 .singleImage .singleImage-img-left { float: left }
.QIHOO__WEB__SO__1566379971871_946 .singleImage .singleImage-img-right { float: right }
.QIHOO__WEB__SO__1566379971871_946 .singleImage .singleImage-img-top { position: absolute; top: 0 }
.QIHOO__WEB__SO__1566379971871_946 .singleImage .singleImage-img-bottom { position: absolute; bottom: 0 }
.QIHOO__WEB__SO__1566379971871_946 .singleImage .singleImage-img .img { width: 90px; height: 60px; border-radius: 3px; position: relative }
.QIHOO__WEB__SO__1566379971871_946 .singleImage .singleImage-body { width: 810px; height: 74px }
.QIHOO__WEB__SO__1566379971871_946 .singleImage .singleImage-body-left { float: left }
.QIHOO__WEB__SO__1566379971871_946 .singleImage .singleImage-body-right { float: left }
.QIHOO__WEB__SO__1566379971871_946 .singleImage .singleImage-body-top { position: absolute; bottom: 0 }
.QIHOO__WEB__SO__1566379971871_946 .singleImage .singleImage-body-bottom { position: absolute; top: 0 }
.QIHOO__WEB__SO__1566379971871_946 .singleImage .singleImage-title { font-size: 18px; font-family: Lato, -apple-system, SF UI Text, Arial, PingFang SC, Hiragino Sans GB, Microsoft YaHei, WenQuanYi Micro Hei, sans-serif; font-weight: bold; color: rgba(0, 0, 0, 1); padding: 0 0 5px 16px; display: block; overflow: hidden; white-space: nowrap; text-overflow: ellipsis }
.QIHOO__WEB__SO__1566379971871_946 .singleImage .singleImage-title:hover { color: rgba(0, 0, 0, 1) }
.QIHOO__WEB__SO__1566379971871_946 .singleImage .singleImage-desc { font-size: 14px; font-family: Microsoft Yahei; color: rgba(142, 149, 154, 1); display: block; padding: 0 0 0 16px; overflow: hidden; white-space: nowrap }
.QIHOO__WEB__SO__1566379971871_946 .singleImage .ads-tag { position: absolute; top: 0; right: 0; width: 22px; height: 12px; background-image: url("//p0.ssl.qhimg.com/t01c5fc7f8612d6b610.png") }
.QIHOO__WEB__SO__1566379971871_946 .mulImage .visited .mulimg-title { color: rgba(158, 158, 158, 1) }
.QIHOO__WEB__SO__1566379971871_946 .mulImage { width: 900px; overflow: hidden; cursor: pointer }
.QIHOO__WEB__SO__1566379971871_946 .mulImage .mulimg-wrapper { position: relative; vertical-align: top; width: 900px }
.QIHOO__WEB__SO__1566379971871_946 .mulImage .mulimg-title { overflow: hidden; line-height: 1.3; white-space: nowrap; text-overflow: ellipsis; letter-spacing: 0.05em }
.QIHOO__WEB__SO__1566379971871_946 .mulImage .mulimg-title:hover { }
.QIHOO__WEB__SO__1566379971871_946 .mulImage .mulimg-grid-wrap { position: relative }
.QIHOO__WEB__SO__1566379971871_946 .mulImage .mulimg-figure-grid { overflow: hidden }
.QIHOO__WEB__SO__1566379971871_946 .mulImage .mulimg-figure { float: left }
.QIHOO__WEB__SO__1566379971871_946 .mulImage .mulimg-figure-img { overflow: hidden; position: relative }
.QIHOO__WEB__SO__1566379971871_946 .mulImage .mulimg-figure-img .img { }
.QIHOO__WEB__SO__1566379971871_946 .mulImage .mulimg-extra { color: rgba(153, 153, 153, 1); overflow: hidden; white-space: nowrap }
.QIHOO__WEB__SO__1566379971871_946 .mulImage .mulimg-extra .mul-ads-tag { width: 30px; color: rgba(221, 221, 221, 1); font-size: 12px; display: inline }
.QIHOO__WEB__SO__1566379971871_946 .mulImage .mulimg-extra .ads-tag { font-size: 12px; color: rgba(153, 153, 153, 1); display: inline }
.QIHOO__WEB__SO__1566379971871_946 .mulImageWindow .visited .mulimg-title { color: rgba(158, 158, 158, 1) }
.QIHOO__WEB__SO__1566379971871_946 .mulImageWindow { width: 900px; overflow: hidden; cursor: pointer }
.QIHOO__WEB__SO__1566379971871_946 .mulImageWindow .mulimg-wrapper { position: relative; vertical-align: top; width: 900px }
.QIHOO__WEB__SO__1566379971871_946 .mulImageWindow .mulimg-title { overflow: hidden; line-height: 1.3; white-space: nowrap; text-overflow: ellipsis; letter-spacing: 0.05em }
.QIHOO__WEB__SO__1566379971871_946 .mulImageWindow .mulimg-title:hover { }
.QIHOO__WEB__SO__1566379971871_946 .mulImageWindow .mulimg-grid-wrap { position: relative }
.QIHOO__WEB__SO__1566379971871_946 .mulImageWindow .mulimg-figure-grid { overflow: hidden }
.QIHOO__WEB__SO__1566379971871_946 .mulImageWindow .mulimg-figure { float: left }
.QIHOO__WEB__SO__1566379971871_946 .mulImageWindow .mulimg-figure-img { overflow: hidden; position: relative }
.QIHOO__WEB__SO__1566379971871_946 .mulImageWindow .mulimg-figure-img .img { }
.QIHOO__WEB__SO__1566379971871_946 .mulImageWindow .mulimg-figure-img .window-item__title { display: block; width: 100%; position: absolute; bottom: 0; background-color: rgba(0, 0, 0, 0.5); filter: progid:DXImageTransform.Microsoft.gradient(startcolorstr=#88000000, endcolorstr=#88000000); color: rgba(255, 255, 255, 1); line-height: 1.5; text-align: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis }
.QIHOO__WEB__SO__1566379971871_946 .mulImageWindow .mulimg-extra { color: rgba(153, 153, 153, 1); overflow: hidden; white-space: nowrap }
.QIHOO__WEB__SO__1566379971871_946 .mulImageWindow .mulimg-extra .mul-ads-tag { width: 30px; color: rgba(221, 221, 221, 1); font-size: 12px; display: inline }
.QIHOO__WEB__SO__1566379971871_946 .mulImageWindow .mulimg-extra .ads-tag { font-size: 12px; color: rgba(153, 153, 153, 1); display: inline }
.QIHOO__WEB__SO__1566379971871_946 .largeImage .visited .largeImage-title { color: rgba(158, 158, 158, 1) }
.QIHOO__WEB__SO__1566379971871_946 .largeImage { width: 900px; overflow: hidden; cursor: pointer }
.QIHOO__WEB__SO__1566379971871_946 .largeImage .largeImage-wrapper { position: relative; vertical-align: top; width: 900px }
.QIHOO__WEB__SO__1566379971871_946 .largeImage .largeImage-title { display: none; overflow: hidden; line-height: 1.3; white-space: nowrap; text-overflow: ellipsis; letter-spacing: 0.05em }
.QIHOO__WEB__SO__1566379971871_946 .largeImage .largeImage-title:hover { }
.QIHOO__WEB__SO__1566379971871_946 .largeImage .largeImage-body { position: relative; vertical-align: top }
.QIHOO__WEB__SO__1566379971871_946 .largeImage .largeImage-grid-wrap { position: relative }
.QIHOO__WEB__SO__1566379971871_946 .largeImage .largeImage-grid-wrap .img { position: relative }
.QIHOO__WEB__SO__1566379971871_946 .largeImage .largeImage-extra { display: none; color: rgba(153, 153, 153, 1); overflow: hidden; white-space: nowrap }
.QIHOO__WEB__SO__1566379971871_946 .largeImage .largeImage-extra .largeImage-ad-tag { width: 30px; color: rgba(221, 221, 221, 1); font-size: 12px; display: inline }
.QIHOO__WEB__SO__1566379971871_946 .largeImage .largeImage-extra .largeImage-ad-src { font-size: 12px; color: rgba(153, 153, 153, 1); display: inline }
.QIHOO__WEB__SO__1566379971871_946 .largeImage .ads-tag { position: absolute; display: block; top: 0; right: 0; width: 22px; height: 12px; background-image: url("//p0.ssl.qhimg.com/t01c5fc7f8612d6b610.png") }
.QIHOO__WEB__SO__1566379971877_637 info-div { display: block }
.QIHOO__WEB__SO__1566379971877_637 .singleImage { background-color: rgba(255, 255, 255, 1); padding: 0; overflow: hidden; width: 852px; height: 60px; cursor: pointer; position: relative }
.QIHOO__WEB__SO__1566379971877_637 .singleImage .wrap { position: relative; width: 852px; height: 60px }
.QIHOO__WEB__SO__1566379971877_637 .singleImage .visited .singleImage-title { color: rgba(158, 158, 158, 1) }
.QIHOO__WEB__SO__1566379971877_637 .singleImage .singleImage-img { width: 90px; height: 60px; padding: 0; display: block }
.QIHOO__WEB__SO__1566379971877_637 .singleImage .singleImage-img-left { float: left }
.QIHOO__WEB__SO__1566379971877_637 .singleImage .singleImage-img-right { float: right }
.QIHOO__WEB__SO__1566379971877_637 .singleImage .singleImage-img-top { position: absolute; top: 0 }
.QIHOO__WEB__SO__1566379971877_637 .singleImage .singleImage-img-bottom { position: absolute; bottom: 0 }
.QIHOO__WEB__SO__1566379971877_637 .singleImage .singleImage-img .img { width: 90px; height: 60px; border-radius: 3px; position: relative }
.QIHOO__WEB__SO__1566379971877_637 .singleImage .singleImage-body { width: 762px; height: 60px }
.QIHOO__WEB__SO__1566379971877_637 .singleImage .singleImage-body-left { float: left }
.QIHOO__WEB__SO__1566379971877_637 .singleImage .singleImage-body-right { float: left }
.QIHOO__WEB__SO__1566379971877_637 .singleImage .singleImage-body-top { position: absolute; bottom: 0 }
.QIHOO__WEB__SO__1566379971877_637 .singleImage .singleImage-body-bottom { position: absolute; top: 0 }
.QIHOO__WEB__SO__1566379971877_637 .singleImage .singleImage-title { font-size: 18px; font-family: Lato, -apple-system, SF UI Text, Arial, PingFang SC, Hiragino Sans GB, Microsoft YaHei, WenQuanYi Micro Hei, sans-serif; font-weight: bold; color: rgba(0, 0, 0, 1); padding: 0 0 5px 16px; display: block; overflow: hidden; white-space: nowrap; text-overflow: ellipsis }
.QIHOO__WEB__SO__1566379971877_637 .singleImage .singleImage-title:hover { color: rgba(0, 0, 0, 1) }
.QIHOO__WEB__SO__1566379971877_637 .singleImage .singleImage-desc { font-size: 14px; font-family: Microsoft Yahei; color: rgba(142, 149, 154, 1); display: block; padding: 0 0 0 16px; overflow: hidden; white-space: nowrap }
.QIHOO__WEB__SO__1566379971877_637 .singleImage .ads-tag { position: absolute; top: 0; right: 0; width: 22px; height: 12px; background-image: url("//p0.ssl.qhimg.com/t01c5fc7f8612d6b610.png") }
.QIHOO__WEB__SO__1566379971877_637 .mulImage .visited .mulimg-title { color: rgba(158, 158, 158, 1) }
.QIHOO__WEB__SO__1566379971877_637 .mulImage { width: 852px; overflow: hidden; cursor: pointer }
.QIHOO__WEB__SO__1566379971877_637 .mulImage .mulimg-wrapper { position: relative; vertical-align: top; width: 852px }
.QIHOO__WEB__SO__1566379971877_637 .mulImage .mulimg-title { overflow: hidden; line-height: 1.3; white-space: nowrap; text-overflow: ellipsis; letter-spacing: 0.05em }
.QIHOO__WEB__SO__1566379971877_637 .mulImage .mulimg-title:hover { }
.QIHOO__WEB__SO__1566379971877_637 .mulImage .mulimg-grid-wrap { position: relative }
.QIHOO__WEB__SO__1566379971877_637 .mulImage .mulimg-figure-grid { overflow: hidden }
.QIHOO__WEB__SO__1566379971877_637 .mulImage .mulimg-figure { float: left }
.QIHOO__WEB__SO__1566379971877_637 .mulImage .mulimg-figure-img { overflow: hidden; position: relative }
.QIHOO__WEB__SO__1566379971877_637 .mulImage .mulimg-figure-img .img { }
.QIHOO__WEB__SO__1566379971877_637 .mulImage .mulimg-extra { color: rgba(153, 153, 153, 1); overflow: hidden; white-space: nowrap }
.QIHOO__WEB__SO__1566379971877_637 .mulImage .mulimg-extra .mul-ads-tag { width: 30px; color: rgba(221, 221, 221, 1); font-size: 12px; display: inline }
.QIHOO__WEB__SO__1566379971877_637 .mulImage .mulimg-extra .ads-tag { font-size: 12px; color: rgba(153, 153, 153, 1); display: inline }
.QIHOO__WEB__SO__1566379971877_637 .mulImageWindow .visited .mulimg-title { color: rgba(158, 158, 158, 1) }
.QIHOO__WEB__SO__1566379971877_637 .mulImageWindow { width: 852px; overflow: hidden; cursor: pointer }
.QIHOO__WEB__SO__1566379971877_637 .mulImageWindow .mulimg-wrapper { position: relative; vertical-align: top; width: 852px }
.QIHOO__WEB__SO__1566379971877_637 .mulImageWindow .mulimg-title { overflow: hidden; line-height: 1.3; white-space: nowrap; text-overflow: ellipsis; letter-spacing: 0.05em }
.QIHOO__WEB__SO__1566379971877_637 .mulImageWindow .mulimg-title:hover { }
.QIHOO__WEB__SO__1566379971877_637 .mulImageWindow .mulimg-grid-wrap { position: relative }
.QIHOO__WEB__SO__1566379971877_637 .mulImageWindow .mulimg-figure-grid { overflow: hidden }
.QIHOO__WEB__SO__1566379971877_637 .mulImageWindow .mulimg-figure { float: left }
.QIHOO__WEB__SO__1566379971877_637 .mulImageWindow .mulimg-figure-img { overflow: hidden; position: relative }
.QIHOO__WEB__SO__1566379971877_637 .mulImageWindow .mulimg-figure-img .img { }
.QIHOO__WEB__SO__1566379971877_637 .mulImageWindow .mulimg-figure-img .window-item__title { display: block; width: 100%; position: absolute; bottom: 0; background-color: rgba(0, 0, 0, 0.5); filter: progid:DXImageTransform.Microsoft.gradient(startcolorstr=#88000000, endcolorstr=#88000000); color: rgba(255, 255, 255, 1); line-height: 1.5; text-align: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis }
.QIHOO__WEB__SO__1566379971877_637 .mulImageWindow .mulimg-extra { color: rgba(153, 153, 153, 1); overflow: hidden; white-space: nowrap }
.QIHOO__WEB__SO__1566379971877_637 .mulImageWindow .mulimg-extra .mul-ads-tag { width: 30px; color: rgba(221, 221, 221, 1); font-size: 12px; display: inline }
.QIHOO__WEB__SO__1566379971877_637 .mulImageWindow .mulimg-extra .ads-tag { font-size: 12px; color: rgba(153, 153, 153, 1); display: inline }
.QIHOO__WEB__SO__1566379971877_637 .largeImage .visited .largeImage-title { color: rgba(158, 158, 158, 1) }
.QIHOO__WEB__SO__1566379971877_637 .largeImage { width: 852px; overflow: hidden; cursor: pointer }
.QIHOO__WEB__SO__1566379971877_637 .largeImage .largeImage-wrapper { position: relative; vertical-align: top; width: 852px }
.QIHOO__WEB__SO__1566379971877_637 .largeImage .largeImage-title { display: none; overflow: hidden; line-height: 1.3; white-space: nowrap; text-overflow: ellipsis; letter-spacing: 0.05em }
.QIHOO__WEB__SO__1566379971877_637 .largeImage .largeImage-title:hover { }
.QIHOO__WEB__SO__1566379971877_637 .largeImage .largeImage-body { position: relative; vertical-align: top }
.QIHOO__WEB__SO__1566379971877_637 .largeImage .largeImage-grid-wrap { position: relative }
.QIHOO__WEB__SO__1566379971877_637 .largeImage .largeImage-grid-wrap .img { position: relative }
.QIHOO__WEB__SO__1566379971877_637 .largeImage .largeImage-extra { display: none; color: rgba(153, 153, 153, 1); overflow: hidden; white-space: nowrap }
.QIHOO__WEB__SO__1566379971877_637 .largeImage .largeImage-extra .largeImage-ad-tag { width: 30px; color: rgba(221, 221, 221, 1); font-size: 12px; display: inline }
.QIHOO__WEB__SO__1566379971877_637 .largeImage .largeImage-extra .largeImage-ad-src { font-size: 12px; color: rgba(153, 153, 153, 1); display: inline }
.QIHOO__WEB__SO__1566379971877_637 .largeImage .ads-tag { position: absolute; display: block; top: 0; right: 0; width: 22px; height: 12px; background-image: url("//p0.ssl.qhimg.com/t01c5fc7f8612d6b610.png") }</style>
<style>pre { position: relative }
pre:hover .hljs-button { display: block }
.hljs-button { display: none; position: absolute; right: 4px; top: 4px; font-size: 12px; color: rgba(77, 77, 77, 1); background-color: rgba(255, 255, 255, 1); padding: 2px 8px; margin: 8px; border-radius: 4px; cursor: pointer; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05), 0 2px 4px rgba(0, 0, 0, 0.05) }
.hljs-button:after { content: attr(data-title) }
code .hljs-button { margin: 2px 8px }</style>
<style>.hljs-ln { border-collapse: collapse }
.hljs-ln td { padding: 0 }
.hljs-ln-n { text-align: right; padding-right: 8px }
.hljs-ln-n:before { content: attr(data-line-number) }</style>
<style>.MathJax_Hover_Frame { border-radius: 0.25em; -webkit-border-radius: .25em; -moz-border-radius: .25em; -khtml-border-radius: .25em; box-shadow: 0 0 15px rgba(136, 51, 170, 1); -webkit-box-shadow: 0px 0px 15px #83A; -moz-box-shadow: 0px 0px 15px #83A; -khtml-box-shadow: 0px 0px 15px #83A; display: inline-block; position: absolute }
.MathJax_Menu_Button .MathJax_Hover_Arrow { position: absolute; cursor: pointer; display: inline-block; border: 2px solid rgba(170, 170, 170, 1); border-radius: 4px; -webkit-border-radius: 4px; -moz-border-radius: 4px; -khtml-border-radius: 4px; font-family: "Courier New", Courier; font-size: 9px; color: rgba(240, 240, 240, 1) }
.MathJax_Menu_Button .MathJax_Hover_Arrow span { display: block; background-color: rgba(170, 170, 170, 1); border: 1px solid; border-radius: 3px; line-height: 0; padding: 4px }
.MathJax_Hover_Arrow:hover { color: rgba(255, 255, 255, 1) !important; border: 2px solid rgba(204, 204, 204, 1) !important }
.MathJax_Hover_Arrow:hover span { background-color: rgba(204, 204, 204, 1) !important }</style>
<style>#MathJax_About { position: fixed; left: 50%; width: auto; text-align: center; border: 3px outset; padding: 1em 2em; background-color: rgba(221, 221, 221, 1); color: rgba(0, 0, 0, 1); cursor: default; font-family: message-box; font-size: 120%; font-style: normal; text-indent: 0; text-transform: none; line-height: normal; letter-spacing: normal; word-spacing: normal; word-wrap: normal; white-space: nowrap; float: none; z-index: 201; border-radius: 15px; -webkit-border-radius: 15px; -moz-border-radius: 15px; -khtml-border-radius: 15px; box-shadow: 0 10px 20px rgba(128, 128, 128, 1); -webkit-box-shadow: 0px 10px 20px #808080; -moz-box-shadow: 0px 10px 20px #808080; -khtml-box-shadow: 0px 10px 20px #808080; filter: progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true') }
#MathJax_About.MathJax_MousePost { outline: none }
.MathJax_Menu { position: absolute; background-color: rgba(255, 255, 255, 1); color: rgba(0, 0, 0, 1); width: auto; padding: 5px 0; border: 1px solid rgba(204, 204, 204, 1); margin: 0; cursor: default; font:/ normal menu; text-align: left; text-indent: 0; text-transform: none; letter-spacing: normal; word-spacing: normal; word-wrap: normal; white-space: nowrap; float: none; z-index: 201; border-radius: 5px; -webkit-border-radius: 5px; -moz-border-radius: 5px; -khtml-border-radius: 5px; box-shadow: 0 10px 20px rgba(128, 128, 128, 1); -webkit-box-shadow: 0px 10px 20px #808080; -moz-box-shadow: 0px 10px 20px #808080; -khtml-box-shadow: 0px 10px 20px #808080; filter: progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true') }
.MathJax_MenuItem { padding: 1px 2em; background: rgba(0, 0, 0, 0) }
.MathJax_MenuArrow { position: absolute; right: 0.5em; padding-top: 0.25em; color: rgba(102, 102, 102, 1); font-size: 0.75em }
.MathJax_MenuActive .MathJax_MenuArrow { color: rgba(255, 255, 255, 1) }
.MathJax_MenuArrow.RTL { left: 0.5em; right: auto }
.MathJax_MenuCheck { position: absolute; left: 0.7em }
.MathJax_MenuCheck.RTL { right: 0.7em; left: auto }
.MathJax_MenuRadioCheck { position: absolute; left: 0.7em }
.MathJax_MenuRadioCheck.RTL { right: 0.7em; left: auto }
.MathJax_MenuLabel { padding: 1px 2em 3px 1.33em; font-style: italic }
.MathJax_MenuRule { border-top: 1px solid rgba(221, 221, 221, 1); margin: 4px 3px }
.MathJax_MenuDisabled { color: rgba(128, 128, 128, 1) }
.MathJax_MenuActive { background-color: rgba(96, 104, 114, 1); color: rgba(255, 255, 255, 1) }
.MathJax_MenuDisabled:focus, .MathJax_MenuLabel:focus { background-color: rgba(232, 232, 232, 1) }
.MathJax_ContextMenu:focus { outline: none }
.MathJax_ContextMenu .MathJax_MenuItem:focus { outline: none }
#MathJax_AboutClose { top: 0.2em; right: 0.2em }
.MathJax_Menu .MathJax_MenuClose { top: -10px; left: -10px }
.MathJax_MenuClose { position: absolute; cursor: pointer; display: inline-block; border: 2px solid rgba(170, 170, 170, 1); border-radius: 18px; -webkit-border-radius: 18px; -moz-border-radius: 18px; -khtml-border-radius: 18px; font-family: "Courier New", Courier; font-size: 24px; color: rgba(240, 240, 240, 1) }
.MathJax_MenuClose span { display: block; background-color: rgba(170, 170, 170, 1); border: 1.5px solid; border-radius: 18px; -webkit-border-radius: 18px; -moz-border-radius: 18px; -khtml-border-radius: 18px; line-height: 0; padding: 8px 0 6px }
.MathJax_MenuClose:hover { color: rgba(255, 255, 255, 1) !important; border: 2px solid rgba(204, 204, 204, 1) !important }
.MathJax_MenuClose:hover span { background-color: rgba(204, 204, 204, 1) !important }
.MathJax_MenuClose:hover:focus { outline: none }</style>
<style>.MathJax_Preview .MJXf-math { color: inherit !important }</style>
<style>.MJX_Assistive_MathML { position: absolute !important; top: 0; left: 0; clip: rect(1px, 1px, 1px, 1px); padding: 1px 0 0 !important; border: 0 !important; height: 1px !important; width: 1px !important; overflow: hidden !important; display: block !important; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none }
.MJX_Assistive_MathML.MJX_Assistive_MathML_Block { width: 100% !important }</style>
<style>#MathJax_Zoom { position: absolute; background-color: rgba(240, 240, 240, 1); overflow: auto; display: block; z-index: 301; padding: 0.5em; border: 1px solid rgba(0, 0, 0, 1); margin: 0; font-weight: normal; font-style: normal; text-align: left; text-indent: 0; text-transform: none; line-height: normal; letter-spacing: normal; word-spacing: normal; word-wrap: normal; white-space: nowrap; float: none; -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; box-shadow: 5px 5px 15px rgba(170, 170, 170, 1); -webkit-box-shadow: 5px 5px 15px #AAAAAA; -moz-box-shadow: 5px 5px 15px #AAAAAA; -khtml-box-shadow: 5px 5px 15px #AAAAAA; filter: progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true') }
#MathJax_ZoomOverlay { position: absolute; left: 0; top: 0; z-index: 300; display: inline-block; width: 100%; height: 100%; border: 0; padding: 0; margin: 0; background-color: rgba(255, 255, 255, 1); opacity: 0; filter: alpha(opacity=0) }
#MathJax_ZoomFrame { position: relative; display: inline-block; height: 0; width: 0 }
#MathJax_ZoomEventTrap { position: absolute; left: 0; top: 0; z-index: 302; display: inline-block; border: 0; padding: 0; margin: 0; background-color: rgba(255, 255, 255, 1); opacity: 0; filter: alpha(opacity=0) }</style>
<style>.MathJax_Preview { color: rgba(136, 136, 136, 1) }
#MathJax_Message { position: fixed; left: 1px; bottom: 2px; background-color: rgba(230, 230, 230, 1); border: 1px solid rgba(149, 149, 149, 1); margin: 0; padding: 2px 8px; z-index: 102; color: rgba(0, 0, 0, 1); font-size: 80%; width: auto; white-space: nowrap }
#MathJax_MSIE_Frame { position: absolute; top: 0; left: 0; width: 0; z-index: 101; border: 0; margin: 0; padding: 0 }
.MathJax_Error { color: rgba(204, 0, 0, 1); font-style: italic }</style>
<style></style>
<style></style>
<style></style>
<style></style>
<style></style>
<style></style>
<style></style>
<style></style>
<style></style>
<style></style>
<style></style>
<style>.MJXp-script { font-size: 0.8em }
.MJXp-right { -webkit-transform-origin: right; -moz-transform-origin: right; -ms-transform-origin: right; -o-transform-origin: right; transform-origin: right }
.MJXp-bold { font-weight: bold }
.MJXp-italic { font-style: italic }
.MJXp-scr { font-family: MathJax_Script, "Times New Roman", Times, STIXGeneral, serif }
.MJXp-frak { font-family: MathJax_Fraktur, "Times New Roman", Times, STIXGeneral, serif }
.MJXp-sf { font-family: MathJax_SansSerif, "Times New Roman", Times, STIXGeneral, serif }
.MJXp-cal { font-family: MathJax_Caligraphic, "Times New Roman", Times, STIXGeneral, serif }
.MJXp-mono { font-family: MathJax_Typewriter, "Times New Roman", Times, STIXGeneral, serif }
.MJXp-largeop { font-size: 150% }
.MJXp-largeop.MJXp-int { vertical-align: -0.2em }
.MJXp-math { display: inline-block; line-height: 1.2; text-indent: 0; font-family: "Times New Roman", Times, STIXGeneral, serif; white-space: nowrap; border-collapse: collapse }
.MJXp-display { display: block; text-align: center; margin: 1em 0 }
.MJXp-math span { display: inline-block }
.MJXp-box { display: block !important; text-align: center }
.MJXp-box:after { content: " " }
.MJXp-rule { display: block !important; margin-top: 0.1em }
.MJXp-char { display: block !important }
.MJXp-mo { margin: 0 0.15em }
.MJXp-mfrac { margin: 0 0.125em; vertical-align: 0.25em }
.MJXp-denom { display: inline-table !important; width: 100% }
.MJXp-denom>* { display: table-row !important }
.MJXp-surd { vertical-align: top }
.MJXp-surd>* { display: block !important }
.MJXp-script-box>* { display: table !important; height: 50% }
.MJXp-script-box>*>* { display: table-cell !important; vertical-align: top }
.MJXp-script-box>*:last-child>* { vertical-align: bottom }
.MJXp-script-box>*>*>* { display: block !important }
.MJXp-mphantom { visibility: hidden }
.MJXp-munderover { display: inline-table !important }
.MJXp-over { display: inline-block !important; text-align: center }
.MJXp-over>* { display: block !important }
.MJXp-munderover>* { display: table-row !important }
.MJXp-mtable { vertical-align: 0.25em; margin: 0 0.125em }
.MJXp-mtable>* { display: inline-table !important; vertical-align: middle }
.MJXp-mtr { display: table-row !important }
.MJXp-mtd { display: table-cell !important; text-align: center; padding: 0.5em 0 0 0.5em }
.MJXp-mtr>.MJXp-mtd:first-child { padding-left: 0 }
.MJXp-mtr:first-child>.MJXp-mtd { padding-top: 0 }
.MJXp-mlabeledtr { display: table-row !important }
.MJXp-mlabeledtr>.MJXp-mtd:first-child { padding-left: 0 }
.MJXp-mlabeledtr:first-child>.MJXp-mtd { padding-top: 0 }
.MJXp-merror { background-color: rgba(255, 255, 136, 1); color: rgba(204, 0, 0, 1); border: 1px solid rgba(204, 0, 0, 1); padding: 1px 3px; font-style: normal; font-size: 90% }
.MJXp-scale0 { -webkit-transform: scaleX(.0); -moz-transform: scaleX(.0); -ms-transform: scaleX(.0); -o-transform: scaleX(.0); transform: scaleX(0) }
.MJXp-scale1 { -webkit-transform: scaleX(.1); -moz-transform: scaleX(.1); -ms-transform: scaleX(.1); -o-transform: scaleX(.1); transform: scaleX(0.1) }
.MJXp-scale2 { -webkit-transform: scaleX(.2); -moz-transform: scaleX(.2); -ms-transform: scaleX(.2); -o-transform: scaleX(.2); transform: scaleX(0.2) }
.MJXp-scale3 { -webkit-transform: scaleX(.3); -moz-transform: scaleX(.3); -ms-transform: scaleX(.3); -o-transform: scaleX(.3); transform: scaleX(0.3) }
.MJXp-scale4 { -webkit-transform: scaleX(.4); -moz-transform: scaleX(.4); -ms-transform: scaleX(.4); -o-transform: scaleX(.4); transform: scaleX(0.4) }
.MJXp-scale5 { -webkit-transform: scaleX(.5); -moz-transform: scaleX(.5); -ms-transform: scaleX(.5); -o-transform: scaleX(.5); transform: scaleX(0.5) }
.MJXp-scale6 { -webkit-transform: scaleX(.6); -moz-transform: scaleX(.6); -ms-transform: scaleX(.6); -o-transform: scaleX(.6); transform: scaleX(0.6) }
.MJXp-scale7 { -webkit-transform: scaleX(.7); -moz-transform: scaleX(.7); -ms-transform: scaleX(.7); -o-transform: scaleX(.7); transform: scaleX(0.7) }
.MJXp-scale8 { -webkit-transform: scaleX(.8); -moz-transform: scaleX(.8); -ms-transform: scaleX(.8); -o-transform: scaleX(.8); transform: scaleX(0.8) }
.MJXp-scale9 { -webkit-transform: scaleX(.9); -moz-transform: scaleX(.9); -ms-transform: scaleX(.9); -o-transform: scaleX(.9); transform: scaleX(0.9) }
.MathJax_PHTML .noError { font-size: 90%; text-align: left; color: rgba(0, 0, 0, 1); padding: 1px 3px; border: 1px solid }</style><br><br>
来源:https://www.cnblogs.com/chongdongxiaoyu/p/11390127.html
頁:
[1]