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等配置的更多相关文章

  1. 转:Mac下搭建svn服务器和XCode配置svn

    Mac下搭建svn服务器和XCode配置svn 先打开命令行终端. 1.创建svn repository svnadmin create /yourpath/svnroot/repository 2. ...

  2. Mac下Tomcat安装与Intellij IDEA配置Tomcat

    Mac下Tomcat安装与Intellij IDEA配置Tomcat 一 安装 1 下载地址:https://tomcat.apache.org/download-90.cgi 2 将压缩包解压后移至 ...

  3. Mac下使用sshpass让iterm2支持多ssh登录信息保存

    mac下没有xshell等连接linux服务器的工具,当需要管理的服务器越来越多之后,密码管理就成了一个很头疼的问题,每次都需要去复制粘贴密码,浪费了很多时间,在网上查了不少资料,发现mac下可以使用 ...

  4. Mac下使用SSH(密钥)访问Github

    1,终端中输入:cd ~/.ssh 如果出现 -bash: cd: /Users/glamor/.ssh: No such file or directory,说明你之前没有用过.直接执行第二步. 如 ...

  5. Mac下的SSH插件(默认自带)

    Mac下默认自带,直接通过终端输入ssh获取更多的参数帮助.

  6. Gitlab,Mac下生成SSH Key

      git是分布式的代码管理工具,远程的代码管理是基于ssh的,所以要使用远程的git则需要ssh的配置.简单的说,Git - 版本控制工具:Github是一个网站,提供给用户空间创建git仓储,保存 ...

  7. Gitlab,Mac下生成SSH Key222

         git是分布式的代码管理工具,远程的代码管理是基于ssh的,所以要使用远程的git则需要ssh的配置.简单的说,Git - 版本控制工具:Github是一个网站,提供给用户空间创建git仓储 ...

  8. Mac下的LDAP客户端 ApacheDirectoryStudio

    mac下的ldap browser,最开始下载的最新版本的 地址 http://directory.apache.org/studio/downloads.html 使用的时候经常卡死,尝试下载老版本 ...

  9. MAC下go语言的安装和配置

    Mac下安装一些文件都是比较简单的.安装了brew以后,很多的程序只要一条命令就搞定了. brew install go 安装好go语言以后主要是配置go_path,和go_root的地址. go_r ...

随机推荐

  1. HDU-4528 小明系列故事——捉迷藏 BFS模拟

    题意:链接 分析:每一个D或者是E点往四面延伸,并且赋一个特殊的值,能看到D点的点赋值为1,能看到E点的点赋值为1000,这是因为最多100步,因此最后可以根据除以1000和对1000取模来得出某个状 ...

  2. php支付宝在线支付接口开发教程【转】

    php支付宝在线支付接口开发教程 这篇文章主要为大家详细介绍了php支付宝在线支付接口开发教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下   1.什么是第三方支付 所谓第三方支付,就是一些和各 ...

  3. struts2学习:配置篇之namespace

    把namespace单独拉出来讲一方面是因为它实际上不是一个element,而只是一个attribute,前面已经说了,它是package的一个attribute:另外一方面是因为这个属性是我接触St ...

  4. MYSQL常见错误及其解决方式

    欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...

  5. 使用File类递归列出E盘下全部文件

    import java.io.File;public class FileListTest { public void tree(File file){ if(file.listFiles()!=nu ...

  6. SPSS数据分析—非参数检验

    统计学的假设检验可以分为参数检验和非参数检验,参数检验都是根据一些假设条件推算而来,当这些假设条件无法满足的时候,参数检验的效能会大打折扣,甚至出现错误的结果,而非参数检验通常是没有假设条件的,因此应 ...

  7. row_number() OVER(PARTITION BY)函数介绍

      OVER(PARTITION BY)函数介绍 开窗函数               Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是:对于每个 ...

  8. python语法------时间函数

    1.导入函数库: import time 获取格式化的时间 你可以根据需求选取各种格式,但是最简单的获取可读的时间模式的函数是asctime(): #!/usr/bin/python # -*- co ...

  9. Maven+SSM搭建总结(非教程)

    记录我用Maven搭建Spring+SpringMVC+Mybatis项目的过程. 网上关于这个的详细教程有很多,但是优质而适合自己看的需要自己筛选以下我看过的几篇认为讲的比较详细的资源(照着做吧,做 ...

  10. select document library from certain list 分类: Sharepoint 2015-07-05 07:52 6人阅读 评论(0) 收藏

    S using System; using Microsoft.SharePoint; namespace Test { class ConsoleApp { static void Main(str ...