2012-06-12 214 views
0

您好我有以下腳本,使ssh登錄到我的服務器。SSH期待登錄密碼問題

spawn ssh [email protected] 
           expect "*(yes/no)?" 
          send "yes" 
           expect "password:" 
            send "pwd\n" 
           close 

它工作正常,但它沒有將'pwd'值傳遞給系統,所以腳本超時並退出。 有什麼建議嗎?

+1

我寧願建議在腳本中使用ssh密鑰來使用ssh,然後在該腳本文件中使用密碼。 –

+0

「它工作正常,但它不會將'pwd'值傳遞給系統,所以腳本超時並退出。」聽起來更像是根本不起作用? – niko

回答

1

您可以嘗試將「KbdInteractiveAuthentication」設置爲「否」 (ssh -o KbdInteractiveAuthentication="no" [email protected])。默認情況下,SSH使用鍵盤交互式身份驗證,這是expect可能無法理解的。

我強烈建議您使用公鑰認證來代替(正如Flo所推薦的那樣)。處理起來更方便,方式更安全,方式更舒適。如果您只是在尋找一種登錄遠程服務器的方式,而無需每次輸入密碼,請查看ssh-agent,它將在您的桌面會話中輸入一次後爲您存儲密碼。如果您確實不想輸入密碼,請使用pam_ssh,您的桌面登錄密碼將被使用。

0

默認情況下,尚未安裝expect命令。所以,你要安裝它來獲取正確的輸出。