1. 程式人生 > >【Linux】Linux作業系統——配置ssh免密碼登入遠端伺服器

【Linux】Linux作業系統——配置ssh免密碼登入遠端伺服器

ssh免密碼登入遠端伺服器


最簡單的操作

ssh免密碼登入的原理是把本地電腦的公鑰放在宿主機,然後使用本地電腦的私鑰去認證。

  1. 在本地電腦執行 /usr/bin/ssh-keygen -t rsa,安裝提示一直回車即可,最後會看到~/.ssh目錄下多了幾個檔案id_rsa (私鑰)id_rsa.pub (公鑰)。
  2. 在本地電腦執行 scp ~/.ssh/id_rsa.pub [email protected]_server:拷貝~/.ssh/id_rsa.pub到需要遠端登入的伺服器的家目錄下。
  3. 使用密碼登入遠端伺服器,執行mkdir -p ~/.ssh; cat ~/id_rsa.pub >>~/.ssh/authorized_keys; chmod 700 ~/.ssh;
  4. chmod 600 >>~/.ssh/authorized_keys.
  5. 退出,再嘗試登入,應該就不需要輸入密碼了。

使用sshpass非互動的ssh密碼驗證

sshpass是非互動性ssh登入工具,把密碼作為引數或儲存在配置檔案中提供,省去了多次輸入密碼的麻煩。

sshpass的安裝:

wget 'https://downloads.sourceforge.net/project/sshpass/sshpass/1.06/sshpass-1.06.tar.gz?r=https%3A%2F%2Fsourceforge.net%2Fprojects%2Fsshpass%2F&ts=1496021628&use_mirror=jaist' -O sshpass-1.06.tar.gz

tar xvzf sshpass-1.06.tar.gz

cd sshpass*
./configure --prefix=/install_path
make
make install
# 加入環境變數
# 登入遠端伺服器
sshpass -p 'password' ssh [email protected]_host  

# execute command from remote server
sshpass -p 'password' ssh [email protected]_host 'ls' 

# Remote login multiple servers; -tt should be used when error 
# 'Pseudo-terminal will not be allocated because stdin is not a terminal' appears.
sshpass -p 'password' ssh -tt 
[email protected]
_host \ 'source ~/.bashrc; sshpass -p "password" ssh -tt [email protected]_remote_host "Execute other command"'