2014-10-10 121 views
0

這可能是一個非常愚蠢的問題,但我使用Ganymed ssh 2庫,我想知道如何使用Connection對象連接但使用無密碼的ssh。我嘗試使用鍵盤交互模式進行身份驗證,但似乎沒有得到支持。Ganymed ssh中的無密碼ssh

謝謝!

回答

0

這裏有幾個無密碼訪問機器的情況是方便或必要的。我一直在查找一系列命令,我只需複製並粘貼即可快速完成。他們來了。

生成密鑰對 - ssh的一種登錄模式是使用SSH密鑰對。密鑰對由私鑰和公鑰組成。私鑰保存在本地計算機上,而您的公鑰則是分發給所有想要登錄的計算機的密鑰。有幾種風格的密鑰可以生成,rsa1 (for SSH1),dsa (SSH2)rsa (SSH2)。根據我的IT人,他喜歡DSA。您可以(也應該)將密碼與密鑰對相關聯,以便即使其他人設法訪問您的帳戶,也只能使用密碼。如果您有多個密鑰對,則對所有密鑰對使用相同的密碼將使它們同時處於活動狀態。您也可以改變密鑰使用的位數。越難以破解,但我相信在標稱性能下降。我被推薦使用2048位。很好,它是2048位DSA密鑰。在強大的密碼 如果由於某種原因,你需要一個RSA密鑰

ssh-keygen -t dsa -b 2048 

#類型,你可以只更換此時,相應的參數, -t rsa or -t rsa1類型。
注:

  • 你需要確保文件的這個目錄 的權限設置爲允許讀取用戶只(-rw------- or chmod 600 *) /寫。最重要的文件是 authorized_keys和私鑰文件。如果您沒有正確設置權限,則有時登錄時將會以默認方式失敗 。
  • 複製公鑰到遠程機器 - 一旦你做你的密鑰對,你應該 你的公鑰複製到遠程機器上最好使用 加密方法,如SCP,並將其添加到您的.ssh/authorized_keys的 文件。你可以用一個命令來做到這一點。 cat〜/ .ssh/id_dsa.pub | SSH [email protected] '貓>>的.ssh/authorized_keys的'
  • 如果您需要在遠程機器上的貓

    的〜/ .ssh/id_dsa.pub一個.ssh目錄| ssh [email protected]'mkdir .ssh;貓>> 的.ssh/authorized_keys的

SSH代理 - 現在,你有一對,你可以嘗試登錄到遠程機器,你通常會。系統會提示您輸入密鑰對密碼。如果您在創建密鑰時將其留空,則可以直接按Enter(並在您身上)。如果您在此時按Enter鍵,並且您有密碼,則系統會提示您輸入遠程帳戶密碼。你可以避免使用ssh-agent來做到這一點。這將允許您在給定機器上輸入一次密鑰對的密碼並反覆重複使用。 ssh-agent將關於密鑰的信息存儲在該系統的內存中,所以如果您移動到另一個系統或重新啓動計算機,則必須再次運行ssh-agent。 ssh-agent也會輸出一些環境變量,你可以使用它來訪問內存中的密鑰。我有幾個別名幫助我解決這個問題。有一點需要考慮的是,添加一個時間限制你的密鑰在內存中活動的時間。如果你希望它們只持續一天,你可以添加-t 86400(那些是秒)到你的ssh-agent命令。

  • 對於tcsh

  • 激活密鑰對,並存儲了一些輔助文件。按

    運行一次
  • 要從中登錄的機器。

    alias agent'rm -f「$ HOME」/。ssh/hostname .agent; ssh-agent -t 86400 | grep -v echo>「$ HOME」/ .ssh/hostname .agent;源「$ HOME」/。ssh/hostname .agent; ssh-add'

  • 在'agent'之後的任何shell中運行此命令以激活密鑰。

    別名sshagent'if(-e「$ HOME」/。ssh/hostname .agent)source「$ HOME」/。ssh/hostname .agent; ENDIF '

  • 對於bash

    別名劑=' RM -f 「$ HOME」/ SSH/hostname .agent。 ssh-agent -t 86400 | grep -v echo>「$ HOME」/ .ssh/hostname .agent;源「$ HOME」/。ssh/hostname .agent; ssh-add' alias sshagent ='if [-e「$ HOME」/。ssh/hostname .agent];然後輸入「$ HOME」/。ssh/hostname .agent;網絡連接」

現在你應該簡單地能夠在機器上運行一次代理,然後每個殼sshagent一次。然後,您可以登錄到遠程機器,而不必輸入密碼。如果您的ssh代理過期(您會知道,因爲您會被要求輸入密碼),然後再次運行代理。 根訪問權限 - 您還可以授予用戶以root身份登錄到計算機的權限,而無需輸入root密碼。只需將用戶公鑰添加到root的authorized_keys列表中,然後用戶就可以使用root作爲用戶名登錄到本機。

建議,一旦你有遠程登錄爲root用戶的能力使用按鍵,您應該通過確保以下行不在/etc/ssh/sshd_config: PermitRootLogin不使用密碼,通過ssh禁用基於密碼的登錄