连接方式:
user@dev:/var/www/project# ssh -T git@github.com
Hi User! You've successfully authenticated, but GitHub does not provide shell access.
当我更改密钥名称后,它会失败。但是当我想要推送我的更改时,它仍然要求输入用户名和密码组合。
有没有一种方式可以在不需要密码的情况下进行推送?
如果它要求您输入用户名和密码,则您的源远程指向的是 HTTPS URL 而不是 SSH URL。
将其更改为 ssh。
例如,像 Git 这样的 GitHub 项目将具有 HTTPS URL:
https://github.com/<Username>/<Project>.git
还有SSH:
git@github.com:<Username>/<Project>.git
您可以执行以下操作:
git remote set-url origin git@github.com:<Username>/<Project>.git
更改URL。
git remote set-url origin $(git remote show origin | grep“Fetch URL” | sed's / * Fetch URL://'| sed's / https:\/\/github.com\//git@github.com:/')
- Christopher Shrobagithub
或 bitbucket
仓库和多个账户吗?它们之间会有冲突吗? - Danish Mehmood如果您确实使用SSH URL,但在推送时仍被要求输入用户名和密码:
git remote set-url origin git@github.com:<Username>/<Project>.git
你应该尝试以下故障排除:
ssh -vT git@github.com
下面是一个示例输出:
...
debug1: Trying private key: /c/Users/Yuci/.ssh/id_rsa
debug1: Trying private key: /c/Users/Yuci/.ssh/id_dsa
debug1: Trying private key: /c/Users/Yuci/.ssh/id_ecdsa
debug1: Trying private key: /c/Users/Yuci/.ssh/id_ed25519
debug1: No more authentication methods to try.
Permission denied (publickey).
事实上,我之前已经将公钥添加到GitHub中,并且我也在本地拥有私钥。然而,我的私钥的名称不同,叫做/c/Users/Yuci/.ssh/github_rsa
。
根据样本输出,Git 正在尝试使用/c/Users/Yuci/.ssh/id_rsa
,而我没有这个文件。因此,我可以简单地将github_rsa
复制到同一个目录中的id_rsa
。
cp /c/Users/Yuci/.ssh/github_rsa /c/Users/Yuci/.ssh/id_rsa
现在,当我再次运行ssh -vT git@github.com
时,我看到:
...
debug1: Trying private key: /c/Users/Yuci/.ssh/id_rsa
debug1: Authentication succeeded (publickey).
...
Hi <my username>! You've successfully authenticated, but GitHub does not provide shell access.
...
现在我可以向 GitHub 推送代码而不需要输入用户名和密码 :-)
ssh-add 'C:\Users\Yuci\.ssh\github_rsa'
的命令。 - WBT通常情况下,创建一个SSH密钥并将公钥粘贴到GitHub上。将私钥添加到ssh-agent中。(我假设你已经这样做了。)
为了检查一切是否正确,请使用ssh -T git@github.com
接下来,不要忘记按以下方式修改远程指针:
git remote set-url origin git@github.com:username/your-repository.git
另外,对于代码片段来说,似乎必须省略用户名。
git remote set-url origin git@gist.github.com:<Project code>
如果要使用SSH,请使用$ git remote add origin git@github.com:USERNAME/REPOSITORY.git
代替git remote add origin remote_repository_URL
。
您可以使用$ git remote -v
检查,如果您看到以下格式的2行内容,则工作将正常:
origin git@github.com:username/repo-name.git (fetch)
origin git@github.com:username/repo-name.git (push)
$ git remote set-url origin git@github.com:username/your_repo.git # Convert HTTPS -> SSH
$ ssh-add ~/.ssh/id_rsa_github # add private github ssh key ssh-agent (assuming you have it already running)
$ git push
您已经做得很好,但是Git仍然要求输入密码,对我来说这个方法有效,在当前项目路径下执行以下命令:
~ ssh-add -K ~/.ssh/id_rsaYourIdRsa
将您的SSH私钥添加到ssh-agent,并将您的密码短语存储在密钥链中。如果您使用不同名称创建了密钥,或者如果您正在添加具有不同名称的现有密钥,请在命令中用您的私有密钥文件的名称替换id_rsaYourIdRsa。
使用命令行:
输入ls -al ~/.ssh
查看是否存在现有的SSH密钥。
终端显示:目录不存在
然后生成新的SSH密钥
步骤1。
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
步骤2。
Enter a file in which to save the key (/Users/you/.ssh/id_rsa): <here is file name and enter the key>
步骤三。
Enter passphrase (empty for no passphrase): [Type a password]
Enter same passphrase again: [Type password again]
https://github...
的格式,应该使用git@github...
的格式。 - cjc343