使用ssh config配置文件来管理ssh连接
我本人其實及其煩使用配置文件這種東西,有時候看到巨大又復雜的配置文件,甚至復雜過代碼的時候,總感覺設計配置文件的人有些本末倒置。
但是ssh這個配置文件真的非常簡單好用,讓我稍微體驗了一次配置文件使用的快感。
?
在使用ssh confg之前我大概是這樣設置和管理自己的ssh連接的。
首先條線一個集中的地方,比如我自己在桌面上創建一個sa的文件夾,然后在這個文件夾里面放上自己經常連接的服務器的連接命令做成一個腳本類似名字叫
ssh-redis
#!/bin/sh ssh piperck@115.28.39.64 -p 22做一個shell腳本,里面放上想要ssh的地址。然后把這個sa文件夾設置到環境變量中,使得可以在terminal的任意地方調用到他們。
因為我自己使用的zsh所以在我的.zshrc里面設置上這個文件夾的路徑
export PATH="/Users/piperck/Desktop/tools/sa:$PATH"然后重新開個shell 就可以在任何地方輸入ssh-redis方便的登陸到目標服務器上面了。
?
除了上面這個辦法,當然你也可以選擇在.zshrc 或者 .bashrc里面使用Alias指定一個 ssh登陸的代號作為命令的名字從而執行命令比如
Alias dev "ssh www.xiachufang.com -p 22"?
其實這樣已經非常方便了我覺得,但是作為懶癌晚期程序員每次遇到新服務器需要配置的時候,都覺得這種添加腳本的方法巨麻煩,而且文件夾里面的腳本會越來越多。有沒有更優雅的方法可以干這個事兒?
ssh config配置文件可以解決這個問題,讓所有腳本都被重新放回一個文件中
在~/.ssh/ 下創建 config文件,并以如下格式編輯配置文件:
Host labHostName amazon.comUser piperckIdentityFile ~/.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
總結
以上是生活随笔為你收集整理的使用ssh config配置文件来管理ssh连接的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Docker之Linux Cgroups
- 下一篇: highcharts 去掉Highcha