使用Maven 2.2从Windows计算机向Linux服务器发送文件时始终询问密码:

时间:2013-02-20 14:27:33

标签: maven ssh passwords scp private-key

我按照以下步骤操作:

  1. 使用git bash在Windows机器上使用用户ID ABC创建SSH密钥。

  2. 使用userid root将公钥复制到linux服务器:

    scp ~/.ssh/id_rsa.pub root@Linuxserver:~/.ssh/.

    它要求输入密码并复制文件。

  3. 使用git bash的SSH root @ Linuxserver - >输入Linux服务器密码 - >登录到linux服务器。

  4. 将公钥复制到Linux服务器的.ssh中的authorized_keys:

    cat id_rsa.pub >> authorized_keys

  5. 使用git bash的SSH root @ Linuxserver - >无需密码即可登录

  6. SCP通过Maven无法无缝工作并始终要求输入密码。即使Linux root的密码也不起作用,它会一次又一次地要求输入密码。
  7. 下面是Maven设置的文件:

    <server>
        <id>Linuxserver</id>
        <username>ABC</username>
        <privateKey>${user.home}/.ssh/id_rsa</privateKey>
        <filePermissions>664</filePermissions>
        <directoryPermissions>775</directoryPermissions>
        <configuration></configuration>
    </server>
    

    以下是pom.xml的摘录:

    <extensions>
          <extension>
           <groupId>org.apache.maven.wagon</groupId>
           <artifactId>wagon-ssh</artifactId>
           <version>1.0-beta-6</version>
         </extension>
    </extensions>
    
    ...
    
    <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>wagon-maven-plugin</artifactId>
          <version>1.0-beta-3</version>
          <configuration>
             <serverId>Linuxserver</serverId>
             <fromFile>${project.parent.basedir}/projectname/filename</fromFile>
             <url>scp://Linuxserver.com/testdirectory</url>
           </configuration>
           <executions>
             <execution>
               <id>upload-file-to-server</id>
               <phase>verify</phase>
               <goals>
                 <goal>upload-single</goal>
               </goals>
             </execution>
           </executions>
    </plugin>
    

    我希望SCP在没有任何用户互动的情况下发生。简而言之,问题似乎是Maven SCP没有拿起私钥。

1 个答案:

答案 0 :(得分:0)

让我们举一个例子:

localuser $ ssh remoteuser@server.com

现在SCP或SSH使用检查两件事(考虑公钥授权):

  1. 发出ssh命令的用户私钥,通常为〜/ .ssh / id_rsa。在示例中,它将是/home/localuser/.ssh/id_rsa

  2. 用户的公钥,在您登录的用户的〜/ .ssh / authorized_keys文件中。在我们的例如在远程服务器上它将是/home/remoteuser/.ssh/authorized_keys

  3. 我对Maven配置知之甚少,但看起来你正试图以ABC用户身份登录,在这种情况下,ABC用户应该在其authorized_keys文件中拥有本地用户的密钥