与 Github 同步

16

这已经是我第N次尝试连接我的Github账户,但越来越沮丧因为我总是失败了。

我一步一步遵循这个教程:在Windows上设置Github,但我在第5步失败了,也就是测试所有内容的那一步。

ssh git@github.com

给我这个

ssh: github.com: no address associated with name

有任何想法是错的吗?非常感谢您的任何帮助。

我正在使用在Windows XP上通过railsinstaller提供的默认git安装(在代理后面)。

5个回答

20

你需要至少设置一个HTTP_PROXY环境变量。

set HTTPS_PROXY=http://<login_internet>:<password_internet>@aproxy:aport
set HTTP_PROXY=http://<login_internet>:<password_internet>@aproxy:aport

或者,对于 Bash 会话:

 export http_proxy=http://<login_internet>:<password_internet>@aproxy:aport
 export https_proxy=http://<login_internet>:<password_internet>@aproxy:aport

请确保%HOME%(或$HOME)设置为存储您的.ssh配置文件的目录。

然后,对于git命令:

git config --system http.sslcainfo \\bin\\curl-ca-bundle.crt
git config --global http.proxy http://<login_internet>:<password_internet>@aproxy:aport
git config --global user.name <short_username>
git config --global user.email <email>
git config --global github.user <github_username>
git config --global github.token <github_token>

注意:针对Bash会话:

git config --system http.sslcainfo /bin/curl-ca-bundle.crt
为了避免GitHub要求输入密码,请在您的HOME目录下创建一个_netrc文件(或在bash会话中创建.netrc文件)。
machine github.com
login <login_github>
password <password_github>

2012年更新

请注意,自 git1.7.10(2012年)以来,您可以使用凭据缓存机制,以避免明文存储您的登录密码(在%HOME%/_netrc文件中)。


1
如果你遇到了关于 \bin \ curl-ca-bundle.crt 的错误,你可以使用以下命令:git config --global http.sslverify "false" - DarkteK
@GonzaloJarjury 我不建议这样做。始终尝试验证您的证书。即使在Windows上使用最新版本的Git,也要先尝试:git config --system http.sslcainfo /ssl/certs/ca-bundle.crt - VonC
1
<login_internet> 是 WiFi 的名称吗? - Jessica
1
@McFloofenbork 八年后,我相信“login_internet”代表您用于验证代理的登录帐户。 - VonC
什么是<login_internet>和<login_password>? - Sara
@Sara Same:企业代理需要您当前 Windows 或 Mac 会话的凭据:即您当前操作系统会话的登录名和密码。 - VonC

1

对于那些没有启用代理但问题仍然存在的人,我找到了解决方案!这是Yosemite的问题。苹果用discoveryd替换了mDNSResponder。它是一个服务,您可以卸载并重新加载它:

sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.discoveryd.plist

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.discoveryd.plist

这篇帖子解释了每一个细节:

http://arstechnica.com/apple/2015/01/why-dns-in-os-x-10-10-is-broken-and-what-you-can-do-to-fix-it/

它对我起作用了!


1
在极端情况下,可能不是代理引起问题,更可能是DNS设置的原因。
测试DNS解析是否正常工作。
nslookup archive.ubuntu.com 

如果设置正确,您将看到IP地址;如果出现故障,您将看到错误消息。
如何检查DNS配置(Ubuntu) cat /etc/resolv.conf
# This file was automatically generated by WSL. T># [network]
# generateResolvConf = false
nameserver 8.8.8.8 
nameserver 8.8.4.4

你可以使用这两个Google DNS服务器进行测试。
再次尝试nslookup命令。如果现在可以工作了,一直都是DNS问题。
测试github连接。
1. SSH
ssh -T git@github.com

如果成功,输出将类似于这样
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
Hi <YourUsername>! You've successfully authenticated, but GitHub does not provide shell access.

HTTPS 尝试简单地克隆,例如: git clone https://github.com/octocat/Spoon-Knife 如果问题得到解决,它将提示输入用户名和密码。

1
谢谢!我突然遇到了一个问题:“fatal: unable to access 'https://github.com/...': Could not resolve host: github.com",这是在执行"git pull"命令时出现的。根据这里的建议,更新了/etc/resolv.conf文件后问题得到解决。 - undefined

0
如果你在代理后面,你是否也在防火墙后面?请尝试运行ssh -v git@github.com来查看幕后发生了什么。对于我的设置,我的~/.ssh/config如下所示:
Host github.com
ProxyCommand /c/windows/connect.exe -H name_of_proxy:8080 %h %p
User git
Port 443
Hostname ssh.github.com
TCPKeepAlive yes
IdentitiesOnly yes

ProxyCommand的描述可以在这里找到。


是的,我在防火墙后面。但是,我正在使用的代理是一个脚本而不是静态地址。如何在配置文件中考虑到这一点? - Prakhar

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接