On Tue, Apr 19, 2016 at 10:58 AM, Paul Wilson <[email protected]> wrote: > On 04/19/2016 02:27 AM, Erik Bray wrote: >> >> On Tue, Apr 19, 2016 at 2:48 AM, Bennet Fauber <[email protected]> wrote: >>> >>> In mucking about trying to become a certified (not certifiable!) SWC >>> instructor, I managed to mangle Github pretty badly. But, something >>> came of it that, if it isn't something you've done for just ages, you >>> might find useful if you need to have two Github identities going at >>> once and you like to use ssh keys. >>> >>> I have one identity, justbennet, and another carpenterbennet. One I >>> use for my real self, and one I use for workshops (say). Under normal >>> circumstances, if I check my git configuration for repos from each >>> account, it would look something like one of these two entries: >>> >>> [email protected]:carpenterbennet/r-novice-gapminder.git >>> >>> [email protected]:justbennet/r-novice-gapminder.git >>> >>> My One True ssh key only works with one of those. Maybe it's possible >>> to munge that line with ssh options to specify the key to use; I >>> didn't find one. But, I did find that ~/.ssh/config can be used. My >>> first pass was to use >>> >>> >>> Host github.com >>> IdentityFile /Users/bennet/.ssh/justbennet >>> # IdentityFile /Users/bennet/.ssh/carpenterbennet >>> >>> >>> and I would modify the file when I needed the other key. "But this >>> solution did not satisfy me fully."[1] Then something clicked, or >>> snapped, and consulting the man page for ssh_config, I arrived at >>> this. >>> >>> First, modify the ~/.ssh/config file so it has something like this in it >>> >>> >>> Host carpenter-git >>> HostName github.com >>> IdentityFile /Users/bennet/.ssh/carpenterbennet >>> Host just-git >>> HostName github.com >>> IdentityFile /Users/bennet/.ssh/justbennet >>> >>> >>> Then, for your existing git configurations, change the hostname used >>> from github.com to what appears as the Host in your ~/.ssh/config, >>> thusly, >>> >>> >>> remote.origin.url=git@carpenter-git:carpenterbennet/r-novice-gapminder.git >>> >>> remote.origin.url=git@just-git:justbennet/r-novice-gapminder.git >>> >>> >>> If you want to clone a repo, make the same substitution on the clone >>> command, i.e., >>> >>> $ git clone [email protected]:carpenterbennet/r-novice-gapminder.git >>> >>> would become instead >>> >>> $ git@carpenter-git:carpenterbennet/r-novice-gapminder.git >>> >>> or >>> >>> $ git clone git@just-git:justbennet/r-novice-gapminder.git >>> >>> and it appears that git takes that hostname and stores it in its >>> config, so if you clone that way you don't have to remember to modify >>> git's configuration after. >>> >>> I did this from a Mac, but it should work equally well from Linux, BSD, >>> et al. >>> >>> Sorry for the noise if that's old hat to everyone, but I thought it >>> was a neat trick and maybe someone might find some use from it. >> >> Actually, yeah! Thanks for this. I have two GitHub accounts--one for >> professional use, and one for personal use. But I kind of gave up on >> the personal one for exactly the issue you described. >> >> This is a clever workaround which I haven't seen before. I'll have to >> give it a try. > > > ... and if you keep your .ssh/config in a repo (although probably not your > private keys :) ), then you can easily replicate this on any system you land > on.
In fact...I would recommend keeping most non-sensitive config files from your home directory in a repository. I keep all mine in a private mercurial repo (including a few branches for specific platforms and systems :) Erik _______________________________________________ Discuss mailing list [email protected] http://lists.software-carpentry.org/mailman/listinfo/discuss_lists.software-carpentry.org
