天天看點

Mac 電腦下最新實用ssh免密碼登入腳本

Mac 電腦下最新實用ssh免密碼登入腳本

使用SecureCRT痛苦之後的崛起.

mac 系統上我一直少有發現一款好用的 ssh 工具, 免去我記住多個密碼的煩惱.

經過大量時間的尋找, 我發現了一款名為 SecureCRT 的工具, 可以在 mac 系統上使用, 的确可以免除我記住大量密碼的煩惱, 但是使用的痛苦也随之而來.

  1. 不存在清理螢幕的快捷鍵

    經常登入伺服器進行測試環境的日志查閱, 這個時候, 界面上停留的可能有進入多少級目錄, 然後打了什麼指令, 已經其他很多無關緊要的東西在上面. 這個時候清理螢幕就顯的很重要, 但是 CRT 不支援. 隻能傻傻的通過工具欄上方的按鈕去清除螢幕.

  2. vim 之後不能滾輪滑動

    文字已經很能說明問題了, 我就不多贅述.

  3. 我自己的 Iterm2 上操作的很開心, 不能用他我就不開心

    這一點尤為重要.

基于以上三個問題, 我決定翻出去年寫的那個已經不能用的腳本來搞好他.

之前的腳本存在幾個問題

  1. 不能展示出來清單

    我目前存了多少個伺服器, 我記不住, 也不能展示出來

  2. 好端端的壞了

    進入伺服器之後, 啥也不能幹.

通過網上苦苦的搜尋, 我找到一個朋友寫的一個東西非常棒. fork 了他的項目, 改編了一下, 使其能更好的适用于我的電腦.

此處感謝 AlicFeng 的文章給我的幫助, 此處是github 位址.

首先說說為什麼要重寫

  1. 電腦上下載下傳的時候總是提示需要管理者的權限, 但是已經使用了, 不厭其煩
  2. 廢了好多功夫弄到本地之後, 感覺不是太會用. 這一點很尴尬.
  3. 簡書評論區 2 樓回複的很好, 在此引用一下
    -s 登入的時候,後面的編号并不是 ini 檔案中的 Index 項,而是取決于 shell 過濾出來的 ini 檔案順序

基于上面 3 點功能, 打算小小的改造一下.

首先解決重點解決第三個問題.

AlicFeng 之前使用的是集合, 順序得不到保證. 是以, 我在想, 是不是可以用 Map 類型來存儲.

經過查閱資料, 發現 Map 資料類型和 bash 相關, mac 下的 bash 是 3.x, 但是 Map 資料類型必須要 4.x 以上.

于是乎, 需要更新個 bash.

方法一: 更換系統的 bash, 需要重新開機電腦

mac 更新 bash 之前需要關閉 SIP(System Integrity Protection).

網上有很多文章關于如何操作, 先簡單介紹一下, 不清楚的可以去查閱資料.

首先重新開機電腦, 并按住 command+r 鍵, 進入恢複模式.

進入恢複模式的系統之後, 打開上方工具欄中"實用工具"下的"終端".

在終端中輸入

csrutil disable
           

成功之後, 重新開機電腦.

這個時候就可以更新 bash 了.

打開 iterm2, 輸入指令

brew install bash
           

更新成功之後輸入如下指令

# 替換bash
sudo mv /bin/bash /bin/bash.origin
sudo ln -s /usr/local/opt/bash/bin/bash /bin/bash
# 由于本mac版本下的sh并不是直接連結bash,而是bash的一個檔案拷貝。是以,還要替換預設的sh指向的指令為bash,如下:
sudo mv /bin/sh /bin/sh.origin
sudo ln -s /usr/local/opt/bash/bin/bash /bin/sh
           

這個時候可以通過指令來檢視是否成功

bash --version
           

安裝之後, 就可以重新開機電腦, 把 SIP 給啟動.

同樣進入恢複模式下輸入

csrutil enable
           

然後重新開機電腦.

方法二: 直接下載下傳新的 bash, 無需重新開機電腦

打開 iterm2, 輸入指令

brew install bash
           

這個時候需要把下載下傳下來的 lucy 腳本的 "開頭"部分, 加上一小段說明

#!/usr/local/bin/bash

           

表示使用我們目前下載下傳下來的 bash, 而不是系統目錄下面的 bash

還是打開 iterm2, 這個時候, 安裝一個小插件, 讓界面更漂亮

brew install toilet
           

安裝好之後, 就進入了正文.

首先介紹下, 檔案路徑.

首先到~目錄下, 建立一個檔案夾

mkdir ssh-lucy
           

建立一個 servers 的檔案. (無字尾).

檔案中内容放入以下東西

#伺服器IP	       賬号	       密碼		             	端口	    主機
           

實際最後放入的東西内容如下圖所示

Mac 電腦下最新實用ssh免密碼登入腳本

最後的主機一列, 存放的是我們用于尋找登入哪個伺服器的名稱, 也就是我們存入 Map 中的 key, 可以自定義.

存好伺服器位址之後, 就可以使用我們真正的腳本.

伺服器腳本最後保留一個空行.

我給她起了一個非常人性化的名字, 也是我心心念念的名字"lucy"([人類的始祖](<https://en.wikipedia.org/wiki/Lucy_(Australopithecus))

從 gayhub 上下載下傳檔案"lucy"之後, 放入本地的

/usr/local/bin
           

目錄.

修改檔案中的第十行内容"目錄"為 servers 存在的絕對路徑.

然後賦予這個檔案生命

chmod +x lucy
           

此刻大公告成.

此刻存在的指令如下, 延續了 AlicFeng 之前的命名

// l表示list, 表示檢視清單(不包含密碼)
lucy -l

// h表示help, 表示幫助
lucy -h

// s 表示ssh, 也就是平時我們使用的登陸方式
lucy -s 主機名

// p表示password, 展示包含密碼的檢視清單
lucy -p
           

效果如下:

Mac 電腦下最新實用ssh免密碼登入腳本
Mac 電腦下最新實用ssh免密碼登入腳本

如果您使用了這個小腳本, 希望可以保留 lucy 的名字, 讓我們給他一個生命的延續.

Mac 電腦下最新實用ssh免密碼登入腳本

繼續閱讀