gpt4 book ai didi

Windows TortoiseHg plink 在克隆/推送后挂起

转载 作者:可可西里 更新时间:2023-11-01 13:27:10 25 4
gpt4 key购买 nike

我们有一个全 Windows 网络,我正在尝试让 Tortoise Mercurial 启动并通过 SSH 运行,作为我们小团队使用的中央存储库。我可以让它在大部分情况下工作,但 plink/tortoiseplink 在成功执行命令后挂起(克隆/推送等)

我已经在我们的 Widnows 2008 rc2 服务器上设置了 Freesshd 和 Tortoise Hg。我已经使用 PuttyGen 在服务器上生成了自己的公钥/私钥(在客户端上生成了问题)。我复制到我的客户端并更新了 mercurial.ini 的私钥。公钥 我重命名并更新 Freesshd 以指向包含公钥的文件夹。
在客户端,我已向 Pageant 注册了我的私钥,在 Putty 中创建了一个 session ,并将其指向我的私钥并保存了它。
当我使用 Putty 进行初始连接时,事情开始变得奇怪。

我收到用户名的命令提示符(没有密码提示),并且在命令提示符下(身份验证后),我无法键入。
可能是腻子的问题。我将尝试通过 (TortoisePlink.exe) 使用 Tortoise。

在 mercurial.ini 我有:
[用户界面]
ssh = "C:\putty\TortoisePlink.exe"-ssh -2 -batch -C -i C:\Users\Jude.ssh\JudePrivate.ppk

如果我使用控制台,我可以克隆 repo,但它在完成所有操作后挂起。使用 --debug,最后一行是:
更新了 3 个文件,合并了 O 个文件,删除了 0 个文件,0 个文件未解决

当文件确实获得克隆时,我会期望什么。但后来我不能做任何其他事情。 Ctrl+C什么都不做,我必须终止这个过程。 (顺便说一下,然后在命令提示符处显示 Ctrl^C 以及键盘的其余部分)。

存储库被克隆,文件的正确版本出现,但控制台窗口没有关闭或让我重新控制。

如果我尝试使用 Hg Workbench,我会遇到类似的问题。我可以克隆和推送 - 它确实发生了 - 但使用 GUI 我得到:

% hg --repository C:\repositories\HgTest push --debug          
ssh://Jude@dev01:22/d:/repositories/hgtest
pushing to ssh://Jude@dev01:22/d:/repositories/hgtest
running "C:\putty\TortoisePlink.exe" -ssh -2 -batch -C -i
C:\Users\Jude\.ssh\JudePrivate.ppk Jude@dev01 -P 22 "hg -R d:/repositories/hgtest serve --stdio"
sending hello command
sending between command
remote: 145
remote: capabilities: lookup changegroupsubset branchmap pushkey known getbundle unbundlehash batch stream unbundle=HG10GZ,HG10BZ,HG10UN httpheader=1024
remote: 1
query 1; heads
sending batch command
searching for changes
all local heads known remotely
no changes found
sending listkeys command
checking for updated bookmarks
sending listkeys command

工作台顶部的绿色栏和底部的状态栏一样显示“正在推送到 ssh://Jude@dev01:22/d:/repositories/hgtest...”。我整个周末都这样离开了,当我回来时,它仍然如此。我仍然可以使用 Hg Workbench(有点)但不能使用拉/推/克隆。尝试关闭 Hg Workbench 会导致消息(在状态栏中) Sync tab cannot exit我无法关闭该应用程序。杀死 TortoisePlink.exe(或 Plink.exe,无论我尝试哪个)可以释放应用程序,我可以正常使用它或关闭它。

最初我认为这是 TortoiseHg 或 TortoisePlink 的问题,但从 Putty 站点下载 Plink 的结果相同。

澄清:
- 我可以通过 SSH 推送/克隆并且没有密码提示
- 我可以通过命令行或 Hg Workbench 执行此操作
- 无论我使用哪种方法(或 Plink.exe 或 TortoisePlink.exe),都需要手动终止进程。

使用的软件+版本
客户端(Windows Vista 32 位)
Tortoise Hg 2.3(merc 2.1,Python 2.6.6)
普林克 0.62
服务器 -(Windows 2008 服务器 rc2)
FreeSSHd 1.2.4
和上面一样的乌龟

大量的搜索没有产生任何用处。我已经尝试了我看到的所有建议(即使稍微相关)但无济于事。由于实际功能正在运行,我假设我已经正确设置了 key 、SSH、Tortoise 等。

我希望我在某处遗漏了一个简单的选项,但我怀疑它正在等待某种用户提示。

手指交叉:)

=== 更新 ===

我找到了 Putty 的事件日志(右键单击 Putty 控制台窗口,瞧,“事件日志”选项。加载 session 并单击打开后,我会看到控制台窗口和 login as: 提示。键入我的名称并点击返回,我得到:
Reading private key file "C:\Users\Jude\.ssh\JudePrivate.ppk"
Pageant is running. Requesting keys.
Failed to get reply from Pageant
Offered public key
Offer of public key accepted
Sent public key signature
Access granted
Opened channel for session
Allocated pty (ospeed 38400bps, ispeed 38400bps)
Started a shell/command

在这个阶段,我的命令提示符更改为 c:\Windows\system32>并且不能输入任何东西。

=== 更新 2 ===

使用 plink 我在控制台执行以下操作:
plink -v -ssh Jude@dev01 "cmd /c echo hello"
而且,以及 -v 提供的所有信息,我看到 hello然后 Server sent command exist status 0Disconnected: All channels closed .这是我所期望的。

如果我使用 tortoiseplink 执行此操作,`tortoiseplink-v -ssh Jude@dev01 "cmd/c echo hello"' 我看不到任何返回或写入窗口,并且我再次收到命令提示符。

这意味着 SSH 与别名 (dev01) 一样工作。但是在使用 TortoisePlink 时我应该看到一些东西吗?

打字 hg clone --verbose -- ssh://Jude@dev01/d:/repositories/hgtest C:\repositories\test再次获取文件,将它们复制到测试文件夹,但不返回命令提示符。最后一行是 3 files updated...等等。

=== 更新 3 ===

似乎 hg.exe 是由服务器上的 FreeSSHd 生成的,它确实关闭/完成。当 hg.exe 进程在服务器上被杀死时,客户端(控制台/克隆对话框)会正常运行并完成命令。

澄清:
  • 我从命令行或 HG Workbench 使用 clone 并指定 repo alias
  • 根据日志,一切正常,我通过了身份验证,文件通过 SSH 拉下并复制到我在 1
  • 中指定的本地存储库中
  • 此时它挂起 - 无论是控制台还是 HG Workbench 或右键单击/克隆选项。
  • 在服务器上使用 Process Explorer 允许我杀死由 FreeSSHd 服务产生的 hg.exe
  • 一旦我这样做,客户就会说“命令成功完成”。

  • 因此,现在服务器上的 Tortoise Hg 似乎是一个问题。也许 FreeSSHd 和 Tortoise 不能很好地一起玩......我想我会重新安装所有东西......

    === 更新 4 ===

    看来我不是唯一一个遇到这个问题的人。我之前在 SO 上发现过这一点,但当时并不相关。但是,现在我遇到了同样的问题: Mercurial over ssh client and server on Windows
    这个问题没有解决(两年前)所以我应该保持这个问题开放吗?

    最佳答案

  • 首先 - 阅读文档!
    hg help urls
    Valid URLs are of the form:

    ....

    ssh://[user@]host[:port]/[path][#revision]
  • Plink 使用 -l 选项作为用户名
  • 使用纯 TortoisePlink 调试成功的 ssh 连接(和可用路径),删除所有不必要的选项
  • 关于Windows TortoiseHg plink 在克隆/推送后挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9567806/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com