我已经使用Git一段时间了,但是不断要求输入密码开始让我感到困惑.
我正在使用OSX和Github,我按照GitHub的Set Up Git页面的指示设置了Git和我的SSH密钥 .我还在我的Mac OSX钥匙串中添加了github SSH密钥,如GitHub的SSH密钥密码页面所述.我的公钥是在Git注册的.
不过,每次我尝试git pull,我都要输入我的用户名和密码.我需要为此设置除SSH密钥以外的其他东西吗?
sta*_*tti 770
我想你可能有错误的git repo url.
打开.git/config
并找到[远程"原点"]部分.确保你使用的https
是:
ssh://git@github.com/username/repo.git
Run Code Online (Sandbox Code Playgroud)
如果单击git
并选择,您可以在回购的主页面中看到ssh url'origin' has already been added
而不是一个.config
或url = "..."
一个:
https://github.com/username/repo.git
git://github.com/username/repo.git
Run Code Online (Sandbox Code Playgroud)
您现在可以只用[remote origin]
而不是url = ssh://github/username/repo.git
和验证.git/config
.
[编辑:]如果Git的抱怨https
,打开git
的文件和编辑'origin' has already been added
后的部分.config
作为url = "..."
ork*_*den 539
在OS X(现在是macOS)上,在终端中运行它
git config --global credential.helper osxkeychain
Run Code Online (Sandbox Code Playgroud)
它使git能够使用Keychain.app存储用户名和密码,并从密钥链中检索密码到您的私有ssh密钥.
对于Windows使用:
git config --global credential.helper wincred
Run Code Online (Sandbox Code Playgroud)
如果正确配置了git凭证帮助程序,macOS会将密码保存在密钥链中.有时,ssh和存储在钥匙串中的密码之间的连接可能会中断.运行ssh-add -K
或ssh-add ~/.ssh/id_rsa
再次将钥匙添加到钥匙串.
对于macOS 10.12 Sierra ssh-add -K
需要在每次重启后运行.为了避免这种创建~/.ssh/config
与此内容.
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)
从ssh_config
man
10.12.2 的页面:
UseKeychain
在macOS上,指定系统在尝试使用特定键时是否应在用户的钥匙串中搜索密码.当用户提供密码短语时,此选项还指定密码短语一旦被验证为正确,是否应存储在密钥链中.论证必须是"是"或"否".默认值为"no".
Apple已经添加了Technote 2449,它解释了发生了什么.
在macOS Sierra之前,ssh会提供一个对话框,询问您的密码,并提供将其存储到钥匙串中的选项.此UI已在不久前被弃用,已被删除.
amc*_*mcc 128
当我升级到macOS Sierra时,这发生在我身上.看起来ssh代理在升级后被清除了.
$ ssh-add -L
The agent has no identities.
Run Code Online (Sandbox Code Playgroud)
只需运行ssh-add
找到我现有的身份,输入密码就可以了.
Dar*_*ane 62
使用此:用适当的主机名替换github.com
git remote set-url origin git@github.com:user/repo.git
Run Code Online (Sandbox Code Playgroud)
Cha*_*rts 48
正如其他人所说,您可以安装密码缓存助手.我大多只想发布其他平台的链接,而不仅仅是mac.我正在运行一个Linux服务器,这很有帮助:https: //help.github.com/articles/caching-your-github-password-in-git/#platform-linux
对于mac:
git credential-osxkeychain
Run Code Online (Sandbox Code Playgroud)
视窗:
git config --global credential.helper wincred
Run Code Online (Sandbox Code Playgroud)
Linux的:
git config --global credential.helper cache
git config --global credential.helper 'cache --timeout=3600'
# Set the cache to timeout after 1 hour (setting is in seconds)
Run Code Online (Sandbox Code Playgroud)
mit*_*aul 19
还要找谁问你的密码短语.是git还是你的SSH代理?
就我而言,每次我这样做git pull
都会问我:
Enter passphrase for key '/work/username/.ssh/id_rsa':
所以我认为是git要求密码.所以我一直在寻找解决方案,后来才意识到我的SSH代理已经关闭了.哪个可以使用eval $(ssh-agent)
和这里ssh-add
给出的固定.
也可以粘贴到您的〜/ .bashrc(或等效文件)下面的一小段内容,以确保您的登录时启动了ssh-agent.
在任何情况下,这都是我犯的一个非常愚蠢的错误,但是在这里发布它,以防万一它可以帮助别人节省一些时间来咆哮错误的树,就像我做的那样.
# 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
Run Code Online (Sandbox Code Playgroud)
小智 15
git config credential.helper store
Run Code Online (Sandbox Code Playgroud)
注意:虽然这很方便,但Git会将您的凭据以明文形式存储在项目目录下的本地文件(.git-credentials)中(请参阅下面的"home"目录).如果您不喜欢这样,请删除此文件并切换到使用缓存选项.
如果您希望Git每次需要连接到远程存储库时继续询问您的凭据,您可以运行以下命令:
git config --unset credential.helper
Run Code Online (Sandbox Code Playgroud)
要将.git-credentials中的密码存储在%HOME%目录而不是项目目录中:使用--global标志
git config --global credential.helper store
Run Code Online (Sandbox Code Playgroud)
Fra*_*ois 10
Windows上的git指南和使用SSH推/拉的Github http://nathanj.github.io/gitguide/tour.html
在Windows for git 1.7.9+中,在命令提示符下运行以下命令以在文本编辑器中打开配置文件:
git config --global --edit
Run Code Online (Sandbox Code Playgroud)
然后在文件中添加以下块(如果不存在)或相应地编辑它
[credential "https://giturl.com"]
username = <user id>
helper = wincred
Run Code Online (Sandbox Code Playgroud)
保存并关闭文件.在上述更改后,您只需提供一次凭证.
小智 8
使用以下命令增加超时时间,以便您可以重新键入密码一段时间
git config --global credential.helper 'cache --timeout 3600'
Run Code Online (Sandbox Code Playgroud)
我用它来制作Bitbucket和Github它适用于两者.你需要做的
3600
只是在几秒钟内,将它增加到你想要的任何程度.我把它改为259200
大约30天.这样我每隔30天左右重新输入一次密码.
小智 8
如果您使用该https
协议,Git 将提示您输入密码。如果您使用ssh
,它将使用您的私钥进行身份验证,而不是要求输入密码。
以下是解决此问题的方法:
git remote -v
这将显示来源的网址。你会注意到https
这个网址。(这里的例子)
现在,您必须先删除它并添加 urlssh
git remote remove origin
git remote add origin git@github.com:PrestaShop/PrestaShop.git
Run Code Online (Sandbox Code Playgroud)
我觉得 static_rtti 提供的答案从某种意义上说是 hacky 。我不知道这是否更早可用,但 Git 工具现在提供凭证存储。
缓存模式
$ git config --global credential.helper cache
Run Code Online (Sandbox Code Playgroud)
使用“缓存”模式将凭证保存在内存中一段时间。没有任何密码存储在磁盘上,它们会在 15 分钟后从缓存中清除。
商店模式
$ git config --global credential.helper 'store --file ~/.my-credentials'
Run Code Online (Sandbox Code Playgroud)
使用“存储”模式将凭据保存到磁盘上的纯文本文件中,并且它们永不过期。
我个人使用了商店模式。我删除了我的存储库,克隆了它,然后不得不输入一次我的凭据。
如果你想阻止 Git 总是询问您提供 GitHub 存储库的登录凭据,这可以轻松完成。
您可以使用 SSH 而不是 HTTPS 更新源远程“
git remote set-url origin git@github.com:username/your-repo.git
Run Code Online (Sandbox Code Playgroud)
以下是让 Git 存储用户名和密码的方法:
git config --global credential.helper store
Run Code Online (Sandbox Code Playgroud)
接下来,保存会话的用户名和密码:
git config --global credential.helper cache
Run Code Online (Sandbox Code Playgroud)
如果每次您尝试与 GitHub 交互时 Git 都会提示您输入用户名和密码,则您可能正在使用存储库的 HTTPS 克隆 URL。
使用 HTTPS 远程 URL 有一些优点:它比 SSH 更容易设置,并且通常可以通过严格的防火墙和代理。但是,每次拉取或推送存储库时,它还会提示您输入 GitHub 凭据。
您可以配置 Git 来存储您的密码。对于Windows:
git config --global credential.helper wincred
Run Code Online (Sandbox Code Playgroud)
小智 5
我认为您已解决了您的问题,但是我看不到这里的解决方案对我有所帮助,所以就在这里。
输入终端:
echo "" > ~/.ssh/known_hosts
Run Code Online (Sandbox Code Playgroud)
这将清空您的known_hosts
文件,并且您必须添加您使用过并已连接的每个主机,但是它解决了问题。
在适用于 Linux 的 Windows 子系统 (WSL) 上,这是我发现可行的唯一解决方案:
eval
`ssh-agent` ; ssh-add ~/.ssh/id_rsa
ssh-agent 没有在 WSL 中正确注册是一个问题。
我有同样的问题。MacOS Mojave 钥匙串不断要求输入密码。为了安全起见,您的 id_rsa 应使用密码进行加密。然后尝试将其添加到钥匙串中ssh-add -K ~/.ssh/id_rsa
如果您的密钥位于 ~/.ssh 之外的其他文件夹中,则替换为正确的文件夹。
钥匙串现在知道您的 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
Run Code Online (Sandbox Code Playgroud)
希望它现在应该可以工作了。
更新:该-K
标志已被弃用。请改用以下内容:
ssh-add --apple-use-keychain ~/.ssh/id_ed25519 # path to private key
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
323847 次 |
最近记录: |