iTerm 2打造ssh完美连接Linux服务器快捷方法

2019年05月02日 10:40:19 Mars0908 阅读数 213更多

个人分类: Mac下开发
 
版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明。

 使用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服务器快捷方法的更多相关文章

  1. ssh远程连接linux服务器并执行命令

    详细方法: SSHClient中的方法 参数和参数说明 connect(实现ssh连接和校验) hostname:目标主机地址 port:主机端口 username:校验的用户名 password:登 ...

  2. Xshell通过ssh方式连接Linux服务器,通过Xftp进行文件传输

    准备工作: 一.Linux服务器一台,并配置ssh(本文以腾讯云服务器为例). 1.生成秘钥 打开腾讯云控制台,依次选择:总览->云服务器->SSH秘钥 点击创建秘钥,输入秘钥名称,点击确 ...

  3. Windows下通过SSH无密码连接Linux服务器

    一.配置环境 1.本机系统:Windows 10 Pro(64位) 2.服务器:CentOS 6.10(64位) 3.SSH连接软件:SecureCRT 二.配置SSH无密码登录步骤 1.在个人PC机 ...

  4. Mac 上ssh远程连接Linux服务器提示Host key verification failed.

    当我们对重装远程服务器的时候会出现Host key verification failed问题 解决办法: rm -rf ~/.ssh/known_hosts 重新ssh连接,OK!

  5. 使用navicat连接linux服务器数据库方法

    主机名用localhost 要使用SSH连接

  6. 关于windows下远程连接Linux服务器的方法(CentOs)

    1.服务器端安装VNC 1) 安装vncserver yum install -y tigervnc-server 2) 修改配置 vi /etc/sysconfig/vncservers   最后两 ...

  7. mac 连接linux服务器,用scp命令实现本地文件与服务器文件之间的互相传输

    mac连接linux服务器 打开终端,切换到root权限下,切换root权限命令:sudo -i 通过ssh命令连接linux服务器:ssh root@ip地址(root是账户名) 然后根据提示输入密 ...

  8. ssh连接linux服务器只显示-bash-4.1#不显示路径解决方法

    ssh连接linux服务器只显示-bash-4.1#不显示路径时,我们只需要修改  ~/.bash_profile文件,如果不存在这个文件,那么新建一个,增加内容  export PS1='[\u@\ ...

  9. mac通过自带的ssh连接Linux服务器并上传解压文件

    需求: 1:mac连接linux服务器 2:将mac上的文件上传到linux服务器指定位置 3:解压文件 mac上使用命令,推荐使用 iterm2 .当然,也可以使用mac自带的终端工具. 操作过程: ...

随机推荐

  1. iOS登录及token的业务逻辑

    登录的业务逻辑 { http:是短连接. 服务器如何判断当前用户是否登录? // 1. 如果是即时通信类:长连接. // 如何保证服务器跟客户端保持长连接状态? // "心跳包" ...

  2. SpringCloud之RabbitMQ消息队列原理及配置

    本篇章讲解RabbitMQ的用途.原理以及配置,RabbitMQ的安装请查看SpringCloud之RabbitMQ安装 一.MQ用途 1.同步变异步消息 场景:用户下单完成后,发送邮件和短信通知. ...

  3. 【微信网页直接下载app】微信跳转-微信浏览器中直接唤起本地浏览器和App

    文档传送门:https://github.com/EthanOrange/wechat-redirect demo: http://wxredirect.jslab.fun/call-app

  4. js form表单提交后如何可以不刷新页面 的解决办法

    表单可实现无刷新页面提交,无需页面跳转,如下: 通过一个隐藏的iframe实现, form表单的target设置为iframe的name名称,form提交目标位当前页面iframe则不会刷新页面 &l ...

  5. 配置基于centos下的远程Jupyter Notebook访问

    最近在学习一些服务器上的操作,学着熟悉Liunx系统,记录下自己踩过的坑吧 1.开机后更新系统: yum -y upgrade yum - y update 2.查看已安装的应用 yum list 3 ...

  6. 大数据之路week03--day05(线程 II)

    今天,咱们就把线程给完完全全的结束掉,但是不是说,就已经覆盖了全部的知识点,可以说是线程的常见的问题及所含知识基本都包含. 1.多线程(理解) (1)JDK5以后的针对线程的锁定操作和释放操作 Loc ...

  7. HTML5游戏2D开发引擎

    1.PixiJS(基于webGl和canvas) 官网:http://www.pixijs.com/ github(star:20672):https://github.com/pixijs/pixi ...

  8. node.js之文件读写模块,配合递归函数遍历文件夹和其中的文件

    fs.stat会返回文件夹会文件的属性 var fs = require('fs'); var wenwa = function (pathname,callback) { fs.stat(pathn ...

  9. 双向绑定v-bind

    通过v-model绑定输出数据 <script> export default { data() { return { pagestyle:'https://v4.bootcss.com/ ...

  10. [2019HDU多校第四场][HDU 6617][D. Enveloping Convex]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6617 题目大意:给出一凸包\(P\),求最小的与\(P\)相似且对应边平行的多边形,使得题目给出的\( ...