1. 程式人生 > >如何自動輸入密碼ssh連線到其他機器

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

想在shell腳本里ssh連線到另外一臺伺服器後執行一些命令,但是不希望通過互動方式輸入登入密碼。

主要的解決方法有三種:

1. 生成ssh公鑰,建立和對方機器的信任關係;

2. 使用expect指令碼;

3. 使用sshpass。

這裡介紹一下sshpass相關內容

下載並安裝sshpass):

# tar zxvf sshpass-xxxx.tar.gz

# cd sshpass-xxxx

# ./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 
[email protected]
$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
[email protected]
$ip -o StrictHostKeyChecking=no 2>$temp_file fi fi
那麼我們每次只要輸入hssh XXX.XXX 等就可以ssh到對應機器上了

相關推薦

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

想在shell腳本里ssh連線到另外一臺伺服器後執行一些命令,但是不希望通過互動方式輸入登入密碼。 主要的解決方法有三種: 1. 生成ssh公鑰,建立和對方機器的信任關係; 2. 使用expect指令碼; 3. 使用sshpass。 這裡介紹一下sshpass相

ssh連線自動輸入密碼

ssh 兩個ssh的實用小功能 長連線和指令碼輸入密碼 長連線 修改本地的ssh配置檔案 vim /etc/ssh/sshd_config 增加 TCPKeepAlive yes 自動輸

ssh采用expect實現自動輸入密碼登錄、拷貝

cep .html tro from 效果 方式 目標 led 交互 1. 引言 最近做了一個項目,需要頻繁與另一臺主機進行文件的傳輸;中間想到了很多方式:FTP、samba、curl等,但是還是感覺scp最好用。 SCP使用教程可參閱:http://www.jb51.

指令碼連結 ssh 自動輸入密碼

上週工作中,遇見一些重複性的工作,為了方便,於是寫起了指令碼。 在這個指令碼中,需要通過 s s

ssh自動輸入密碼登入伺服器/ssh輸入密碼登入/非互動ssh 密碼驗證

原文連結:http://hi.baidu.com/sdusoul/item/6a69b6953853e630326eeb21 由於經常需要登入一些遠端的伺服器,每次都需要將密碼重輸一遍,如下:#ssh 使用者名稱@我的伺服器的ip使用者名稱@我的伺服器的ip's pass

通過expect免自動輸入密碼登陸遠程服務器

新建 文件 安裝 nbsp exp 輸入密碼 spa 執行 0.10 通過expect免自動輸入密碼登陸遠程服務器 1、前提必須已經安裝expect 2、新建login.sh,文件內容如下 #!/usr/bin/expect -f spawn ssh [email 

shell中scp自動輸入密碼

shell``` #!/bin/bash des_pass=testtest expect -c " spawn scp target/aaa-0.0.1.war [email protected]/* */:/home/GameUser/MagicvesselUserWeb/aaa-releas

expect 普通用戶自動輸入密碼到root下,執行命令

expect案例:當前服務器取消了直接使用root登錄服務器,只能使用普通用戶先登錄,然後再su - root 執行root下的命令。 shell腳本如下: #!/usr/bin/expect -fset password {root_password}spawn su - rootexpect "

vmware三種網路模式介紹及nat模式下使用同一區域網的非宿主機ssh連線虛擬機器

1、vmware虛擬機器三種網路模式 開啟vmware虛擬機器,我們可以在選項欄的“編輯”下的“虛擬網路編輯器”中看到VMnet0(橋接模式)、VMnet1(僅主機模式)、VMnet8(NAT模式),那麼這些都是有什麼作用呢?其實,我們現在看到的VMnet0表示的是用於橋接

[work] sshfs掛載時自動輸入密碼

大家都知道登陸ssh可以用sshpass自動輸入密碼,但是掛載sshfs卻不行,其實sshpss是可以給sshfs輸入密碼的,只需要使用引數-o ssh_command=’sshpass -p password ssh’。 例如: sshfs -o ssh_command='sshpass

Vivo/Oppo手機安裝app時自動輸入密碼以及點選安裝

Vivo手機和Oppo等手機在安裝App的時候總是會有一個討厭的彈窗讓我們輸入密碼或者點選繼續安裝,嚴重的影響了開發效率。如下圖所示 這簡直是無法忍受。於是想著寫一個軟體幫我自動點選。第一是想到的用輔助功能在介面上點。這樣是可以,但是經常服務在後臺被莫名其妙的停止了,而且在密碼窗介

不能ssh連線ubuntu linux 伺服器 secureCRT不能ssh連線伺服器 不能遠端ssh連線虛擬機器的ubuntu linux

我是用的是secureCRT,遠端連線我的虛擬機器裡面的ubuntu 直接報錯,連線不上 1,先分別在windows上ipconfig和ubuntu上ifconfig下 互ping一下,是可以ping通的 2,ubuntu上ssh localhost 發現時沒有ssh服務 3.執行命令

postgresql在windows下備份的批處理檔案(修改版),提示輸入密碼時,能自動輸入密碼

在網上找到一篇文章《PostgreSQL Windows自動備份指令碼》 覺得不錯,試了一下,發現批處理檔案執行停止在提示輸入密碼那。 >pg_dump -U postgres -W  database1 > c:/backup.tar >passwo

Linux下後臺程式完成自動輸入密碼等互動行為的例子

今天要開發一個定時任務,然後加入cron列表中。但是有個問題擺在眼前,指令碼的執行中需要輸入資料庫密碼: mysql -u root -p << SQL use db; set names utf8; `cat task.sql` SQL 執行上述程式碼後,會

linux 下如何通過ssh其他機器然後執行命令?

在Linux下經常寫shell指令碼,當然少不了需要在各臺機器上執行命令了。 假如現在我要在10.2.226.201上寫shell並且執行這個shell指令碼。可是這個指令碼需要在10.2.226.202和10.2.226.203上執行一下命令。如何實現呢? 摸索了幾種方法

Shell指令碼互動之:自動輸入密碼

Shell指令碼互動之:自動輸入密碼 2016年04月09日 19:41:26 zhangjikuan 閱讀數:58208 標籤: Shell互動自動輸入密碼expect重定向管道 更多

ubuntu執行sh指令碼sudo自動輸入密碼

示例: sudo apt-get update  第一種方法:使用管道(上一個命令的 stdout 接到下一個命令的 stdin): #!/bin/bashecho password | sudo

Linux SSH 登入其他機器

ssh命令用於遠端登入上Linux主機。 常用格式: ssh [-l login_name] [-p port] [[email protected]]hostname 更詳細的可以用ssh -h檢視。 舉例 不指定使用者: ssh

python, linux shell 使用expect模組自動輸入密碼

Pexpect 是一個自動控制的 Python 模組,可以用來ssh、ftp、passwd、telnet 等命令列進行自動互動。 官方網站是 http://www.noah.org/ 通過它,可以實現類似 expect 的操作。 例如我們可以用它來寫python指令碼

VirtualBox安裝Centos,配置網路(主機可以通過SSH連線虛擬機器系統,同時虛擬機器系統可以訪問外網)

環境: 主機:Windows 7-64bit 主機聯網方式:寬頻撥號連線 虛擬機器:Oracle VM VirtualBox 4.1.8 虛擬機器系統:Centos 6.2       我的目標很簡單,既要再Windows 7中能通過SSH連線到Centos,同時在Cen