欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

GITLAB Fingerprint cannot be generated

程序员文章站 2022-05-07 18:31:43
...

坑1: 在个人上传公钥的时候,提示生成指纹失败,没有什么能够阻挡俺们运维的脚步,gitlab web端是基于 On Rails的,也是个MVC典型框架, 看他这么像是一个flash效果 根据这点蛛丝马迹找处理方法去 log: Started POST /profile/keys for 127.0.0.1 at 2013-

坑1:

GITLAB Fingerprint cannot be generated

在个人上传公钥的时候,提示生成指纹失败,没有什么能够阻挡俺们运维的脚步,gitlab web端是基于 On Rails的,也是个MVC典型框架,

看他这么像是一个flash效果

根据这点蛛丝马迹找处理方法去

log:

Started POST “/profile/keys” for 127.0.0.1 at 2013-11-15 12:37:36 +0800
Processing by Profiles::KeysController#create as HTML
Parameters: {“utf8″=>”?”, “authenticity_token”=>”a3SQrp7gXosUavont2fQajVYLHQh0C1NXVQEVGNYTEM=”, “key”=>{“title”=>”pcoffice”, “key”=>”ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEA75YFeVv2T0MxPlEcqYz2ajueinVwB/tbvgC1t5mFngkegPKbMyXU7zI5eqnZYDqLGcaf7rL7BwvkFjY++fvQCm7ohwHZi9ZEcU0xGH1izUvPLlHHGYsJG1FgBSYzHZvNw4KL5fo8STuC3JN96rtLkbhKtpOuc9AZ8o7tpAqpr6E= rsa-key-20131115″}}
Rendered profiles/keys/_form.html.haml (4.8ms)
Rendered profiles/keys/new.html.haml within layouts/profile (5.8ms)
Rendered layouts/_head.html.haml (2.4ms)
Rendered layouts/_search.html.haml (16.5ms)
Rendered layouts/_head_panel.html.haml (22.8ms)
Rendered layouts/_flash.html.haml (0.2ms)
Rendered layouts/nav/_profile.html.haml (3.2ms)
Completed 200 OK in 91ms (Views: 35.1ms | ActiveRecord: 3.1ms)

在app/model/key.rb模型类里找处理:

validates :fingerprint, uniqueness: true, presence: { message: ‘cannot be generated.. because of uniqueness!’ }

是这个validates触发了flash提示,

生成指纹的方法:

这个模型中有一个生成的方法,在校验的时候就会生成不了指纹,打印

?def generate_fingerpint
self.fingerprint = nil
return unless key.present?

cmd_status = 0
cmd_output = ”
Tempfile.open(‘gitlab_key_file’) do |file|
file.puts key
file.rewind
cmd_output, cmd_status = popen(“ssh-keygen -lf #{file.path}”, ‘/home/git/.ssh’)
end
puts cmd_output
puts cmd_status
if cmd_status.zero?
cmd_output.gsub /([\d\h]{2}:)+[\d\h]{2}/ do |match|
self.fingerprint = match
end
end
end

/tmp/gitlab_key_file20131115-26416-4buuyk is not a public key file.

结果最后!!

是因为selinux开着,需要setenforce=0即可。。。

因为selinux开着的话,中间的?popen(“ssh-keygen -lf #{file.path}”, 这个ssh-keygen -lf #{file.path}? 过程在服务器上怎么测试都不对,而服务器自身生成的默认的id_rsa.pub是可以打印出指纹的,后来发现,在selinux开着的情况下,路径只能是 ~.ssh/下的才能进行校验,关闭之后就可以根据其他路径的公钥来生成指纹了

GITLAB Fingerprint cannot be generated