|
@@ -1,10 +1,14 @@
|
1
|
|
-Contribute anonymously to Git repositories over Tor.
|
|
1
|
+Contribute ~anonymously~ pseudonymously to Git repositories over Tor.
|
2
|
2
|
|
3
|
3
|
## tl;dr ##
|
4
|
4
|
|
5
|
5
|
yourname@yourbox:~$ . gitnonymous somename
|
6
|
6
|
somename⚔ yourname@yourbox:~$ git commit_
|
7
|
7
|
|
|
8
|
+## What is this? ##
|
|
9
|
+
|
|
10
|
+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.
|
|
11
|
+
|
8
|
12
|
## Setup ##
|
9
|
13
|
|
10
|
14
|
Before you start, you'll probably want to:
|
|
@@ -12,15 +16,15 @@ Before you start, you'll probably want to:
|
12
|
16
|
* Set up an anonymous email account with some provider.
|
13
|
17
|
* Sign up to the Git hosting service you use with that anonymous email address.
|
14
|
18
|
|
15
|
|
-To configure a new anonymous identity on your machine:
|
|
19
|
+To configure a new ~anonymous~ pseudonymous identity on your machine:
|
16
|
20
|
|
17
|
21
|
$ ./gitnonymous-setup KEYNAME
|
18
|
22
|
|
19
|
|
-Where `KEYNAME` is some memorable string that you will use to identify your anonymous ID like `baby-protector` or `elite-freedom-defender`. You can create multiple anonymous identities.
|
|
23
|
+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.
|
20
|
24
|
|
21
|
25
|
Be aware that `KEYNAME` is stored in the SSH public key's comment field so don't make it personally identifiable.
|
22
|
26
|
|
23
|
|
-Then you should edit the new file in `~/.gitnonymous-KEYNAME/config` to set the email address and name of your anonymous identity:
|
|
27
|
+Then you should edit the new file in `~/.gitnonymous-KEYNAME/config` to set the email address and name of your pseudonymous identity:
|
24
|
28
|
|
25
|
29
|
export GIT_COMMITTER_NAME="Baby Protector"
|
26
|
30
|
export GIT_COMMITTER_EMAIL="protect-all-babies@anonymous-mail-provider.com"
|
|
@@ -31,16 +35,16 @@ Then you should edit the new file in `~/.gitnonymous-KEYNAME/config` to set the
|
31
|
35
|
|
32
|
36
|
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.
|
33
|
37
|
|
34
|
|
-Each time you want make anonymous commits in the current shell:
|
|
38
|
+Each time you want make pseudonymous commits in the current shell:
|
35
|
39
|
|
36
|
40
|
$ . gitnonymous KEYNAME
|
37
|
41
|
|
38
|
|
-After that when you commit and push you will do so with the anonymous identity you have created, over the tor network, using the new SSH key that was created.
|
|
42
|
+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.
|
39
|
43
|
|
40
|
44
|
This command:
|
41
|
45
|
|
42
|
46
|
* Spawns an `ssh-agent` that is limited to the current shell.
|
43
|
|
- * Adds the anonymous SSH key to `ssh-agent`.
|
|
47
|
+ * Adds the pseudonymous SSH key to `ssh-agent`.
|
44
|
48
|
* Sets the `GIT_COMMITTER` and `GIT_AUTHOR` environment variables.
|
45
|
49
|
* Sets the `GIT_SSH` environment variable to point at a configured `git-ssh-wrap` script.
|
46
|
50
|
* Sets the `GIT_PROXY_COMMAND` environment variable to proxy network requests through tor.
|
|
@@ -56,6 +60,14 @@ To deactivate the gitnonymous environment run the same command again:
|
56
|
60
|
|
57
|
61
|
Or just exit the current shell.
|
58
|
62
|
|
|
63
|
+## Information leaks ##
|
|
64
|
+
|
|
65
|
+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:
|
|
66
|
+
|
|
67
|
+ * Your timezone will appear in Git commits (narrows down location).
|
|
68
|
+ * Commit times will be leaked (narrows down sleeping/working hours).
|
|
69
|
+ * SSH client version will be leaked to servers you connect to (shows Linux distro version and patch level).
|
|
70
|
+
|
59
|
71
|
## Dependencies ##
|
60
|
72
|
|
61
|
73
|
* `git`
|