2013-06-28 15 views
1

如何使用配有密碼的私鑰的Ant的sshexec任務?如何獲得Ant sshexec使用非空密碼

我發現了以下解決方法:

  • 取下私有密鑰(最實用)的密碼
  • 傳遞口令,例如-Dpass=mypass(不安全)
  • 硬編碼密碼的命令行選項在Ant作業定義文件中(最差)

這些都不是我的好選擇,但第一個是可以接受的。

將私鑰加載到pageant似乎沒有任何幫助。從其他的答案就好像螞蟻正試圖訪問它,但它不能,回落至密碼驗證,其中失敗:

com.jcraft.jsch.JSchException: Auth cancel 
    at com.jcraft.jsch.Session.connect(Session.java:490) 
    at com.jcraft.jsch.Session.connect(Session.java:162) 
... (rest of the stack trace omitted) 

當無限強度JCE沒有安裝另一種常見的症狀,錯誤是這樣的:

com.jcraft.jsch.JSchException: The cipher 'aes256-cbc' is required, but it is not available. 
    at com.jcraft.jsch.KeyPair.loadPPK(KeyPair.java:942) 
    at com.jcraft.jsch.KeyPair.load(KeyPair.java:515) 
... (rest of the stack trace omitted) 

要回到我的問題,如何使其正常工作?使用私鑰加密碼,不需要在任何地方對它進行硬編碼或者在命令行輸入?最好使用pageant,我可以在運行Ant任務之前輸入密碼並存儲私鑰。

+0

您是否找到解決方案?我現在正在使用「從私鑰中刪除密碼」,但是我正在尋找解決方案,如果scp/sshexec可以使用'pageant'。 –

+0

@ChauCheeYang nope,還沒有找到。只要我這樣做,我會在這裏發佈。這不是一個真正的燃燒問題。 – janos

回答

1

如果你從命令行運行你的ant文件,你可能會問它你的密碼而不是硬編碼它。重要的部分是提示密碼,將其存儲在屬性中並在密碼參數中引用該屬性。

<target name="copy">  
    <input message="Enter passphrase for keyfile:" addproperty="the.password"> 
     <handler classname="org.apache.tools.ant.input.SecureInputHandler" /> 
    </input> 
    <upload-files host="the.host" /> 
    </target> 

    <macrodef name="upload-files"> 
    <attribute name="host" /> 
    <sequential> 
     <scp file="${the.file}" 
      todir="@{host}:directoryname/${filename}" 
      keyfile="${key.file}" passphrase="${the.password}" verbose="true"/>  
    </sequential> 
    </macrodef> 

要求:

  • 螞蟻1.7.1
  • Java 6中,如果是在Java 5上運行它會退回到 「正常」
  • 運行命令行從螞蟻文件(根據源日食不處理SecureInputHandler)

來源:http://www.dcepler.net/post.cfm/hiding-password-input-in-ant

相關問題