2016-03-15 46 views
2

我得到運行應答終端查詢和登錄SSH自動

workssh() { sshpass -p "password" ssh [email protected]$1 ;} 

它示數至主機是未知的,由於沒有響應:

cchilders: [master]$ ssh [email protected] 
The authenticity of host 'host (10.10.10.10)' can't be established. 
RSA key fingerprint is aa:aa:aa:aa:aa:aa:aa:aa. 
Are you sure you want to continue connecting (yes/no)? yes 
Warning: Permanently added 'host, 10.10.10.10' (RSA) to the list of known hosts. 
[email protected]'s password: 
Last login: Tue Mar 15 11:16:03 2016 from 10.55.55.55 

如果我用手工登錄一次,說是的,功能workssh現在工作。我怎麼才能使這個命令第一次工作,即使iworkssh(){sshpass -p「password」ssh user @ $ 1;} f主機是未知的?謝謝

+2

理論上這是一個特徵。您不應將密碼發送給您尚未確認身份的遠程主機。 – chepner

回答

1

首先:@chepner在評論中說了些什麼;我爲不要建議這樣做是出於安全原因。但是,這裏是你的答案,反正:

workssh() { if $(grep -vq $1 ~/.ssh/known_hosts); then ssh-keyscan $1 >> ~/.ssh/known_hosts; fi ; sshpass -p "password" ssh [email protected]$1 ;} 

注:這個工作,你需要有HashKnownHosts設置爲沒有男子ssh_config中,其中,在本身,被認爲是一個安全隱患。

1

你可以在井下,作爲對方的回答提出的,但如果你想成爲不安全的,也有更多的簡單的方法來做到這一點:

workssh() { sshpass -p "password" ssh -oUserKnownHostsFile=/dev/null -oStrictHostKeyChecking=no [email protected]$1 ;} 

它會做基本相同。但是再次強調,不建議這麼做,因爲主機檢查是保護您免受中間人攻擊的唯一機制,正如您在測試中可能已經注意到的一樣。

+0

我看到,如果您在主持人檢查之前通過了密碼,任何人都可以跳入並假裝成爲該主持人。有什麼辦法讓人們知道你在做什麼?還是隻是打開你隨機mitm攻擊 – codyc4321

+1

點MiTM攻擊是用戶不會注意到任何東西。遠程服務器可以對您發佈的內容進行重新編碼,併成爲閱讀您的密碼和您輸入/傳輸的所有內容的透明界面。您可以通過提供SSHFP DNS記錄或提供事先驗證主機的預先生成的'known_hosts'文件來讓用戶更輕鬆。 – Jakuje

+0

好吧,預先生成的已知主機很棒。這個腳本是一個在python中的自動設置,所以如果我需要重新安裝,我可以對機器設置做一些小改動,謝謝 – codyc4321