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

description: 使用SecureCRT痛苦以後的崛起git

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

通過大量時間的尋找, 我發現了一款名爲 SecureCRT 的工具, 能夠在 mac 系統上使用, 的確能夠免除我記住大量密碼的煩惱, 可是使用的痛苦也隨之而來.shell

  1. 不存在清理屏幕的快捷鍵 常常登陸服務器進行測試環境的日誌查閱, 這個時候, 界面上停留的可能有進入多少級目錄, 而後打了什麼命令, 已經其餘不少可有可無的東西在上面. 這個時候清理屏幕就顯的很重要, 可是 CRT 不支持. 只能傻傻的經過工具欄上方的按鈕去清除屏幕.
  2. vim 以後不能滾輪滑動 文字已經很能說明問題了, 我就很少贅述.
  3. 我本身的 Iterm2 上操做的很開心, 不能用他我就不開心 這一點尤其重要.

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

以前的腳本存在幾個問題bash

  1. 不能展現出來列表 我目前存了多少個服務器, 我記不住, 也不能展現出來
  2. 好端端的壞了 進入服務器以後, 啥也不能幹.

經過網上苦苦的搜索, 我找到一個朋友寫的一個東西很是棒. fork 了他的項目, 改編了一下, 使其能更好的適用於個人電腦. 此處感謝 AlicFeng 的文章給個人幫助, 此處是github 地址.服務器

首先說說爲何要重寫ssh

  1. 電腦上下載的時候老是提示須要管理員的權限, 可是已經使用了, 不厭其煩
  2. 廢了好多功夫弄到本地以後, 感受不是太會用. 這一點很尷尬.
  3. 簡書評論區 2 樓回覆的很好, 在此引用一下

    -s 登陸的時候,後面的編號並非 ini 文件中的 Index 項,而是取決於 shell 過濾出來的 ini 文件順序工具

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

首先解決重點解決第三個問題. AlicFeng 以前使用的是集合, 順序得不到保證. 所以, 我在想, 是否是能夠用 Map 類型來存儲. 通過查閱資料, 發現 Map 數據類型和 bash 相關, mac 下的 bash 是 3.x, 可是 Map 數據類型必需要 4.x 以上. 因而乎, 須要升級個 bash.ui

方法一: 更換系統的 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 帳號 密碼 端口 主機
複製代碼

實際最後放入的東西內容以下圖所示

最後的主機一列, 存放的是咱們用於尋找登陸哪一個服務器的名稱, 也就是咱們存入 Map 中的 key, 能夠自定義.

存好服務器地址以後, 就可使用咱們真正的腳本.

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

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

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
複製代碼

效果以下:

若是您使用了這個小腳本, 但願能夠保留 lucy 的名字, 讓咱們給他一個生命的延續.
相關文章
相關標籤/搜索