如何通过Tor匿名在Github上做出贡献?

50

我希望匿名地为Github上的项目做出贡献,不是为了恶作剧,而是出于匿名捐赠的精神。

在线上保持匿名的工具似乎是TOR,在浏览器中几乎可以处理任何事情。但是,在Github上做出贡献似乎需要使用命令行界面或Mac应用程序。

在这种设置下,我如何将git操作通过Tor进行传输?我如何验证实际发生的情况?

编辑: 请注意,匿名(使用无法与身份关联的IP地址)和化名(使用假电子邮件地址)之间的区别。访问Github的化名方式很简单,但我要寻找的是匿名方式。


2
获取匿名电子邮件地址以进行贡献。只有GitHub的人可以跟踪用户的IP,因此不必要地隐藏所花费的时间似乎不值得。无论如何,Git协议在Tor上运行没有任何问题,但我对此并不是专家。 - CharlesB
11
为了做出贡献,您需要在GitHub上拥有一个帐户,因此TOR本身并没有太多帮助。正如CharlesB所提到的,您需要一个匿名电子邮件地址。值得一提的是,如果您不为自己的提交负责,那么这将看起来不太严肃。 - KingCrunch
23
此外,我认为使用真实姓名发布这样的信息并不能帮助你在追求匿名性方面取得太大的进展 :) - François
4
@King 可能有人做这件事的原因超出了问题或评论的范围,但我理解你的担忧。但是提交必须始终基于质量而不是提交者的声誉。还要注意,可以将匿名和化名访问结合起来,将一系列匿名贡献链接到同一身份上,只是不能使用真实身份。 - Greg Manitoba
3
可能是使用socks代理为http传输配置git的重复问题。 - user
显示剩余5条评论
10个回答

25

这些答案都没有提供一个完整可用的工作流程,我想要git push,而不是发送电子邮件!这是正确的做法,但需要进行一些设置。以下指令适用于OSX。

使用Tor+SSH匿名发布到Github

  1. Download tor browser bundle AND the tor command line proxy

     brew install tor
     brew cask install torbrowser
    

    1.1 In tor browser, Create a new email address ( I used hmamail).

    1.2 In tor browser, Create a new github account

  2. Create a new ssh key, only for tor with your new email address

    ssh-keygen -t rsa -b 4096 -C "satoshi_2@hmamail.com"
    

    2.1. Give it a name like: ~/.ssh/private_tor_rsa

    2.2. In github, go to SSH and PGP keys and add a new SSH key, make title memorable.

    2.3. In github, set Key to the public key you've just createdclip < ~/.ssh/private_tor_rsa.pub

  3. In github, create an empty repository, let's call it ByteCoin, don't initialise it with a readme.

  4. Edit the ssh config file ~/.ssh/config (create if it doesn't exist)

    Host github-tor-alias
    User git
    HostName github.com
    IdentitiesOnly yes
    IdentityFile ~/.ssh/tor_only_rsa
    ProxyCommand nc -X 5 -x 127.0.0.1:9050 %h %p
    

    You've created a hostname called github-tor-alias and tells ssh to use a proxy on localhost:9050 and use the tor_only_rsa key to authenticate.

  5. Setup the config for your new project to use the tor proxy and credentials.

    mkdir secret-project
    cd secret-project
    git init
    
    git config --add user.name satoshi_2
    git config --add user.email staoshi_2@hmamail.com
    

这一行非常重要

5.1. 注意ssh://gitgithub-tor-alias

    git remote add origin ssh://git@github-tor-alias/staoshi_2/ByteCoin.git
  1. Remember how you installed the tor command line proxy? start it as a service. It listens on localhost:9050

    brew services start tor
    
  2. Are you ready? Try pushing to github:

    git push origin master
    

它有效了吗?请仔细检查一切,我有没有遗漏什么?请编辑这个答案!

恭喜

呼吸那自由的空气,开始创作吧!

那么我们刚刚做了什么?我们创建了一个新的身份,该身份仅与tor网络相关联,就github.com而言,您是staoshi_2,可能在世界的任何地方。

tor在127.0.0.1:9050上运行代理,因为我们在~/.ssh/config文件中设置了ProxyCommand,所以您的所有流量都通过tor代理进行,git使用您的新ssh密钥,因为您在~/.ssh/config文件中添加了IdentityFileIdentitiesOnly

非常强大。

让我们再次确认您是否真正匿名。

  1. stop tor and try to git push again, it had better fail!

    ssh_exchange_identification: Connection closed by remote host
    fatal: Could not read from remote repository.
    

    8.1. If that git push succeeded well guess what, you weren't using tor, github.com knows your IP, figure out how to get it working and then start again with a new email address.

9. 愉快自由!

作者匿名。


ProxyCommand socat STDIO SOCKS4A:127.0.0.1:%h:%p,socksport=9050 对我来说是有效的。 - rraallvv
我喜欢将SSH配置文件、密钥等与主要配置隔离开来。一种简单的方法是在我的shell中设置export GIT_SSH_COMMAND="ssh -v -F /anongit/ssh_config"。我还在我的ssh_config文件中包含了UserKnownHostsFile /anongit/known_hosts - ngreen

23
你考虑过采用老派的“邮寄补丁”方式吗?你只需检出存储库(如果需要,可以使用 Tor 和 Git-over-HTTPS),进行改进,然后做一个 git diff 并使用任何匿名消息服务将补丁发送给项目所有者。Freenet 和邮政邮件都是不错的选择。
请注意,如果我是一个大型项目的所有者,我永远不会接受来自匿名实体的补丁,因为有几个原因。即使所涉及的人不一定是邪恶的,但在系统中没有人负责的代码是一个可怕的想法。此外,请考虑代码所有权和版权问题。

2
考虑使用git format-patch而不是git diff,以便存储库的维护者可以使用git am来提取您的更改内容。 - Justin T Conroy
当然,git format-patch会在输出中添加一个From:行,其中包含您配置的全名和电子邮件地址。这可能不是您想要的。 - Wander Nauta

14
在 Tor 出现之前,有网吧和 Wi-Fi 热点。仅因为你的提交与 IP 相关联并不意味着它必须是“你的”。

3
如果您使用自己的笔记本电脑,建议购买一个USB无线网卡适配器——尽管您可以欺骗MAC地址,但它们也是一次性的。 - CQM
@nyuszika7h 当然可以,任何使用基于TCP协议的连接都可以(而且还有更多的方式)。无论您是通过电子邮件发送补丁还是通过ssh+git推送补丁,如果匿名性真的很重要,您需要采取措施。 - tne
@tne 不必对措辞过于挑剔。我只是说IP从未公开。 - alexia
@nyuszika7h 抱歉,我的回复显然太冲动了(你的回复似乎也是这样,公平地说;))。不过,我认为你不能如此强烈地声称“IP从未公开”,这取决于你如何协作、与谁协作以及你可能从中间人使用哪些服务(MTA可能会在消息中附加源IP,存储库服务器可能会跟踪IP等)。根据方案,您可能需要信任某些方,而代理只是允许您任意选择信任谁或什么(例如tor的安全模型)。 - tne

13

配置git代理服务器 使git与代理服务器一起工作

如果这在TOR网络中不起作用,那么只需在虚拟机中运行git命令,其中主机机器正在使用TOR网络连接到外部世界。

我认为这将混淆您提交的来源,但匿名电子邮件部分可能仍然很困难。

匿名电子邮件提供商时来时去,但截至2015年,Lelantos是一个提供明网电子邮件地址的TOR隐藏服务。可以使用http://www.xmr.to匿名所有比特币交易,从而以更私密的Monero网络支付比特币收据。

为什么不简单地创建一个假名电子邮件,同时在TOR中创建,从不从TOR之外访问它,并将其用于github合规性呢?


1
以下是手动配置git代理设置(localhost:9050)所需使用的设置。您应该能够使用netstat确认它是否正常工作 - 通过Tor(80、443、9001和/或9030)连接,而不是通过git TCP端口(9418)连接。 - Alex L
2
如果一切都失败了,“torify git ...”就能解决问题。虽然不要忘记它有点麻烦,但很简单。您还可以设置iptables,以确保没有ssh和git流量会在没有tor的情况下出去,这样您就可以确保捕捉到遗忘或配置更改。 - user1115652

7
这个帖子中大部分回答并未回答提出的问题。
你问:是否可以通过Tor使用操作系统的所有应用程序,以便进行匿名贡献。在某些情况下,为软件项目做出贡献可能会让你面临法律风险(例如,在加密库中做出贡献,而加密是非法的)。
有人建议你使用邮寄方式(目前最流行的答案?),去你家附近的网吧,那里很可能有摄像头,并使用非常脆弱的配置,这会让你处于风险之中。一些答案完全愚蠢,而其他一些答案足够有效,但需要完美设置才能正常工作。
可能会发生你(或安装的某些软件)意外缩进或破坏配置文件,导致你的连接明文传输到GitHub。此外,可能会有ISP级别的攻击者看到你正在安装哪些开发包,并能够确定你正在从事何种项目。
在大多数情况下,这是不可接受的。对于我和我的当前设置来说,这是必要的。
  • 所有连接到Github的流量都保证通过TOR进行。
  • 所有非TOR连接都会被拒绝,所有DNS请求都通过TOR进行。
  • 你机器上的所有TCP流量都会通过tor路由。包括apt-get、IDE建立的所有连接等等。

这很复杂,超出了我的能力范围。幸运的是,有一些发行版可以支持这种操作,例如TailsWhonix。还有另外一个发行版,Attack Vector,可能带有开发工具,但它没有经过充分的验证。

在安装其中一个发行版后,你将能够通过tor浏览器访问github的界面,并且可以通过SSH或HTTPS提交,无需特殊配置。

我建议选择Whonix,因为它更容易持久化你需要的数据,并保证主机的根级别威胁不会危及你的身份。


5
你可以尝试使用Cloud 9 IDE,通过Tor访问并创建新的Github和Bitbucket帐户。然后复制您想要做出贡献的项目,编辑它们,发送拉取请求或补丁。

胜利


3
现在注册似乎需要信用卡,不算完全匿名。 - user1338062

4

在Linux中:

安装Tor并前往http://tormail.org/创建一个匿名电子邮件帐户。

在本地计算机上创建一个新的Linux用户,并为该用户生成一个新的SSH密钥,以便您的匿名帐户不具有与其他Github帐户相同的公钥 :-) 您将通过此用户帐户执行所有匿名工作。

接下来使用您的Tor邮箱注册Github账号并安装刚刚生成的公钥。

现在安装socat http://freecode.com/projects/socat。但是,您可能会在发行版的软件包管理器中找到它。

现在编辑 /etc/ssh/ssh_config 并添加

HOST *
ProxyCommand socat STDIO SOCKS4A:127.0.0.1:%h:%p,socksport=9050

确保您的Tor配置使用端口9050。您应该在torrc文件中看到以下内容:

SocksListenAddress 127.0.0.1
SocksPort 9050

现在,所有的SSH都将通过TOR进行,包括通过SSH协议访问Github。因此,请使用SSH协议进行克隆:git clone git@github.com:bitcoin/bitcoin.git

使用Wireshark验证没有任何直接连接到Github。


Tormail似乎已经停止运营。 - Simon East

2
你可以在项目的克隆中进行本地提交,然后使用git format-patch通过电子邮件发送提交。

还有git send-email - Greg

2
另一个简单的解决方案:
$ git remote add tor https://github.com/yourUser/yourProject
$ torsocks git pull tor
$ torsocks git push tor

显然,您需要记住在git命令中添加tor后缀,或者您可以配置别名:

$ alias gpushtor="torsocks git push tor"
$ alias gpulltor="torsocks git pull tor"

(注:它只能与https://远程服务一起使用)

1

您可以使用 tsockstorify 使任何应用程序通过 Tor 工作。


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