如何自動輸入密碼ssh連線到其他機器

2021-06-13 08:03:03 字數 1472 閱讀 3925

想在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...