iTerm 2打造ssh完美连接Linux服务器快捷方法
使用MacOS系统的同学都知道iterm2,怎么打造最强终端的方案iTerm2 + Zsh + vim,大家有兴趣可以去搜一下,这里主要介绍ssh完美连接Linux服务器方案。
经常和服务器打交道,免不了要远程连接服务器,怎么使用iterm2连接服务器,网上一搜一大把。但由于iterm2默认不能使用rz指令上传文件,以及我现在公司远程登录测试服务器,采用的方案是需要先通过跳板机登录。而且往往都会为每一位开发配置一个token,动态的产生一个6位的数字串,用来作为登录密码。
网上的一些方法总会不那么完美,在这里做个整理,顺便结合我的测试,提供一个我自己实践出来的完美解决方案。
方案一:expect+配置文件
expect连接的方式有两种:
第一种 expect脚本文件
1.在一个目录下创建一个expect脚本文件,建议在自己的.ssh目录下,为了分类可以有子目录。
内容如下:
#!/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
2.进入iterm2->preference->profiles
新建一个登录标签,内容如下

在send text at start 处输入指令
expect /Users/xxx/.ssh/vmware/login_xxx
然后在profiles下点击具体标签就可以登陆了

第二种 登录脚本加参数
1.创建登录脚本 item2login.sh
#!/usr/bin/expect
set timeout 30
spawn ssh -p [lindex $argv 0] [lindex $argv 1]@[lindex $argv 2]
expect {
"(yes/no)?"
{send "yes\n";exp_continue}
"password:"
{send "[lindex $argv 3]\n"}
}
interact
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
2.授予执行权限
chmod +x item2login.sh
3.进入iterm2->preference->profiles
在send text at start 处输入指令
~/.ssh/item2login.sh 22 用户 ip 密码
以上是expect的两种登录方式,各有各的好处,登录服务器,进行相关操作都没问题,不过当你需要上传下载文件就会有问题。
首先iterm默认不支持rz相关指令,不过对于如何配置iterm2的lrzsz,网上有具体操作文档,我这里就不再叙述了
用expect的方式登录服务器,用rz、sz进行相关操作时,显示都是没问题的,可以正常选择上传文件或者选择下载目录,没有抛出任何异常但是最后上传文件也找不到不过文件却不能成功上传下载。
而且我在实际使用过程中,还发现这种登录方式对于scp 的指令支持的不是很好输入scp 后面接文件,使用tab键进行目录或者文件提示的时候,会报错,如下图

方案二: sshpass指令登录
1.安装sshpass
具体安装方法如下:
sudo brew install http://git.io/sshpass.rb
- 1
2.进入iterm2->preference->profiles
创建登录标签,在send text at start 处输入指令
/usr/local/bin/sshpass -o StrictHostKeyChecking=no -p 22 passwrod ssh userName@ip
- 1
这种方式登录,可以使用rz/sz指令,对于使用账号密码登录服务器的同学已经可以了。但是对于通过跳板机登录,为每一位开发配置一个token,动态的产生一个6位的数字串,用来作为登录校验的方式会有问题,不能出现输入提示,一直在等待中,就像下图一样,我们公司恰巧就是这种情况,对于这种情况我没有在网上搜到相关的解决方案,不过经过我的尝试,成功搞出了一种解决方案。

方案三: ssh指令登录
其实这种方式也是最基本的方式,前几种方式都是使用的loginshell的方式,其实iterm还有command 的方式让你输入登录指令的,直接ssh登录就可以,只是这种方式需要手动输入密码,对于每次都要输入动态码的方式,只能每次都输入了,如下图
然后,sshpass的问题就得到解决了

不过对于这种情况,相当于新建一个新建一个shell标签就得输入随机码,也很不方便,但Mac版的secureCRT支持克隆会话,且直接登录服务器。对于MAC下iterm2 实现clone session,实现起来也比较简单。
克隆会话
在~目录下的.ssh文件夹冲创建一个config文件
如果已经有的话,可以直接把内容添加进入,创建其他文件名是不行的
文件内容输入:
host *
ControlMaster auto
ControlPath ~/.ssh/master-%r@%h:%p
* {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: .25em; margin: 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: .5em 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: #FFFF88; color: #CC0000; border: 1px solid #CC0000; 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(.1)}
.MJXp-scale2 {-webkit-transform: scaleX(.2); -moz-transform: scaleX(.2); -ms-transform: scaleX(.2); -o-transform: scaleX(.2); transform: scaleX(.2)}
.MJXp-scale3 {-webkit-transform: scaleX(.3); -moz-transform: scaleX(.3); -ms-transform: scaleX(.3); -o-transform: scaleX(.3); transform: scaleX(.3)}
.MJXp-scale4 {-webkit-transform: scaleX(.4); -moz-transform: scaleX(.4); -ms-transform: scaleX(.4); -o-transform: scaleX(.4); transform: scaleX(.4)}
.MJXp-scale5 {-webkit-transform: scaleX(.5); -moz-transform: scaleX(.5); -ms-transform: scaleX(.5); -o-transform: scaleX(.5); transform: scaleX(.5)}
.MJXp-scale6 {-webkit-transform: scaleX(.6); -moz-transform: scaleX(.6); -ms-transform: scaleX(.6); -o-transform: scaleX(.6); transform: scaleX(.6)}
.MJXp-scale7 {-webkit-transform: scaleX(.7); -moz-transform: scaleX(.7); -ms-transform: scaleX(.7); -o-transform: scaleX(.7); transform: scaleX(.7)}
.MJXp-scale8 {-webkit-transform: scaleX(.8); -moz-transform: scaleX(.8); -ms-transform: scaleX(.8); -o-transform: scaleX(.8); transform: scaleX(.8)}
.MJXp-scale9 {-webkit-transform: scaleX(.9); -moz-transform: scaleX(.9); -ms-transform: scaleX(.9); -o-transform: scaleX(.9); transform: scaleX(.9)}
.MathJax_PHTML .noError {vertical-align: ; font-size: 90%; text-align: left; color: black; padding: 1px 3px; border: 1px solid}
-->
iTerm 2打造ssh完美连接Linux服务器快捷方法的更多相关文章
- ssh远程连接linux服务器并执行命令
详细方法: SSHClient中的方法 参数和参数说明 connect(实现ssh连接和校验) hostname:目标主机地址 port:主机端口 username:校验的用户名 password:登 ...
- Xshell通过ssh方式连接Linux服务器,通过Xftp进行文件传输
准备工作: 一.Linux服务器一台,并配置ssh(本文以腾讯云服务器为例). 1.生成秘钥 打开腾讯云控制台,依次选择:总览->云服务器->SSH秘钥 点击创建秘钥,输入秘钥名称,点击确 ...
- Windows下通过SSH无密码连接Linux服务器
一.配置环境 1.本机系统:Windows 10 Pro(64位) 2.服务器:CentOS 6.10(64位) 3.SSH连接软件:SecureCRT 二.配置SSH无密码登录步骤 1.在个人PC机 ...
- Mac 上ssh远程连接Linux服务器提示Host key verification failed.
当我们对重装远程服务器的时候会出现Host key verification failed问题 解决办法: rm -rf ~/.ssh/known_hosts 重新ssh连接,OK!
- 使用navicat连接linux服务器数据库方法
主机名用localhost 要使用SSH连接
- 关于windows下远程连接Linux服务器的方法(CentOs)
1.服务器端安装VNC 1) 安装vncserver yum install -y tigervnc-server 2) 修改配置 vi /etc/sysconfig/vncservers 最后两 ...
- mac 连接linux服务器,用scp命令实现本地文件与服务器文件之间的互相传输
mac连接linux服务器 打开终端,切换到root权限下,切换root权限命令:sudo -i 通过ssh命令连接linux服务器:ssh root@ip地址(root是账户名) 然后根据提示输入密 ...
- ssh连接linux服务器只显示-bash-4.1#不显示路径解决方法
ssh连接linux服务器只显示-bash-4.1#不显示路径时,我们只需要修改 ~/.bash_profile文件,如果不存在这个文件,那么新建一个,增加内容 export PS1='[\u@\ ...
- mac通过自带的ssh连接Linux服务器并上传解压文件
需求: 1:mac连接linux服务器 2:将mac上的文件上传到linux服务器指定位置 3:解压文件 mac上使用命令,推荐使用 iterm2 .当然,也可以使用mac自带的终端工具. 操作过程: ...
随机推荐
- sql复杂的子查询,横向合并结果集
第一个查询的结果集 select * from( select c.msName,a.msId,c.msPrice, c.msPrice*COUNT(a.msId) as totalMoney,sum ...
- gitlab中的几个常用界面(runner管理、gitlab-ci.yml管理、runner token管理、新建用户、拉用户入工程、拉用户入组、复制工程导入组)
目录: 1.runner管理 2.gitlab-ci.yml管理 3.runner token管理 4.新建用户 5.拉用户入工程 6.拉用户入组 7.复制工程导入组 1.runners界面 http ...
- API接口文档中将Swagger文档转Word 文档
一般的开发工作,尤其是API接口的开发工作,首先要有开发文档,接口说明文档 ok,后来开发完毕了 和页面联调,或者是和第三方联调的时候, 这个时候,SA systeam admin 就会开始直接让开发 ...
- java之语言
1.集合类 主要掌握如何实现. ArrayList实现原理要点概括 ArrayList是List接口的可变数组非同步实现,并允许包括null在内的所有元素.底层使用数组实现该集合是可变长度数组,数组扩 ...
- Week08_day01 (Hive 自定义函数 UDF 一个输入,一个输出(最常用))
当我们进入企业就会发现,很多时候,企业的数据都是加密的,我们拿到的数据没办法使用Hive自带的函数去解决,我们就需要自己去定义函数去查看,哈哈,然而企业一般不会将解密的代码给你的,只需要会用,但是我们 ...
- TreadPool
ThreadPool概述 提供一个线程池,该线程池可用于执行任务.发送工作项.处理异步 I/O.代表其他线程等待以及处理计时器. 创建线程需要时间.如果有不同的小任务要完成,就可以事先创建许多线程/在 ...
- 原生JS实现简单富文本编辑器2
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 使用selenium实现站长素材图片采集
from selenium import webdriver import requests,os from lxml import etree from selenium.webdriver.chr ...
- python中的几种数据类型(一)
一.整型(数字) python2中有长整形long python3 中全都是整型 int n = 56 print(n.bit_length()) # 0011 1000 # 12 ...
- Java File类方法使用详解
Java File类的功能非常强大,利用java基本上可以对文件进行所有操作.文本将对Java File 文件操作的类详细的分析,并将File类中的常用方法进行简单介绍. 构造函数 public cl ...