git push 之 Enter passphrase for key '/Users/MYNAME/.ssh/id_rsa'

Posted fish-101

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git push 之 Enter passphrase for key '/Users/MYNAME/.ssh/id_rsa'相关的知识,希望对你有一定的参考价值。

今天尝试把git与GitHub联系起来,方便后续往GitHub上面推送项目。过程中踩了几个坑,记录一下:

一、生成 GitHub--SSH-公钥

1、在git中用命令行 ssh-keygen -t rsa -C ‘your email address‘

  1. 文件名称及位置选择默认,enter即可。
  2. passphrase一定要写,其实可以跳过,但是有密码更安全不是,但就是这个密码,又给自己埋下了坑。

 

2、拷贝上面的/root/.ssh/id_rsa.pub到GitHub上,位置见如下截图:

技术图片

 

二、设置remote GitHub(坑一)

这个时候,需要在git 上设置remote地址:

SSH :
git remote add orgin ssh://github.com:your github account/your repository

HTTPS:  
git remote add orgin https://github.com/your github account/your repository

区分了添加https和ssh两种方式,区别就在于:

ssh:不需要每次提交的时候都输入username和passphrase

https:每次都需要输入一遍username和passphrase。

而我一开始手滑选择了https,导致每次提交都要重新输入密码和用户名,所以后来就切换到了ssh模式下。具体怎么切网上有很多教程,不再赘述。

然后,push想要push的东西即可:

git push -u origin master
# -u 只有首次提交的时候需要,后续再次push可以省略

 

三、开始编写及提交代码(坑二)

仍然每次都需要填写密码:

Enter passphrase for key ‘/Users/MYNAME/.ssh/id_rsa‘。

说好的ssh不需要密码呢??
翻了一些教程,有的说干脆重新设置为无密码,这样就不需要每次都输入了,个人觉得这是个办法,不是最优解。下面把我最后的解法贴下来,这个方法的原理就是托管一个代理替你保存密码,我的系统是centos7.6:
# 1、先打开代理,如果你已经打开,那么直接运行命令2即可:
eval $(ssh-agent)

#2、输入下面命令,然后再次输入密码即可,大功告成
ssh-add ~/.ssh/id_rsa
至此,我们就可以轻松地提交代码了。

四、另外还有一些小问题,顺手记录下来:
  • 在提交完代码后,会提示这个警告:

warning: push.default 未设置,它的默认值将会在 Git 2.0 由 ‘matching‘


修改为 ‘simple‘。若要不再显示本信息并在其默认值改变后维持当前使用习惯,


进行如下设置:

  git config --global push.default matching

若要不再显示本信息并从现在开始采用新的使用习惯,设置:

  git config --global push.default simple

参见 ‘git help config‘ 并查找 ‘push.default‘ 以获取更多信息。
(‘simple‘ 模式由 Git 1.7.11 版本引入。如果您有时要使用老版本的 Git,
为保持兼容,请用 ‘current‘ 代替 ‘simple‘ 模式)

No refs in common and none specified; doing nothing.
Perhaps you should specify a branch such as ‘master‘.


fatal: The remote end hung up unexpectedly


Gogs: Internal error
Failed to execute git command: exit status 128
error: 无法推送一些引用到 ‘git@softlab.sdut.edu.cn:daijingxin/addressbook.git‘
git push.default设置

 

 

这个问题也很容易解决:

# 运行这个命令:
git config --global push.default simple


# 或者这个命令:
git config --global push.default matching

#区别在于, 前者只提交你当前所在的分支,而后者会提交本地所有的分支
  • 出现警告:Warning:Permanently added the RSA host key for IP address ‘13.229.188.59‘ to the list of known hosts.

这个问题出现的原因猜测是因为GitHub是境外网站导致的,不解决没有大碍,但是看着别扭。
# Linux下的修改:
  vi /etc/hosts

insert 13.229.188.59 github.com

 



 

以上是关于git push 之 Enter passphrase for key '/Users/MYNAME/.ssh/id_rsa'的主要内容,如果未能解决你的问题,请参考以下文章

git 阿里云code免密pull push

【Git Hook】之pre-push

git之Push rejected

解决打开Intellij Idea后,一直弹出Git Credential Manager Enter credential

Git的push权限

linux服务器git pull/push时提示输入账号密码之免除设置