【Linux】Linux作業系統——配置ssh免密碼登入遠端伺服器
阿新 • • 發佈:2018-12-13
ssh免密碼登入遠端伺服器
最簡單的操作
ssh免密碼登入的原理是把本地電腦的公鑰放在宿主機,然後使用本地電腦的私鑰去認證。
- 在本地電腦執行
/usr/bin/ssh-keygen -t rsa
,安裝提示一直回車即可,最後會看到~/.ssh
目錄下多了幾個檔案id_rsa (私鑰)、id_rsa.pub (公鑰)。
- 在本地電腦執行
scp ~/.ssh/id_rsa.pub [email protected]_server:
拷貝~/.ssh/id_rsa.pub
到需要遠端登入的伺服器的家目錄下。 - 使用密碼登入遠端伺服器,執行
mkdir -p ~/.ssh; cat ~/id_rsa.pub >>~/.ssh/authorized_keys; chmod 700 ~/.ssh;
chmod 600 >>~/.ssh/authorized_keys
.- 退出,再嘗試登入,應該就不需要輸入密碼了。
使用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"'