2010-10-15 135 views
3

我知道我們shuld做 ssh user @ target 但我們在哪裏指定密碼?如何在shell腳本中使用ssh命令?


嗯感謝您的所有答覆。 我的要求是我必須在不同的機器上啓動一些服務器。所有服務器都應該使用一個shell腳本啓動。那麼,每次輸入密碼似乎都不錯,但我想我將不得不訴諸於此選項。我不想保存公鑰的一個原因是我可能無法每次連接到同一臺機器。很容易回頭修改腳本來改變目標地址。

+0

我很困惑:如果你的密鑰都在各自的機器上,那麼你可以在沒有密碼的情況下調用它們(假設你沒有將密碼與密鑰關聯)。這並不意味着你必須連接到每臺帶鑰匙的機器。 – wlangstroth 2010-10-15 01:39:43

回答

2

出於安全原因,這無法通過簡單的ssh命令完成。如果你想使用SSH密碼路線,下面的鏈接顯示了一些腳本來解決這個問題,如果你堅持:

Scripts to automate password entry

6

要做到這一點,最好的辦法是通過生成公鑰/私鑰對,並將您的公鑰存儲在遠程服務器上。這是一種安全的登錄方式,無需每次輸入密碼。 Read more here

+0

對於那些在Windows上,我推薦「膩子」工具集。對於這種情況,該選美工具將處理關鍵管理。 pglombardo給出了在* nix上使用公共密鑰驗證的概述。我在linux上設置了很多次,有時候這可能是一個挑戰。如果您在設置過程中遇到特定問題,請將其張貼在這裏 – RyanHennig 2010-10-15 18:55:55

+0

我認爲鏈接已損壞。 – ComputerScientist 2017-05-30 01:50:55

2

ssh命令會提示輸入密碼。在命令行中指定密碼是不安全的,因爲執行的完整命令通常是全球可見的(例如ps aux),並且也會以命令歷史文件中的純文本格式保存。任何寫得很好的程序(包括ssh)都會在必要時提示輸入密碼,並且將禁用電傳回顯以使其在終端上不可見。

如果您試圖從cron或從後臺執行ssh,請使用ssh-agent

2

我過去的做法是設置一對認證密鑰。

這樣,您就可以登錄而無需指定密碼,並且它可以在shell腳本中使用。這是一個很好的教程在這裏:

http://linuxproblem.org/art_9.html

0

如果你真的想使用密碼驗證,你可以試試期待。例如,請參閱here

1

SSH密鑰是標準/建議的解決方案。必須爲腳本將運行的用戶設置密鑰。

提供腳本的用戶,看看是否有任何按鍵設置在〜/ .ssh /(關鍵文件將與的.pub擴展名結尾)

如果你沒有任何按鍵的設置,你可以運行:

ssh-keygen -t rsa 

將生成的〜/ .ssh/id_rsa.pub(-t選項具有其它類型的爲好)

然後可以此文件中的內容複製到〜(遠程用戶)/ .ssh/authorized_keys在遠程機器上。

在腳本的用戶,你可以測試它的工作原理是:

ssh [email protected] 

你應該沒有密碼提示登錄。

沿着同樣的路線,現在當您的腳本從該用戶運行時,它可以自動SSH連接到遠程機器。