Linux之ssh免密登錄方式彙總

爲什麼要配置免密:

  • 用腳本實現日常工作的自動化。
  • 增強 Linux 服務器的安全性。
  • 可以比別人提前30分鐘下班😄
一、SSH免密登錄
  • 本地生成公鑰和私鑰
ssh-keygen -t rsa -C "youname"
  • 配置本地公鑰到服務器
將~/.ssh/id_rsa.pub添加到服務器的~/.ssh/authorized_keys文件中(沒有就創建一個)。


注意.ssh文件夾和authorized_keys文件的權限. 
chmod 700 -R .ssh
chmod 600 authorized_keys 
二、expect腳本登錄

剛入職現在的公司時,已經有Mac配置免密的文檔,但是Windows電腦無法使用該文檔進行配置,但是我這個人不想一直輸入密碼(說白就是愛折騰),於是在網絡上一波搜索之後發現了expect命令(Expect是一個用來處理交互的命令),最後花了一點時間寫成了腳本自己使用,後續使用到自動上傳、下載文件到服務器以及推薦給同事使用😤。下面是一個簡單的登錄腳本,如果自己公司要通過跳板機才能登錄服務器的話,對該腳本進行簡單的改造即可使用,希望可以幫到大家。

  • 腳本內容
#!/usr/bin/expect

##################
#### expect.sh ####
##################

#設置需要的參數
set username "name"
set passwd "pwd"
set ip [lindex $argv 0]

#登錄服務器
spawn ssh -l $username $ip
expect {
# 第一次登錄服務器會有這個提示
"yes/no" { send "yes\r"; exp_continue}
"password:" { send "$passwd\r" }
}
# 一直與服務器保持連接
interact
  • 執行命令
expect expect.sh ip
三、sshpass腳本登錄

sshpass 是一個簡單、輕量級的命令行工具,通過它我們能夠向命令提示符本身提供密碼(非交互式密碼驗證)。
注意:使用 sshpass 是最不安全的,建議使用ssh免密登錄生產環境
1、sshpass安裝方式

  • brew安裝
brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
  • 編譯安裝
git clone https://github.com/jiaxionglee/sshpass.git
cd sshpass
./configure
make && make install

2、登錄命令

# 從文件中讀取密碼
sshpass -f pwd_office ssh -o "StrictHostKeyChecking no" name@ip
# 直接輸入密碼,不安全
sshpass -p pwd ssh -o "StrictHostKeyChecking no" name@ip

說明:-o "StrictHostKeyChecking no"用來解決第一次登錄服務器時的提示Are you sure you want to continue connecting (yes/no)?
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章