linux自定義實現一個免登錄遠程機器的腳本

經過本篇閱讀,你的收穫以下java

你的收穫

  1. 學會自定義linux命令運行
  2. 誘使你學習bash腳本的簡單語法
  3. 學到ssh config相關概念
  4. 動手纔是深刻理解的絕招

故事場景

平時開發過程當中,登錄遠程linux機器是必定會發生的。正常咱們的操做步驟以下linux

1. 打開iTerm2
2. ssh root@50.100.11.10
3. 輸入密碼
複製代碼

實際工做中有多個遠程服務器,須要鏈接。每一個都要如上操做一遍,實在繁瑣。尤爲是複雜密碼的時候vim

方法一 使用ssh config

這是稍友好一點的方式安全

實現密碼登陸的方法是經過opensshssh config的功能。具體操做爲~/.ssh/config,若是不存在,可能新建一個 而後vim ~/.ssh/configbash

Host aliyun
  HostName 50.100.11.10
  User root
  Port 22
複製代碼

保存退出。這時在iTerm2中就能夠輸入ssh aliyun,回車 而後輸入密碼。注意,這時候已經不用輸入ssh root@50.100.11.10,只要輸入密碼就登陸上了。這種方式的麻煩之處是還要使用密碼,尤爲是密碼很難記憶的時候,每次都要去某個地方找一通服務器

設置免密登陸

這是稍稍友好一點的方式ssh

方法是使用ssh-copy-id功能,原理是將本機的密鑰複製到遠程要鏈接的機器上,從而受權鏈接。iterm終端輸入:學習

$ ssh-copy-id -i user@192.168.1.101 這樣就能夠密碼登陸了。這種方式的缺點在於你本機的密鑰會傳到遠程的機器上。試想一下,測試環境機器不少人共用,你的密鑰對其餘人就是可見的了,不夠安全測試

基於此,自定義一個免登錄的腳本。至關於項目初始化操做ui

方法二 自定義一個免登錄的腳本

實現原理

原理其實很簡單,在腳本彙總預先配置好遠程機器的ip和密碼,結合linux pbcopy ssh等命令實現免密登陸。功能很簡單,也能夠做爲熟悉和練習linux bash的入門例子。具體以下

step0 建立文件所在的目錄

skyler@bogon ~ pwd
/Users/skyler
 skyler@bogon ~ mkdir bin
 skyler@bogon ~ cd bin
 skyler@bogon ~/bin pwd
/Users/skyler/bin
複製代碼

定義名稱爲bin的文件夾是有緣由的。正常咱們執行文件是這樣了:sh xxxx。咱們想像java這樣執行。因此咱們要在系統配置文件裏配置這個目錄

step1 建立文件

建立一個文件:auth,執行這個文件實現免登錄

skyler@bogon ~/bin touch auth
複製代碼

step2 文件賦予執行權限

skyler@bogon ~/bin chmod u+x auth
複製代碼

step3 編寫腳本

skyler@bogon ~/bin vim auth
# !/bin/bash
# author skyler
# get ssh value from ssh key
# 這裏演示的命令:read, test, if else, echo, pbcopy, ssh, 定義變量

echo "主機別名:liantiao dev"

read -p "^V^ 請輸入您要鏈接的主機別名:" hostName

function noMatchTip() {
   echo "sorry 沒有找到$1的密碼"
}

if test $hostName == "liantiao" ; then
   sk="qdfgdgdf"
elif test $hostName == "dev" ; then
   sk="dfgdfg"
else
   noMatchTip ${hostName};
fi

outMsg="$hostName"
echo "$sk" | pbcopy
echo "你要鏈接機器的別名:$outMsg, mac請按下Cmd+v"

if [ $hostName == "liantiao" ]; then
   ssh work@10.100.20.11
elif [ $hostName == "dev" ]; then
   ssh root@50.98.100.10
else
   noMatchTip ${hostName};
fi
複製代碼

保存文本退出

step4 目錄添加到系統配置文件中

爲了能讓auth成爲全局命令,須要將/Users/skyler/bin添加到系統配置文件中,對於個人mac,由於我使用了oh-my-zsh,因此須要將目錄放到~/.zshrc,具體以下

skyler@bogon ~ vim ~/.zshrc
export PATH=${PATH}:/Users/skyler/bin
複製代碼

從新加載~/.zshrc

skyler@bogon ~ source ~/.zshrc
複製代碼

step5 運行命令

skyler@bogon ~ auth
複製代碼

選擇輸入你要鏈接的服務器,而後cmd+v,而後就會鏈接到遠程服務器了。到此免密登陸實現。固然,你還能夠根據本身的需求稍微改動,如不顯示登陸密碼、簡化選擇服務器操做。這是你的事了

總結

整個下來,你會發現,其實很簡單,可是對提供工做效率倒是起到很大做用。實際工做中,你會發現,文章開始的鏈接操做,雖然每次鏈接都要操做幾步和輸入密碼的麻煩操做,可是他仍是能連上遠程,一樣能看日誌,查問題。因此不少人日復一日的這麼作。他們不聰明嗎,他們也不笨。但可能被生活折磨的沒有精力了吧。但進取的心仍是要有的,能提供工做效率的操做就要去作,哪怕是這麼小的點

我剛剛升p7失敗,平時的努力工做精力和內容通過個人笨嘴巴拉巴拉後,沒有表達出來,天然就晉升失敗了。短暫的傷心後,仍是要給本身動力。因此,無論啥時候,不要被生活的折磨和工做的困難屈服,付出總會有收穫。

相關文章
相關標籤/搜索