Mac 電腦下最新實(shí)用ssh免密碼登錄腳本


使用SecureCRT痛苦之后的崛起
mac 系統(tǒng)上我一直少有發(fā)現(xiàn)一款好用的 ssh 工具, 免去我記住多個密碼的煩惱.

經(jīng)過大量時間的尋找, 我發(fā)現(xiàn)了一款名為 SecureCRT 的工具, 可以在 mac 系統(tǒng)上使用, 的確可以免除我記住大量密碼的煩惱, 但是使用的痛苦也隨之而來.

  1. 不存在清理屏幕的快捷鍵
    經(jīng)常登錄服務(wù)器進(jìn)行測試環(huán)境的日志查閱, 這個時候, 界面上停留的可能有進(jìn)入多少級目錄, 然后打了什么命令, 已經(jīng)其他很多無關(guān)緊要的東西在上面. 這個時候清理屏幕就顯的很重要, 但是 CRT 不支持. 只能傻傻的通過工具欄上方的按鈕去清除屏幕.
  2. vim 之后不能滾輪滑動
    文字已經(jīng)很能說明問題了, 我就不多贅述.
  3. 我自己的 Iterm2 上操作的很開心, 不能用他我就不開心
    這一點(diǎn)尤為重要.

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

之前的腳本存在幾個問題

  1. 不能展示出來列表
    我目前存了多少個服務(wù)器, 我記不住, 也不能展示出來
  2. 好端端的壞了
    進(jìn)入服務(wù)器之后, 啥也不能干.

通過網(wǎng)上苦苦的搜索, 我找到一個朋友寫的一個東西非常棒. fork 了他的項(xiàng)目, 改編了一下, 使其能更好的適用于我的電腦.
此處感謝 AlicFeng 的文章給我的幫助, 此處是github 地址.

首先說說為什么要重寫

  1. 電腦上下載的時候總是提示需要管理員的權(quán)限, 但是已經(jīng)使用了, 不厭其煩
  2. 廢了好多功夫弄到本地之后, 感覺不是太會用. 這一點(diǎn)很尷尬.
  3. 簡書評論區(qū) 2 樓回復(fù)的很好, 在此引用一下

    -s 登錄的時候,后面的編號并不是 ini 文件中的 Index 項(xiàng),而是取決于 shell 過濾出來的 ini 文件順序

基于上面 3 點(diǎn)功能, 打算小小的改造一下.

方法一: 更換系統(tǒng)的 bash, 需要重啟電腦

方法1 begin


首先解決重點(diǎn)解決第三個問題.
AlicFeng 之前使用的是集合, 順序得不到保證. 因此, 我在想, 是不是可以用 Map 類型來存儲.
經(jīng)過查閱資料, 發(fā)現(xiàn) Map 數(shù)據(jù)類型和 bash 相關(guān), mac 下的 bash 是 3.x, 但是 Map 數(shù)據(jù)類型必須要 4.x 以上.
于是乎, 需要升級個 bash.

mac 升級 bash 之前需要關(guān)閉 SIP(System Integrity Protection).
網(wǎng)上有很多文章關(guān)于如何操作, 先簡單介紹一下, 不清楚的可以去查閱資料.
首先重啟電腦, 并按住 command+r 鍵, 進(jìn)入恢復(fù)模式.

進(jìn)入恢復(fù)模式的系統(tǒng)之后, 打開上方工具欄中"實(shí)用工具"下的"終端".

在終端中輸入

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的一個文件拷貝。因此,還要替換默認(rèn)的sh指向的命令為bash,如下:
sudo mv /bin/sh /bin/sh.origin
sudo ln -s /usr/local/opt/bash/bin/bash /bin/sh

這個時候可以通過命令來查看是否成功

bash --version

安裝之后, 就可以重啟電腦, 把 SIP 給啟動.
同樣進(jìn)入恢復(fù)模式下輸入

csrutil enable

然后重啟電腦.

方法1 over


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

方法2 begin


打開 iterm2, 輸入命令

brew install bash

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

#!/usr/local/bin/bash

表示使用我們當(dāng)前下載下來的 bash, 而不是系統(tǒng)目錄下面的 bash

方法2 over


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

brew install toilet

安裝好之后, 就進(jìn)入了正文.

首先介紹下, 文件路徑.

首先到~目錄下, 創(chuàng)建一個文件夾

mkdir ssh-lucy

創(chuàng)建一個 servers 的文件. (無后綴).

文件中內(nèi)容放入以下東西

#服務(wù)器IP         賬號          密碼                       端口      主機(jī)

實(shí)際最后放入的東西內(nèi)容如下圖所示

最后的主機(jī)一列, 存放的是我們用于尋找登錄哪個服務(wù)器的名稱, 也就是我們存入 Map 中的 key, 可以自定義.

存好服務(wù)器地址之后, 就可以使用我們真正的腳本.

服務(wù)器腳本最后保留一個空行.

我給她起了一個非常人性化的名字, 也是我心心念念的名字"lucy"(人類的始祖

gayhub 上下載文件"lucy"之后, 放入本地的

/usr/local/bin

目錄.

修改文件中的第十行內(nèi)容"目錄"為 servers 存在的絕對路徑.

然后賦予這個文件生命

chmod +x lucy

此刻大公告成.

此刻存在的命令如下, 延續(xù)了 AlicFeng 之前的命名

// l表示list, 表示查看列表(不包含密碼)
lucy -l

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

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

// p表示password, 展示包含密碼的查看列表
lucy -p

效果如下:

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容