自動化 ssh 授權(quán)筆記

每次 ssh user@host 登錄目標機器都要輸密碼是件很煩的事,特別是經(jīng)常訪問多臺主機的情況。 最近寫自動化腳本時碰到要自動做機器間 ssh 驗證,碰到一些問題記錄下來備忘。

分析

  1. 通過 ssh-keygen -t rsa -b 4096 -C "your_email@example.com" 命令生成本地機器的私鑰和公鑰: ~/.ssh/id_rsa and ~/.ssh/id_rsa.pub
  2. 授權(quán)就是將將本地機器的公鑰加入到目標機器的 ~/.ssh/authorized_keys 中供驗證用
  3. 本地 ~/.ssh/known_hosts 中信任目標機器的公鑰指紋

自動做 ssh-key 授權(quán)


# copy local ssh-key to remote 對應(yīng)分析中的第二步
cat ~/.ssh/id_rsa.pub | ssh root@192.168.37.110 "cat >> ~/.ssh/authorized_keys"

# add host to known_hosts 對應(yīng)分析中的第三步
ssh-keyscan -t rsa "192.168.37.110" >> ~/.ssh/known_hosts

或者這兩條命令可以精簡為如下一條

brew install ssh-copy-id # just for mac

ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.37.110

還有剩下的一個難題是還需要手動輸入密碼,這個怎么自動化呢?

# just for mac
brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb 

sshpass -p "PASSWORD" ssh-copy-id -i ~/.ssh/id_rsa.pub -o StrictHostKeyChecking=no root@192.168.37.110

或者使用 Fabric 等遠程執(zhí)行 run("cmd")

# tips 執(zhí)行 sudo 不需要手動輸入密碼
echo "PASSWORD" | sudo -S CMD

用 iterm2 做 terminal 管理

參考

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

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,715評論 19 139
  • SSH 為 Secure Shell 的縮寫,由 IETF 的網(wǎng)絡(luò)小組(Network Working Group...
    shuff1e閱讀 1,883評論 1 11
  • 我們知道如果要向遠程服務(wù)器傳輸數(shù)據(jù)和操作必須輸入用戶名和密碼遠程登錄服務(wù)器 ,或用FTP等協(xié)議,都需要權(quán)限控制。 ...
    歡醉閱讀 1,376評論 1 4
  • 說好的臺風呢,怎么沒有動靜了,樓下還是載歌載舞,童聲嬉鬧,一天的天空變了百八十遍,ZY還說好了今晚來跟我睡,還說要...
    李小小4161閱讀 395評論 0 0
  • 類和結(jié)構(gòu)體 1.Swift中類和結(jié)構(gòu)體有很多共同點: 定義屬性用于存儲值 定義方法用于提供功能 定義附屬腳本用于訪...
    cht005288閱讀 594評論 0 0

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