2012-12-31 52 views
3

SSH命令行命令提示用戶,像這樣一個密碼:發送數據從C程序的命令行提示輸入密碼

密碼:

在C,當我這樣做:

system("ssh [email protected]"); 
system("password"); 

命令行將提示用戶並忽略來自我的程序的任何輸入。它似乎總是接受用戶鍵入的輸入。有沒有辦法重定向輸出,我把它輸入到標準輸出並將其輸入到密碼提示符爲SSH?

我已經嘗試了各種東西,從上述治療ssh作爲像這樣一個文件指針:

FILE *ssh = popen("ssh -t -t -S -o StrictHostKeyChecking=no [email protected]", "w"); 

,然後寫入該文件的指針,但似乎沒有工作。

+0

在這裏搜索'[bash] ssh password'來查看你的反應。你可以使用'expect'來'輸入'你的密碼,或者使用ssh特性公鑰密碼文件,或者重新創建'expect'。祝你好運。 – shellter

回答

3

確實。 SSH將打開/dev/tty並直接從中讀取密碼,因此無法以任何方式傳遞它。正如shiplu說的,除了使用libssh2之外,我知道沒有辦法改寫這種行爲。

+0

Mannnnn。那麼安全工具Hydra是如何做到的?我一直在翻閱源代碼,但它的速度很慢。 – barndog

0

還有另一種方法可以解決您的問題 - ssh-keygenssh-copy-id

實質上,您將公鑰複製到主機一次;之後,任何連接,ssh會自動使用其私有密鑰登錄。

運行

ssh-keygen 

命中輸入3次。兼營:

ssh-copy-id [email protected] 

,並鍵入密碼。

就是這樣。

+0

這就是不安全! –

+0

@ shiplu.mokadd.im以何種方式? –

+0

「擊中輸入3次」這是一個密碼較少的鍵 –