关于Mac下的SSH客户端iterm2等配置
linux后台开发的同学们晓得,在windows下有xshell\securecrt这样优秀的ssh客户端软件。mac下查找了下,有securecrt mac版,网上也有破解的,试用了一段时间,一个问题始终没有能解决——ssh链接偶尔会断掉。关于这个问题,先说下leby的工作环境吧:我们是不能直接ssh目标主机的,必须用ssh代理中转,于是搭建了一个HTTP的proxy,这之前在windows下xshell工作很好。在mac的scrt下,总是会随机掉线,一些超时配置当然是试过的,不能解决问题。
查了下HTTP Proxy日志,发现在windows下xshell是HTTP1.1的,mac的scrt发过来的请求是HTTP1.0。HTTP1.1支持KeepAlive,难道是1.0短链接的问题?
好吧,corkscrew 是一个在shell下就可以ssh的proxy软件,corkscrew是只支持HTTP转发的,也可以用其它ss5等。通过此连接HTTP Proxy访问主机,还是HTTP1.0的,corkscrew是开源的,于是修改了源代码为HTTP1.1和Host 的header设置,结果还是不行。
corkscrew对应的~/.ssh/config配置如下
Host 10.*.*.* 192.*.*.* 172.16.*.*
#ProxyCommand corkscrew HTTP代理IP HTTP代理端口 %h %p ~/.corkscrew-auth
ProxyCommand /usr/local/bin/corkscrew 【你的IP】 8080 %h %p ServerAliveInterval 120
ConnectTimeout 240
进一步,将HTTP Proxy换做sock5的代理,问题依旧,后来想想,断链掉线是随机的,应该真的和代理没有关系。或许真的就是mac下的securecrt存在丢包现象。
leby先用一段时间iterm2吧。
Iterm2自身没有支持SSH Proxy的客户端,还是需要使用corkscrew来中转,corkscrew这部分配置可以复用,即先保证在终端下可以
ssh root@ip连接上远程主机,这样,可以在iterm2 profile配置中不使用local shell,而是使用该command登陆。但问题是不能保存密码,此时leby知道有两种方案,一个是使用sshpass把密码明文传输,但在第一次登录时需要保存密钥。另一个就是使用expect了,expect脚本不就可以避免输入密码的么,好了我们准备一个通用的ssh expect脚本:
#!/usr/bin/expect  -- 
if { [llength $argv] <  } {
    puts "Usage:  $argv0 ip port user passwd"
    exit
}
match_max 
set ip [lindex $argv ]
set port [lindex $argv ]
set user [lindex $argv ]
set passwd [lindex $argv ]
set yesnoflag
set timeout -
spawn ssh -q -l$user -p$port $ip
expect     {
    "assword:" {
        send "$passwd\r"
    }
    "yes/no)?" {
        set yesnoflag
        send "yes\r"
    }
    "FATAL" {
        puts "\nCONNECT ERROR: $ip occur FATAL ERROR!!!\n"
        exit
    }
    "No route to host" {
        puts "\nCONNECT ERROR: $ip No route to host!!!\n"
        exit
    }
}
}
if { $yesnoflag ==  } {
    expect {
        "assword:" {
            send "$passwd\r"
        }
        "yes/no)?" {
            set yesnoflag
            send "yes\r"
        }
    }
}
if { $yesnoflag ==  } {
    expect {
        "assword:" {
            send "$passwd\r"
        }
    }
}
puts "\n--------> Connected: $ip, pls enjoy yourself!\n"
interact
这样在终端你就可以这样使用,或填入到iterm2的profiles中command即可:
expect ~/Works/ssh/ssh.exp 127.0.0.1 root lebypasswd
搞定proxy,profile,还差rz\sz。这个比较简单,首先先安装
brew install lrzsz
或者你可以自己下载lrzsz-0.12.20.tar.gz,编译安装。
再次在iterm2的session中,配置触发器,高级配置的trigger里面:
Regular expression: \*\*B0100
Action: Run Silent Coprocess
Parameters: /usr/local/bin/iterm2-send-zmodem.sh Regular expression: \*\*B00000000000000
Action: Run Silent Coprocess
Parameters: /usr/local/bin/iterm2-recv-zmodem.sh
请注意,这里触发器对应的两个脚本,可以从这里下载:https://github.com/mmastrac/iterm2-zmodem,这两个脚本网上也很多的。
之后放置在/usr/local/bin/下,此时就可以测试了。如果有问题,请检查相关的触发器配置、脚本、rz sz命令行路径是否正确即可。
关于iterm2,最后再配置上喜欢的solized主题,嗯,目前看一起来一切皆好!
关于Mac下的SSH客户端iterm2等配置的更多相关文章
- 转:Mac下搭建svn服务器和XCode配置svn
		
Mac下搭建svn服务器和XCode配置svn 先打开命令行终端. 1.创建svn repository svnadmin create /yourpath/svnroot/repository 2. ...
 - Mac下Tomcat安装与Intellij IDEA配置Tomcat
		
Mac下Tomcat安装与Intellij IDEA配置Tomcat 一 安装 1 下载地址:https://tomcat.apache.org/download-90.cgi 2 将压缩包解压后移至 ...
 - Mac下使用sshpass让iterm2支持多ssh登录信息保存
		
mac下没有xshell等连接linux服务器的工具,当需要管理的服务器越来越多之后,密码管理就成了一个很头疼的问题,每次都需要去复制粘贴密码,浪费了很多时间,在网上查了不少资料,发现mac下可以使用 ...
 - Mac下使用SSH(密钥)访问Github
		
1,终端中输入:cd ~/.ssh 如果出现 -bash: cd: /Users/glamor/.ssh: No such file or directory,说明你之前没有用过.直接执行第二步. 如 ...
 - Mac下的SSH插件(默认自带)
		
Mac下默认自带,直接通过终端输入ssh获取更多的参数帮助.
 - Gitlab,Mac下生成SSH Key
		
git是分布式的代码管理工具,远程的代码管理是基于ssh的,所以要使用远程的git则需要ssh的配置.简单的说,Git - 版本控制工具:Github是一个网站,提供给用户空间创建git仓储,保存 ...
 - Gitlab,Mac下生成SSH Key222
		
git是分布式的代码管理工具,远程的代码管理是基于ssh的,所以要使用远程的git则需要ssh的配置.简单的说,Git - 版本控制工具:Github是一个网站,提供给用户空间创建git仓储 ...
 - Mac下的LDAP客户端  ApacheDirectoryStudio
		
mac下的ldap browser,最开始下载的最新版本的 地址 http://directory.apache.org/studio/downloads.html 使用的时候经常卡死,尝试下载老版本 ...
 - MAC下go语言的安装和配置
		
Mac下安装一些文件都是比较简单的.安装了brew以后,很多的程序只要一条命令就搞定了. brew install go 安装好go语言以后主要是配置go_path,和go_root的地址. go_r ...
 
随机推荐
- 《BI项目笔记》创建标准维度、维度自定义层次结构
 - MAC air  安装redis-3.0.6
			
redis版本: p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px Menlo; color: #c33720; background-colo ...
 - python 学习中遇到的问题
			
一.安装pip中遇到的问题. 出现错误:ImportError:DLL load failed :%1不是有效的win32应用程序 出现问题解答: 主要是由于安装的python版本和所下载的安装包版本 ...
 - python内置函数 1
			
常用函数 abs(x) abs()返回一个数字的绝对值.如果给出复数,返回值就是该复数的模. >>>print abs(-100) 100 >>>print abs ...
 - 51nod 1445 变色DNA(dij)
			
题目链接:51nod 1445 变色DNA 看了相关讨论再去用最短路:val[i][j]之间如果是'Y',说明i可以到达j,并且i到达j的代价是i那行 1到j-1 里面'Y'的数量. 最后,求 0到n ...
 - BZOJ1778 [Usaco2010 Hol]Dotp 驱逐猪猡
			
首先我们列出转移矩阵$M$,$M_{i, j} = \frac {1 - \frac{p} {q}} {deg[i]}$(i,j之间有边)or $M_{i, j} = 0$(i,j之间没边) 则这个矩 ...
 - js模拟类
			
ECMAScript6已经支持了class,但之前版本都不支持类,但是可以通过一些方法来模拟类. js中的类,既是重点,也是难点,很多时候都感觉模棱两可. 首先强调一下js中很重要的3个知识点:thi ...
 - UNION并集运算
			
在集合论中,两个集合(集合A和集合B)的并集是一个包含集合A和B中所有元素的集合.换句话说,如果一个元素属于任何一个输入集合,那么它也属于结果集.如图所示.
 - apache认证、授权、访问控制
			
认证对象:某一个网站目录. 启用认证 1.即用AllowOverride指令指定哪些指令在针对单个目录的配置文件中有效:AllowOverride AuthConfig 2.设置密码登录访问某个站点或 ...
 - Linux diable ipv6
			
在RHEL 5下面测试成功 linux下面禁止ipv6的方法: 来自: 杨志刚 博客 (http://yangzhigang.cublog.cn) 这里我所做的是Redhat Linux, ...