想在shell指令碼裡ssh連線到另外一台伺服器後執行一些命令,但是不希望通過互動方式輸入登入密碼。
主要的解決方法有三種:
1. 生成ssh公鑰,建立和對方機器的信任關係;
2. 使用expect指令碼;
3. 使用sshpass。
# tar zxvf sshpass-***x.tar.gz# cd sshpass-***x
# ./configure
# make && make install
基本用法:sshpass -p [密碼] ssh [user]@[host]
免去第一次登入機器時的確認提示(are you sure you want to continue connecting (yes/no)):
sshpass -p [密碼] ssh [user]@[host] -o stricthostkeychecking=no
後面也可以跟上其他ssh命令,如scp等
例1,公司的乙個環境,大部分機器的login密碼是"1root",少部分是"123qwe",新建乙個hssh.sh檔案,按如下修改,copy到/usr/bin/目錄下。
#!/bin/sh
#_main_
temp_file=/tmp/hssh.1
ip=192.168.$1
case "$1" in
"204.188"|"207.31"|"205.199") password="123qwe";;
*) password="1root"
esac
sshpass -p $password ssh root@$ip -o stricthostkeychecking=no 2>$temp_file
if [ $? != 0 ];then
#for some reason,machine had reinstall, we need to delete that ip address in known_hosts file before ssh it.
grep -q "remote host identification has changed" $temp_file
if [ $? = 0 ];then
key_file=`grep "offending key in" $temp_file | cut -d' ' -f 4 | cut -d ':' -f1 2>/dev/null`
cat $key_file | grep -v "$ip" > $temp_file
sudo cp -v $temp_file $key_file
sshpass -p $password ssh root@$ip -o stricthostkeychecking=no 2>$temp_file
fifi
那麼我們每次只要輸入hssh ***.*** 等就可以ssh到對應機器上了 ssh連線遠端伺服器自動輸入密碼
一 先安裝expect,expect是一套完成自動互動任務的軟體,主要命令有四個 1.spawn 命令用來啟動新的程序,spawn後的send和expect命令都是和使用spawn開啟的程序進行互動 2.expect 等待命令的反饋。3.send 接收到反饋之後,執行的互動命令。4.interact...
SSH連線到iOS裝置無法輸入 顯示中文
問題 預設情況下,ios裝置在ssh連線無法輸入 顯示中文 解決 解決方法 在 inputrc中加入如下內容 如果沒有 inputrc的話,就新建乙個 也可使用vim編輯,不過ios裝置需要自己通過cydia安裝才行。echo set input meta on inputrc echo set o...
如何阻止AirPods自動連線到Mac?
airpods總是自動連線mac電腦?如何如何阻止airpods自動連線到mac?本文帶來了詳細教程,一起用起來吧!有很多方法可以將airpods或airpods pro手動連線到mac。您甚至可以使用第三方工具,例如toothfairy 5.99 以獲得快速,可靠的方法。在macos big su...