iTerm 2打造ssh完美链接Linux服务器快捷方法
使用MacOS系统的同窗都知道iterm2,怎么打造最强终端的方案iTerm2 + Zsh + vim,你们有兴趣能够去搜一下,这里主要介绍ssh完美链接Linux服务器方案。
常常和服务器打交道,免不了要远程链接服务器,怎么使用iterm2链接服务器,网上一搜一大把。但因为iterm2默认不能使用rz指令上传文件,以及我如今公司远程登陆测试服务器,采用的方案是须要先经过跳板机登陆。并且每每都会为每一位开发配置一个token,动态的产生一个6位的数字串,用来做为登陆密码。
网上的一些方法总会不那么完美,在这里作个整理,顺便结合个人测试,提供一个我本身实践出来的完美解决方案。html
方案一:expect+配置文件
expect链接的方式有两种:git
第一种 expect脚本文件
1.在一个目录下建立一个expect脚本文件,建议在本身的.ssh目录下,为了分类能够有子目录。
内容以下:web
#!/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_xxxshell
而后在profiles下点击具体标签就能够登录了
vim
第二种 登陆脚本加参数
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.shmarkdown
3.进入iterm2->preference->profiles
在send text at start 处输入指令
~/.ssh/item2login.sh 22 用户 ip 密码session
以上是expect的两种登陆方式,各有各的好处,登陆服务器,进行相关操做都没问题,不过当你须要上传下载文件就会有问题。
首先iterm默认不支持rz相关指令,不过对于如何配置iterm2的lrzsz,网上有具体操做文档,我这里就再也不叙述了
用expect的方式登陆服务器,用rz、sz进行相关操做时,显示都是没问题的,能够正常选择上传文件或者选择下载目录,没有抛出任何异常可是最后上传文件也找不到不过文件却不能成功上传下载。
并且我在实际使用过程当中,还发现这种登陆方式对于scp 的指令支持的不是很好输入scp 后面接文件,使用tab键进行目录或者文件提示的时候,会报错,以下图
app
方案二: sshpass指令登陆
1.安装sshpass
具体安装方法以下:ssh
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