【问题标题】:I was told Git SSH is not interactive?有人告诉我 Git SSH 不是交互式的?
【发布时间】:2021-11-17 05:43:38
【问题描述】:

在我发现this tutorial 之前,我已经完成了许多所需的步骤。这包括制作密钥对并通过网站将密钥插入 gitlab 帐户。

在 Windows 10 上,使用 Putty GUI,我选择了我的私钥,然后通过 SSH 连接到:git@gitlab.com:mycompanyname-go/fuzzing.git

出现一个控制台窗口并显示以下内容:

Server refused to allocate pty.
Welcome to gitlab, @MyUsernameHere

为什么我的 SSH 控制台窗口在我输入任何命令之前就关闭了?我认为这与“服务器拒绝分配 pty”部分有关

与我合作的一位开发人员说,这种情况正在发生“因为 gitlab 不像 SSH 那样具有交互性”,并且我需要以另一种方式连接。如果是这种情况,我希望有人可以逐步列出如何做到这一点,因为它让我发疯。

【问题讨论】:

  • git 使用 SSH 只是为了推/拉,而不是为了运行命令。

标签: git ssh gitlab repository putty


【解决方案1】:

git clone git@gitlab.com:example.com/fuzzing.git。 ssh 是为 shell 访问而构建的,但它构建得非常好,它的基础远不止于此。

为什么我的 SSH 控制台窗口在我输入任何命令之前就关闭了?

因为当你自己使用ssh 命令时,默认情况下它会要求普通的shell 访问。 Gitlab 看到了这一点,并假设您只是在检查您的密钥是否设置正确。它为 git 用户使用该密钥运行的“shell”会吐出一条欢迎消息并退出,所以现在你知道它知道你的名字了。

Git 运行 ssh 时,是的,它确实运行了系统的 ssh,它要求另一端的 ssh 服务器作为 shell 运行 git 命令。对于 fetch(clone 是用于 init-and-fetch-and-checkout 的便捷命令),这是 git-upload-pack,对于 push,它是 git-receive-pack

编辑:对于任何想要查看所有血腥细节的人,请尝试

GIT_TRACE=true GIT_TRACE_PACKET=true git command here

【讨论】:

    猜你喜欢
    • 2013-07-24
    • 1970-01-01
    • 2011-07-15
    • 1970-01-01
    • 2012-07-24
    • 1970-01-01
    • 2015-07-30
    • 1970-01-01
    • 2016-04-03
    相关资源
    最近更新 更多