问题描述: 我们在clone代码的时候可以选择https协议,也可以选择ssh协议来拉取代码。使用“git clone ssh://xxx.git”拉取代码时失败,提示没有权限(没有弹出要输入git账号、密码)。
$ git clone ssh://xxx.git
Cloning into 'web-project'...
git@xxx.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
鼠标右键选择git bash here,先切换到.ssh
cd ~/.ssh
ls
使用下面命令生成ssh公钥和私钥对
ssh-keygen -t rsa -b 4096 -C 'xxx@xxx.com'
或
ssh-keygen -t rsa -C 'xxx@xxx.com'
参数含义:
-t 指定密钥类型,默认使用rsa,可以不写
-C 表示comment,参数是你的邮箱地址
-b 指定密钥长度。对于RSA密钥,最小要求768位,默认是2048位。DSA密钥必须恰好是1024位(FIPS 186-2 标准的要求)。
-f 指定密钥文件存储文件名。
以上命令省略了 -f 参数,因此,运行上面命令后会让你输入一个文件名"xxx",用于保存刚才生成的 SSH key 代码【如果不输入文件名,直接按回车,则使用默认名称"id_rsa" 存放ssh key】
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/xxx/.ssh/id_rsa):xxx
passphrase可以设置密码"xxx"(该密码是你访问gitlab的时候要输入的密码,不是gitlab的密码)【如果不输入密码,直接按回车。那么在访问gitlab的时候就不需要输入密码】
Enter passphrase (empty for no passphrase):xxx
Enter same passphrase again:xxx
接下来,会提示如下信息,说明SSH key生成成功
Your identification has been saved in /c/Users/xxx/.ssh/id_rsa
Your public key has been saved in /c/Users/xxx/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:Z4lZoxfIZW2B4xYL3TrsfGgHsI/yFPFzFqSFWJl8iH0 xxx@xxx.com
之后在“.ssh”目录就会生成 id_rsa 和 id_rsa.pub 两个秘钥文件【或者是xxx和 xxx.pub,xxx为自己输入的文件名 】。

在“C:/Users/xxx/.ssh”目录下,找到刚生成的 id_rsa.pub 文件,使用编辑器打开复制文件内容,也可以在git bash中输入以下命令复制
clip < ~/.ssh/id_rsa.pub
登录到你的gitlab,点击右上角头像的下拉菜单“Setting”或“Edit profile”,找到User Settings–>SSH Keys—>Add SSH Key

到此为止,就完成了gitlab配置ssh key的所有步骤,我们可以使用ssh协议进行代码的拉取及提交等操作了
git clone ssh://xxx.git
在gitlab配置好ssh key之后,还是拉取不了代码
$ git clone ssh://xxx.git
Cloning into 'web-project'...
git@xxx.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
发现在~/.ssh文件夹里面有三个文件,其中有个"known_hosts"文件,这个文件包含使用过的公钥信息,将现有的公钥信息清除,有以下两个方法:
ssh-keygen -R IP/域名/域名:端口,目的是清除你当前电脑里关于链接的远程服务器的缓存和公钥信息,注意是大写的字母“R”。1、 清空对应IP/域名的公钥信息
使用ssh-keygen -R 命令遇到的情况:
$ ssh-keygen -R 10.xxx.xxx.xxx
Cannot stat /c/Users/xxx/.ssh/known_hosts: No such file or directory
$ ssh-keygen -R 10.xxx.xxx.xxx
Host 10.xxx.xxx.xxx not found in /c/Users/xxx/.ssh/known_hosts
$ ssh-keygen -R 10.xxx.xxx.xxx
# Host 10.xxx.xxx.xxx found: line 1
/c/Users/xxx/.ssh/known_hosts updated.
Original contents retained as /c/Users/xxx/.ssh/known_hosts.old
2、 然后重新输入命令git clone ssh://xxx.git去拉代码时,会提示是否要连接((yes/no/[fingerprint])?,输入yes),这时候会重新创建一个新的"known_hosts"文件,或更新"known_hosts"文件中的内容

$ git clone ssh://xxx.git
Cloning into 'web-project'...
The authenticity of host '[xxx.com]:22 ([10.xxx.xxx.xxx]:22)' can't be established.
ED25519 key fingerprint is SHA256:sd6p08YWHoWlVlEnnOnzhKI2mGJ0RM3AXeJwOpXa+6c.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[xxx.com]:22' (ED25519) to the list of known hosts.
git@xxx.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
3、 还是报错啊啊啊,没办法了,我重新把第一步(生成 SSH key)、第二步(在gitlab上添加SSH key)重新操作了一次,再输入命令git clone ssh://xxx.git,正常拉取代码了。
$ git clone ssh://xxx.git
Cloning into 'web-project'...
The authenticity of host '[xxx.com]:22 ([10.xxx.xxx.xxx]:22)' can't be established.
ED25519 key fingerprint is SHA256:sd6p08YWHoWlVlEnnOnzhKI2mGJ0RM3AXeJwOpXa+6c.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[xxx.com]:22' (ED25519) to the list of known hosts.
remote: Enumerating objects: 33489, done.
remote: Counting objects: 100% (33489/33489), done.
remote: Compressing objects: 100% (9262/9262), done.
remote: Total 33489 (delta 23974), reused 33489 (delta 23974), pack-reused 0
Receiving objects: 100% (33489/33489), 9.55 MiB | 2.18 MiB/s, done.
Resolving deltas: 100% (23974/23974), done.
【经验之谈_XXX】系列文章持续更新中……
如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby
尝试通过RVM将RubyGems升级到版本1.8.10并出现此错误:$rvmrubygemslatestRemovingoldRubygemsfiles...Installingrubygems-1.8.10forruby-1.9.2-p180...ERROR:Errorrunning'GEM_PATH="/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/ruby-1.9.2-p180@global:/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/rub
在rails源中:https://github.com/rails/rails/blob/master/activesupport/lib/active_support/lazy_load_hooks.rb可以看到以下内容@load_hooks=Hash.new{|h,k|h[k]=[]}在IRB中,它只是初始化一个空哈希。和做有什么区别@load_hooks=Hash.new 最佳答案 查看rubydocumentationforHashnew→new_hashclicktotogglesourcenew(obj)→new_has
我正在使用puppet为ruby程序提供一组常量。我需要提供一组主机名,我的程序将对其进行迭代。在我之前使用的bash脚本中,我只是将它作为一个puppet变量hosts=>"host1,host2"我将其提供给bash脚本作为HOSTS=显然这对ruby不太适用——我需要它的格式hosts=["host1","host2"]自从phosts和putsmy_array.inspect提供输出["host1","host2"]我希望使用其中之一。不幸的是,我终其一生都无法弄清楚如何让它发挥作用。我尝试了以下各项:我发现某处他们指出我需要在函数调用前放置“function_”……这
我正在编写一个gem,我必须在其中fork两个启动两个webrick服务器的进程。我想通过基类的类方法启动这个服务器,因为应该只有这两个服务器在运行,而不是多个。在运行时,我想调用这两个服务器上的一些方法来更改变量。我的问题是,我无法通过基类的类方法访问fork的实例变量。此外,我不能在我的基类中使用线程,因为在幕后我正在使用另一个不是线程安全的库。所以我必须将每个服务器派生到它自己的进程。我用类变量试过了,比如@@server。但是当我试图通过基类访问这个变量时,它是nil。我读到在Ruby中不可能在分支之间共享类变量,对吗?那么,还有其他解决办法吗?我考虑过使用单例,但我不确定这是
我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search
我尝试使用不同的ssh_options在同一阶段运行capistranov.3任务。我的production.rb说:set:stage,:productionset:user,'deploy'set:ssh_options,{user:'deploy'}通过此配置,capistrano与用户deploy连接,这对于其余的任务是正确的。但是我需要将它连接到服务器中配置良好的an_other_user以完成一项特定任务。然后我的食谱说:...taskswithoriginaluser...task:my_task_with_an_other_userdoset:user,'an_othe
我在理解Enumerator.new方法的工作原理时遇到了一些困难。假设文档中的示例:fib=Enumerator.newdo|y|a=b=1loopdoy[1,1,2,3,5,8,13,21,34,55]循环中断条件在哪里,它如何知道循环应该迭代多少次(因为它没有任何明确的中断条件并且看起来像无限循环)? 最佳答案 Enumerator使用Fibers在内部。您的示例等效于:require'fiber'fiber=Fiber.newdoa=b=1loopdoFiber.yieldaa,b=b,a+bendend10.times.m
我的主要目标是能够完全理解我正在使用的库/gem。我尝试在Github上从头到尾阅读源代码,但这真的很难。我认为更有趣、更温和的踏脚石就是在使用时阅读每个库/gem方法的源代码。例如,我想知道RubyonRails中的redirect_to方法是如何工作的:如何查找redirect_to方法的源代码?我知道在pry中我可以执行类似show-methodmethod的操作,但我如何才能对Rails框架中的方法执行此操作?您对我如何更好地理解Gem及其API有什么建议吗?仅仅阅读源代码似乎真的很难,尤其是对于框架。谢谢! 最佳答案 Ru
我的假设是moduleAmoduleBendend和moduleA::Bend是一样的。我能够从thisblog找到解决方案,thisSOthread和andthisSOthread.为什么以及什么时候应该更喜欢紧凑语法A::B而不是另一个,因为它显然有一个缺点?我有一种直觉,它可能与性能有关,因为在更多命名空间中查找常量需要更多计算。但是我无法通过对普通类进行基准测试来验证这一点。 最佳答案 这两种写作方法经常被混淆。首先要说的是,据我所知,没有可衡量的性能差异。(在下面的书面示例中不断查找)最明显的区别,可能也是最著名的,是你的