1

我按照以下步骤操作:

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

  2. 使用用户 ID 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. SSH root@Linuxserver 使用 git bash -> 无需输入密码即可登录

  6. 通过 Maven 的 SCP 不能无缝运行,并且总是要求输入密码。即使是 Linux root 的密码也不起作用,它会一次又一次地要求输入密码。

下面在 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 没有获取私钥。

4

1 回答 1

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

我对 Maven 配置了解不多,但您似乎正在尝试以 ABC 用户身份登录,在这种情况下,ABC 用户应该在其 authorized_keys 文件中拥有您本地用户的密钥

于 2013-02-20T15:29:25.393 回答