簡體   English   中英

使用ssh連接時是否可以自動向終端輸入值?

[英]Is it possible to automatically input value to the terminal when using an ssh connection?

我有特定服務器的用戶名,IP地址和密碼。 我想使用帶有ssh連接的sshpass連接到這些服務器。 這將是我與這些服務器的首次連接,因此ssh將保存其指紋。 我需要編寫代碼來處理任何詢問我是否要繼續連接以及輸入密碼的提示。

問題在於,由於它是新連接,它將提示我是否要繼續,並且不想為每個服務器鍵入“是”。 我將一次處理超過50台服務器,並且我不想手動輸入“ yes”,然后再輸入密碼。

這是我在bash中實際擁有的(虛擬)代碼:

ip="192.168.111.111"
user="user"
password="password"

sshpass -p $password $user@$ip "exit"

我收到此代碼的Host key verification failed的錯誤。

因此,我嘗試了: $user@$ip "exit"並提示我是否要繼續連接(是/否)。 我不想每次都輸入“ yes”,然后再輸入每個服務器的密碼。 可以有一些可以手動為您執行此操作的代碼嗎?

謝謝。 讓我知道是否需要進一步說明。 另外,我想避免使用Expect工具。

您可以通過在相關主機名下將此選項添加到〜/ .ssh / config中來禁用主機密鑰檢查。

Host xxx.xxx.xxx.xxx
    StrictHostKeyChecking no

您可以使用通配符來匹配IP范圍(例如, Host *可以用於全局設置)。 在配置中使用此選項,您應該可以使用以下命令:

sshpass -p"$password" ssh "$user"@"$ip"

如果您不想編輯配置文件,則可以在命令行上指定選項:

sshpass -p"$password" ssh -o StrictHostKeyChecking=no "$user"@"$ip"

請注意,通常,在這種情況下,建議使用SSH密鑰而不是密碼進行身份驗證,因為這有助於進行自動處理,否則將需要提示。 它也可以更安全,因為這意味着您的密碼不會以明文形式存儲在某處。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM