我使用Git已经有一段时间了,但不断的密码请求开始让我感到很烦。
我使用的是Mac OS X和GitHub,我按照GitHub的设置Git页面的指示设置Git和SSH密钥。
我还将github SSH密钥添加到了我的Mac OS X密钥链中,正如github的SSH密钥密码页面中提到的那样。我的公钥已在Git中注册。
然而,每次我尝试Git拉时,我都必须输入用户名和密码。除了SSH密钥之外,我是否需要为此设置其他东西?
我使用Git已经有一段时间了,但不断的密码请求开始让我感到很烦。
我使用的是Mac OS X和GitHub,我按照GitHub的设置Git页面的指示设置Git和SSH密钥。
我还将github SSH密钥添加到了我的Mac OS X密钥链中,正如github的SSH密钥密码页面中提到的那样。我的公钥已在Git中注册。
然而,每次我尝试Git拉时,我都必须输入用户名和密码。除了SSH密钥之外,我是否需要为此设置其他东西?
当前回答
我也有同样的问题。MacOS Mojave钥匙链不断询问密码。为了安全起见,您的id_rsa应该使用密码短语进行加密。然后尝试将其添加到密钥链ssh-add-K~/.ssh/id_rsa
如果密钥位于~/.ssh以外的另一个文件夹中,请用正确的文件夹替换。
Keychain现在知道了你的ssh密钥,希望现在一切正常。
如果您仍然面临这个问题,请尝试
1. brew install keychain
2. echo '/usr/local/bin/keychain $HOME/.ssh/id_rsa' >> ~/.bash_profile
echo 'source $HOME/.keychain/$HOSTNAME-sh' ~/.bash_profile
3. ssh-add -K ~/.ssh/id_rsa
希望它现在应该起作用了。
更新:-K标志已被弃用。请改用以下方法:
ssh-add --apple-use-keychain ~/.ssh/id_ed25519 # path to private key
其他回答
git config credential.helper store
注意:虽然这很方便,但Git会将您的凭据以明文形式存储在项目目录下的本地文件(.Git凭据)中(请参见下面的“home”目录)。如果不喜欢,请删除此文件并切换到使用缓存选项。
如果您希望Git恢复到每次需要连接到远程存储库时都向您请求凭据,可以运行以下命令:
git config --unset credential.helper
要将密码存储在%HOME%目录(而不是项目目录)中的.git凭据中,请使用--global标志
git config --global credential.helper store
还要查找是谁向您索要密码。是Git还是SSH代理?
就我而言,每次我做git pull时,它都会问我:
输入密钥“/work/username/.ssh/id_rsa”的密码:
所以我假设是Git要求密码。所以我一直在寻找解决方案,后来才发现我的SSH代理已经关闭。可以使用eval$(ssh-agent)和ssh-add进行修复,如下所示。
我还在下面粘贴了一个小片段,您可以将其添加到~/.bashrc文件(或等效文件)中,以确保SSH代理在登录时启动。
无论如何,这是我犯的一个相当愚蠢的错误,但把它张贴在这里,以防有人像我一样,从找错树上节省一些时间。
# Start the ssh-agent
function start_agent {
echo "Initializing new SSH agent..."
# Spawn ssh-agent
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > ${SSH_ENV}
echo succeeded
chmod 600 ${SSH_ENV}
. ${SSH_ENV} > /dev/null
/usr/bin/ssh-add
}
if [ -f "${SSH_ENV}" ]; then
. ${SSH_ENV} > /dev/null
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi
我也有同样的问题。MacOS Mojave钥匙链不断询问密码。为了安全起见,您的id_rsa应该使用密码短语进行加密。然后尝试将其添加到密钥链ssh-add-K~/.ssh/id_rsa
如果密钥位于~/.ssh以外的另一个文件夹中,请用正确的文件夹替换。
Keychain现在知道了你的ssh密钥,希望现在一切正常。
如果您仍然面临这个问题,请尝试
1. brew install keychain
2. echo '/usr/local/bin/keychain $HOME/.ssh/id_rsa' >> ~/.bash_profile
echo 'source $HOME/.keychain/$HOSTNAME-sh' ~/.bash_profile
3. ssh-add -K ~/.ssh/id_rsa
希望它现在应该起作用了。
更新:-K标志已被弃用。请改用以下方法:
ssh-add --apple-use-keychain ~/.ssh/id_ed25519 # path to private key
如果你想阻止Git总是要求你提供GitHub存储库的登录凭据,这很容易做到。
使用SSH而不是HTTPS
您可以使用SSH而不是HTTPS更新源远程“
git remote set-url origin git@github.com:username/your-repo.git
配置Git以存储密码和用户名
下面是如何让Git存储用户名和密码:
git config --global credential.helper store
接下来,保存会话的用户名和密码:
git config --global credential.helper cache
我同意“codehugger”,并使用“orkoden”的指令,它对我有效-在NetBeans 7.3上-当您右键单击文件并选择上下文菜单-push-打开“push to remote”窗口时-这里有两个选项:
来源:https://github.com/myaccount/myproject.git/https://github.com/myaccount/myproject.git/
正如您所看到的,区别在于URL中的原始参数-您不想选择此选项(1),您想检查选项(2),这对我来说很好。