我本人其实及其烦使用配置文件这种东西,有时候看到巨大又复杂的配置文件,甚至复杂过代码的时候,总感受设计配置文件的人有些本末倒置。程序员
可是ssh这个配置文件真的很是简单好用,让我稍微体验了一次配置文件使用的快感。redis
在使用ssh confg以前我大概是这样设置和管理本身的ssh链接的。shell
首先条线一个集中的地方,好比我本身在桌面上建立一个sa的文件夹,而后在这个文件夹里面放上本身常常链接的服务器的链接命令作成一个脚本相似名字叫bash
ssh-redis服务器
#!/bin/sh ssh piperck@115.28.39.64 -p 22
作一个shell脚本,里面放上想要ssh的地址。而后把这个sa文件夹设置到环境变量中,使得能够在terminal的任意地方调用到他们。ssh
由于我本身使用的zsh因此在个人.zshrc里面设置上这个文件夹的路径加密
export PATH="/Users/piperck/Desktop/tools/sa:$PATH"
而后从新开个shell 就能够在任何地方输入ssh-redis方便的登录到目标服务器上面了。spa
除了上面这个办法,固然你也能够选择在.zshrc 或者 .bashrc里面使用Alias指定一个 ssh登录的代号做为命令的名字从而执行命令好比设计
Alias dev "ssh www.xiachufang.com -p 22"
其实这样已经很是方便了我以为,可是做为懒癌晚期程序员每次遇到新服务器须要配置的时候,都以为这种添加脚本的方法巨麻烦,并且文件夹里面的脚本会愈来愈多。有没有更优雅的方法能够干这个事儿?code
ssh config配置文件能够解决这个问题,让全部脚本都被从新放回一个文件中
在~/.ssh/ 下建立 config文件,并以以下格式编辑配置文件:
Host lab HostName amazon.com User piperck IdentityFile ~/.ssh/id_rsa
Host: 是咱们在输入命令的时候的名字 好比我这里是lab 那么我使用ssh命令的时候须要使用
ssh lab
注意这里是空格,而不是 刚才我脚本输的ssh-redis 中间是横线,由于脚本能够随便本身使用名字,也算是一个好处吧。
HostName: 是目标主机的主机名,也就是平时咱们使用ssh后面跟的地址名称。
Port:指定的端口号。
User:指定的登录用户名。
IdentifyFile:指定的私钥地址。
而后就能够愉快的使用ssh lab 登录了。一样的道理,能够在这个config文件里面创建无数个相似的配置,而不再必每次都写脚本了。看起来仍是蛮方便的。
另外在设置了config以后可能出现一个问题,每次在链接的时候可能会要求你输入私钥的对称加密密匙,因此须要把这个钥匙加入到authentication agent中。
因此这里要说到一个ssh-add命令
使用ssh-add ~/.ssh/your_private_key 输入你的私钥密码 就能够把你的私钥加入到ssh-agent中去,方便的让他帮你管理。而再也不须要每次输入的时候都重复输入密码。
固然不须要的时候 你也可使用
ssh-add -D 删除全部管理的密钥
ssh-add -d 删除指定的
ssh-add -l 查看如今增长进去的指纹信息
ssh-add -L 查看如今增长进去的私钥
若是重启以后,会发现须要从新load一下ssh-agent
ssh-add -K 将指纹加到钥匙串里面去
ssh-add -A 能够把钥匙串里面的私钥密码,load进ssh-agent
Reference:
http://nerderati.com/2011/03/17/simplify-your-life-with-an-ssh-config-file/ Simplify Your Life With an SSH Config File