我本人其實及其煩使用配置檔案這種東西,有時候看到巨大又複雜的配置檔案,甚至複雜過**的時候,總感覺設計配置檔案的人有些本末倒置。
但是ssh這個配置檔案真的非常簡單好用,讓我稍微體驗了一次配置檔案使用的快感。
在使用ssh confg之前我大概是這樣設定和管理自己的ssh連線的。
首先條線乙個集中的地方,比如我自己在桌面上建立乙個sa的資料夾,然後在這個資料夾裡面放上自己經常連線的伺服器的連線命令做成乙個指令碼類似名字叫
ssh-redis
#!/bin/shssh [email protected] -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配置檔案可以解決這個問題,讓所有指令碼都被重新放回乙個檔案中
host labhostname amazon.com
user piperck
identityfile ~/.ssh/id_rsa
host: 是我們在輸入命令的時候的名字 比如我這裡是lab 那麼我使用ssh命令的時候需要使用
ssh lab
注意這裡是空格,而不是 剛才我指令碼輸的ssh-redis 中間是橫線,因為指令碼可以隨便自己使用名字,也算是乙個好處吧。
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:
simplify your life with an ssh config file
使用ssh config配置檔案來管理ssh連線
我本人其實及其煩使用配置檔案這種東西,有時候看到巨大又複雜的配置檔案,甚至複雜過 的時候,總感覺設計配置檔案的人有些本末倒置。但是ssh這個配置檔案真的非常簡單好用,讓我稍微體驗了一次配置檔案使用的快感。在使用ssh confg之前我大概是這樣設定和管理自己的ssh連線的。首先條線乙個集中的地方,比...
ssh config配置更新
man ssh config,檢視 ssh config的語法。host可以使用萬用字元,當ssh的時候如果server的url能match上這裡host指定的值,則host下面指定的hostname將被作為最終url使用。同時該host下配置的user,port都將被使用。當然,user和port...
ssh config簡單使用
需求 工作的電腦經常會儲存不同的key,並且使用不同的使用者登入linux系統。如 ssh jackie 123.123.1.1 ssh www 123.122.1.145 我只想輸入ip位址,然後使用者自動匹配。怎麼做呢?解決方案 在 ssh 建立config檔案 600許可權 備註 一定要注意該...