用于scp的Windows环境中的公钥设置问题

时间:2012-01-27 06:39:00

标签: hudson scp

我正在尝试配置Hudson作业以将Hudson作业的结果(由多个文件组成)复制到Hudson服务器中,以便从多个从属进行结果合并。我的意图是使用scp。不幸的是,我在Windows环境中设置SSH公钥/私钥很困难(slave和Hudson服务器都是windows环境)。我无法迁移到Linux,因为我不是这些机器的所有者。

我使用以下过程设置SSH公钥/私钥。

  1. 通过执行以下操作在Hudson计算机中配置ssh服务器:

    • cd C:\ Program Files \ OpenSSH \ bin
    • mkgroup -l>> .. \等\组
    • mkpasswd -l>> .. \等\ passwd中
    • mkpasswd -d -u test>> .. \ etc \ passwd(注意:test是用于SSH的用户ID)
    • 下载cygintl-2.dll&来自http://samanthahalfon.net/resources/cygwin_includes.zip的cygwin1.dll。将这些DLL文件复制到C:\ Program Files \ OpenSSH \ bin。 您将需要替换cygwin1.dll。
    • cd C:\ Program Files \ OpenSSH \ etc
    • .. \ bin \ chown test *
    • .. \ bin \ chmod 600 *
    • 使用以下配置编辑C:\ Program Files \ OpenSSH \ etc \ sshd_config:
      • Port 22
      • 协议2
      • StrictModes no
      • PubKeyAuthentication yes
      • AuthorizedKeysFile /c/home/test/.ssh/authorized_keys
      • PasswordAuthentication no
      • UserPrivilegeSeparation no
    • 通过执行:net start opensshd
    • 将其作为Windows服务启动
  2. 在Hudson机器中配置ssh公钥,以便不会提示测试自动化脚本输入密码:

    • 在从机中,使用“ssh-keygen -t dsa”命令创建密钥对。 默认情况下,密钥对(文件:id_dsa& id_dsa.pub)将生成到C:\ Documents and Settings \ test.ssh \
    • 使用“scp id_dsa.pub test@XX.XX.XX.XX:.ssh / id_rsa_upload.pub”命令将公钥上传到Hudson Server。 即scp id_dsa.pub test@XX.XX.XX.XX:.ssh / id_rsa_upload.pub
    • 在Hudson服务器中,转到目录C:\ Program Files \ OpenSSH.ssh,然后执行“type id_rsa_upload.pub>> authorized_keys”
    • 通过执行“net stop opensshd”和“net start opensshd”退出并重新启动Hudson服务器上的opensshd,现在您可以在没有密码的情况下登录ssh服务器。
    • 在Hudson服务器中,执行以下命令:
      • cd C:\ Program Files \ OpenSSH \
      • chown -R test。
      • chmod -R 700 .ssh
      • cd .ssh
      • chmod 600 authorized_keys
    • 在从属计算机中,编辑C:\ Program Files \ OpenSSH \ etc \ ssh_config。指定“IdentityFile / c / home / test / id_dsa”。
  3. 从您的从属计算机测试哪个SSH私钥已被执行。在从机中,通过执行以下命令连接:

    ssh test@XX.XX.XX.XX(IP是Hudson服务器的IP)

    不幸的是,它仍然提示输入短语。

  4. 我研究了以下可能性作为解决方法,但结果不是正面的:

    一个。 Hudson服务器中的共享驱动器映射到从机中的驱动器--Hudson不允许“copy result.html Y:”

    湾sftp - 它还需要公钥

    ℃。通过使用“copy result.html \ XX.XX.XX.XX \ test \”找到了解决共享驱动器问题的建议解决方案,但我遇到了访问被拒绝错误,因为我有    不知道如何使用此方法指定用户标识和密码。请参阅:Hudson continuous integration server: how to see Windows mapped directories that are visible to Ant?

    d:我也查看了Hudson的插件,找出了任何可能的解决方案,但找不到任何适合或不知道插件的用法。

    如果有人能够在公钥设置中发现我的错误或者为我提供一个替代解决方案来将多个文件复制到Hudson服务器中,那将是很棒的。感谢

1 个答案:

答案 0 :(得分:0)

您需要首先确定问题所在 - 服务器或客户端。

  1. 在任何Linux / Mac客户端上验证服务器设置相同的密钥(更透明)并尝试连接到服务器。

  2. 要验证您的从属计算机上的ssh是否加载了您的dsa身份密钥,请尝试下一步:

    ssh -i c:/ home / test / id_dsa -v test@XX.XX.XX.XX

  3. 其中-i告诉ssh获取密钥的位置,-v启用详细模式,这可以帮助您识别问题。