iterm2下管理ssh的几点经验

2017-11-27 10:32:40来源:http://zcheng.ren/2017/11/24/sshForwardAgent/作者:ZeeCoder人点击

分享

工作了之后经常和服务器打交道,自己也搭了好几个虚拟机用于开发。那么,问题来了:如何有效地管理ssh呢?


一开始,我秉承着“好记性不如烂笔头的”的执念,把每个虚拟机的登录方式记在笔记上,每次登录的时候都要先去印象笔记中搜一下,然后复制粘贴。可想而知这样的效率有多低。为了更好地投身工作,节约ssh浪费的时间,我开始搜寻更有效率的方法。



基础工具Iterm2

为了更方便的管理多个SSH,最基础的工具Iterm2登场了。它的profiles配置可以方面地为我们提供多ssh登陆信息保存的功能。具体配置如下图所示。



配置方法:在Iterm2->Prefenerce->Profiles,中添加新的Profiles,并填入相应的name和Tags,Tags可以为你提供分组服务,便于快速的找到该profiles。最关键的步骤是在Command一栏中,填上你登录ssh的指令,如下所示:


ssh [emailprotected]192.168.2.235

这样一来,每次登录该服务器的时候,只需要点击对应的Profiles即可。



进阶sshpass

Iterm2的Profiles能很好的解决多ssh登陆信息保存的问题,但是,一旦服务器多了,记密码貌似也是件及其烦心的事。别急,sshpass能帮我们解决。


安装sshpass

在Macos下,通过以下命令来安装sshpass:


brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb

执行完成后,通过 sshpass -h 命令来检查是否安装正确。


设置密码文件

通过sshpass来使用ssh密码,需要事先将密码保存在一个文件里,再通过sshpass命令来读取文件中保存的密码。密码文件很简单,例如,在/user/用户名/sshpass目录下新建一个pass文件,里面写上主机密码,如123456,即可。


配置Iterm2

在Iterm2中更改Profiles的配置,将Command一栏改为如下:


/usr/local/bin/sshpass -f /Users/zhangcheng/sshpass/pass ssh -p22 [emailprotected]

保存该Profiles,下次登录的时候只需要以该Profiles打开Iterm2即可。是不是感觉节省了很多时间。


高阶ForwardAgent or ProxyCommand?

在公司,一般登录线上服务器需要先登录跳板机,在通过跳板机来登录线上服务器。对于Key Pair登录,通常的做法是将Key Pair存放在跳板机上,这样安全性得不到保证。最初我也是这么做,后来被运维“骂”了一通后,“被迫”使用了ForwardAgent。


SSH ForwardAgent可以让开发者将Local端的SSH Key Pair带到另一台机器上,这样一来你就不用讲SSH Key复制到跳板机在进行跳板动作了,同样,跳板机也仅仅只是跳板机了,不需要存放任何凭证资料,你的个人Key Pair也得到了安全性保障。


ForwardAgent

使用SSH的ForwardAgent很简单,包括了如下几个步骤:(假设跳板机IP为1.1.1.1,远端服务器为2.2.2.2,端口为1046)


将Key Pair放到清单

通过ssh-add命令可以将你的Private Key Pair加入清单


ssh-add ~/.ssh/id_ras

然后通过以下命令可以查看上述命令是否执行成功。


ssh-add -L

设定~/.ssh/config

在本机的ssh config文件中,需要配置ForwardAgent参数,如下:


Host hosta
HostName 1.1.1.1
User username
ForwardAgent yes
IdentityFile ~/.ssh/id_rsa// 指定私钥

同样在跳板机上也需要配置config文件,如下:


Host hostb
HostName 2.2.2.2
User username
ForwardAgent yes

上述配置完成后,在本机即可通过ssh -A指令登录到跳板机,如下:


ssh -A -p 1046 [emailprotected]

登录到跳板机之后,同样通过以下指令,登录到线上机器:


ssh -A -p 1046 [emailprotected]

上述步骤下来,私钥不需要上传到跳板机,保证了安全性,但是两遍ssh操作,还是太费事。而且,通过ssh-add操作还是存在安全隐患,具体可以看这篇文章 SSH Agent Forwarding considered harmful


ProxyCommand

ProxyCommand不仅不需要将私钥ssh-add加入到ssh清单中,而且也简化了登录步骤,只需要一条指令直接登录到线上服务器。


该方法也是需要配置~/.ssh/config文件,但是是通过ProxyCommand而不是ForwardAgent yes。


Host Hosta
User username
Hostname 1.1.1.1
Host Hostb
User username
Hostname 2.2.2.2
Port 1046
ProxyCommand ssh -q -W %h:%p hosta
IdentityFile ~/.ssh/id_rsa

这样一来只需要一条指令即可直达线上机器


ssh hostb

实在是省时省力又省心啊!!!!不知道大家会了没有呢?


最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台