Giter Site home page Giter Site logo

gitnonymous's Introduction

Contribute anonymously pseudonymously to Git repositories over Tor.

tl;dr

yourname@yourbox:~$ . gitnonymous somename
somename⚔ yourname@yourbox:~$ git commit_

What is this?

This is a tool for management of identities that you can use to obfuscate your true identity when making Git commits and pushing to public repositories.

Non-GH mirror of gitnonymous here.

Setup

Before you start, you'll probably want to:

  • Set up an anonymous email account with some provider.
  • Sign up to the Git hosting service you use with that anonymous email address.

To configure a new anonymous pseudonymous identity on your machine:

$ ./gitnonymous-setup KEYNAME

Where KEYNAME is some memorable string that you will use to identify your pseudonymous ID like baby-protector or elite-freedom-defender. You can create multiple pseudonymous identities.

Be aware that KEYNAME is stored in the SSH public key's comment field so don't make it personally identifiable.

Then you should edit the new file in ~/.gitnonymous-KEYNAME/config to set the email address and name of your pseudonymous identity:

export GIT_COMMITTER_NAME="Baby Protector"
export GIT_COMMITTER_EMAIL="[email protected]"
export GIT_AUTHOR_NAME="Baby Protector"
export GIT_AUTHOR_EMAIL="[email protected]"
export TZ=UTC

You can pass ssh-keygen options to the setup command as well. For example to create an ed25519 key instead of an RSA key:

$ ./gitnonymous-setup KEYNAME -t ed25519

Use

You can symlink the gitnonymous and gitnonymous-setup commands into your ~/bin folder or somewhere else on your PATH to execute them without typing the full path.

Each time you want make pseudonymous commits in the current shell:

$ . gitnonymous KEYNAME

After that when you commit and push you will do so with the pseudonymous identity you have created, over the tor network, using the new SSH key that was created.

This command:

  • Spawns an ssh-agent that is limited to the current shell.
  • Adds the pseudonymous SSH key to ssh-agent.
  • Sets the GIT_COMMITTER and GIT_AUTHOR environment variables.
  • Sets the GIT_SSH environment variable to point at a configured git-ssh-wrap script.
  • Sets the GIT_PROXY_COMMAND environment variable to proxy network requests through tor.
  • Sets the TZ environment variable to UTC in order to obscure your real timezone.

Your prompt will be updated to reflect the configured environment:

KEYNAME⚔ yourname@yourbox:~$

To deactivate the gitnonymous environment run gitnonymous-exit:

KEYNAME⚔ yourname@yourbox:~$ gitnonymous-exit
yourname@yourbox:~$ _

Or just exit the current shell.

Information leaks

Whilst this will help you adopt a pseudonymous virtual identity, you should be aware of the following information leaks that may still be used to try to identify you, pointed out by @ryancdotorg on Hacker News:

  • Commit times will be leaked (narrows down sleeping/working hours), although timezone is not exposed.
  • SSH client version will be leaked to servers you connect to (shows Linux distro version and patch level).

Dependencies

  • git
  • tor (install tor package)
  • nc (install netcat-openbsd package)
  • ssh
  • bash

Tested

  • With git 1.9.1 on Xubuntu 14.04.

Patches welcome!

gitnonymous's People

Contributors

chr15m avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gitnonymous's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.