Git 在使用 SSH URL 时要求输入密码,而 ssh 则不会

Git 在使用 SSH URL 时要求输入密码,而 ssh 则不会

我有三台服务器(两台 ubuntu 16.04,一台 mac mini)和几台 macbook。

一台服务器 ubuntu 用于 gitlab,另一台是内部站点服务器。 mac mini 正在运行 CI。

最近 gitlab 服务器被替换为另一个 gitlab 服务器。 (更换硬件、相同的 IP 地址和主机名、新软件、新 ssh 密钥、所有其他硬件(其他服务器和笔记本电脑)都像以前一样使用 ssh 密钥)。

任何 macbook 都可以通过 SSH 连接到任一服务器(使用服务器上用户的用户名/密码),并且可以使用 Git 通过公钥通过 git 服务器进行克隆、推送等。

站点服务器可以通过 SSH(通过公钥)连接到 git 服务器,但一旦出现欢迎消息,连接就会终止。站点服务器无法通过公钥使用 git,因为 Git 会提示输入密码,除非它不使用并且使用持续一段时间的公钥工作,否则只有在用户文档目录中使用测试时才开始工作,如果我再次尝试在目录 git Breaks 中克隆/var/www(这可能是巧合,它只工作了两次)。

CI 与 git 服务器的连接没有问题。

使用 ssh -v 输出显示 ssh 使用正确的公钥。

因此在站点服务器上运行以下命令

ssh [email protected] 

连接(然后断开)但是

git clone [email protected]:somerepo.git

询问 git 用户的密码。

站点服务器有一个在 gitlab 上注册的用户(带有 ssh 密钥)。

多次调用的输出示例:https://pastebin.com/QH0AntK7

答案1

我偶然发现了同样的问题,问题是我git以 root 身份在用户的主目录中执行了一些操作,因此无法读取授权的 SSH 密钥文件。

修复方法是运行:

$ chown -R git:git /home/git/.ssh

答案2

首先要测试的是从站点服务器到 git 服务器的基于密钥的 SSH 是否有效。从你的描述来看,似乎没有。在运行 ssh 之前,您是否拥有站点服务器上用户的cat公钥?git~/.ssh/authoried_keys

答案3

为 @LazyBadger 创建日志后,我意识到它仅在使用 sudo 运行时才会失败,因为它使用不同的 ssh 密钥。

我已将 root 用户 ssh 密钥包含在 git 服务器上的站点服务器帐户中,现在它可以工作了。

答案4

尽管OP找到了解决方案,但由于另一种可能发生这种情况的方式,我感到很挣扎。

连接ssh将会成功,但git fetch如果您已配置sshcommand为在您的.git/config~/.gitconfig.例如,我有如下内容(键名称已更改):

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    sshcommand = ssh -i /home/user/.ssh/repo_deploy
[remote "origin"]
    ...

由于我习惯于ssh-copy-id复制/home/user/.ssh/id_rsa而不是复制/home/user/.ssh/repo_deploy,所以我的结果与OP非常相似。

相关内容