Git LFS推送不工作时使用SSH认证?

JFrog支持
2017-05-28 31

以下是链接设置SSH配置,以便在Artifactory中使用Git lfs存储库。请注意,当您为服务器身份验证创建SSH密钥时,不提供“passphrase”。如果在生成用于服务器身份验证的SSH密钥时提供了“passphrase”,那么在尝试将git lfs推送到Artifactory时将看到如下示例所示的错误。

(0个文件)0 B / 4.09 MB
帖子https://localhost/artifactory/gitlfs-local/objects/batch:拨号TCP [::1]:443: getsockopt:连接拒绝

在artifactory.log中,您将注意到以下失败尝试的异常:

2016-01-18 18:49:12,089 [sshd-SshServer[f4220a5]-nio2-thread-2] [WARN](o.a.s.s.s.ServerSession:456) -异常捕获
[ecdsa-sha2-nistp256, ecdsa-sha2-nistp384, ecdsa-sha2-nistp521, ssh-dss, ssh-rsa]

使用SSH身份验证时推送到Artifactory失败的另一个原因是,如果您提供了错误的SSH端口以连接到Artifactory。Git /config”文件,该文件位于本地Git存储库下。此文件中的url应该具有在Artifactory中配置的SSH端口SSH服务器配置。下面是一个例子。git/config”文件,并突出显示Artifactory的URL:

(核心)

Repositoryformatversion = 0

Filemode = true

裸=假

Logallrefupdates = true

Ignorecase = true

Precomposeunicode = true

(远程“起源”)

url =https://github.com/nihalreddy28/project-examples.git

Fetch = +refs/heads/*:refs/remotes/origin/*

(分支“大师”)

Remote = origin

合并= refs/heads/master

(lfs)

Url = "ssh://git@localhost:1339/ artifactory / gitlfs-local”

作为故障排除步骤,您还可以运行以下命令,查看使用Git lfs的SSH身份验证是否正常工作。记住更改IP、端口和git lfs存储库名称,以反映客户环境。“下载”选项0 abcd” 可以给任何东西,因为这只是一个测试,没有实际下载。

Mymac-MBP:工程实例mac美元ssh -p git-lfs-authenticate artifactory/< rename > download 0abcd

命令看起来应该像下面的例子:

SSH 127.0.0.1 -p 1339 git-lfs-authenticate artifactory/gitlfs-local download 0abcd

如果SSH验证成功,您应该看到以下输出。

{"头":{“授权”:“不记名UPehbrgQaBKtm2E / Aj570vIWKk7n6cujPRB6mcuFPpU = "},“href”:“https://localhost: 8081 / artifactory / api / lfs / gitlfs-local”}

当NGINX在与Artifactory不同的机器上时,SSH访问

如果你正在尝试为Git LFS设置SSH认证,你可以按照以下步骤来完成任务(这需要NGINX 1.9.0及以上版本):

环境测试

  • NGINX v1.11连接到两个人工实例(主实例和从实例)
  • NGINX配置8080端口访问Artifactory - https://:8080/ Artifactory)

A.配置NGINX支持使用SSH认证的Git LFS
要求:NGINX v 1.9.0+

  1. 找到你的NGINX安装并添加以下流行(粗体)到/etc/nginx/nginx.conf文件-在Artifactory中配置的SSH端口在这种情况下是1339端口(请确保这与Artifactory中定义的相同):

HTTP {.....
包括/etc/nginx/conf.d/ * . conf;
}
流{
上游后端{
如果你有两个独立的NGINX,每个都指向自己的Artifactory,你不一定需要指定两个服务器,这是为了从NGINX中实现负载平衡

Server host-1-ip-address:1339 //< primary-url >: 1339
Server host-2-ip-address:1339 //< secondary-url >: 1339

}
服务器{
听1339;
proxy_pass后端;
}
}

注意:“流”必须与http但是处于同一级别在HTTP块中!

NGINX参考-https://nginx.org/en/docs/stream/ngx_stream_core_module.html

B.配置人工SSH
SSH服务器配置配置SSH。对于上面的例子-自定义基础URL是NGINX的URL。

用户添加图片”src=

SSH配置看起来像-
用户添加图片”src=

C.在Git LFS Client上
说明- - - - - -