5 ms·
You can set up a new host in your ssh config and specify a key different from your main account and it should swap your accounts based on the key. Additionally,
by powersurge360 5y ago
You can set up a new host in your ssh config and specify a key different from your main account and it should swap your accounts based on the key. Additionally, you can set a git config to be included if you’re in a particular directory so that you can change your commit details.
I’m on a mobile device so excuse the vagueness, but if there’s interest I can provide some resources and go more in depth.
- kondro 5y agoA new host with what hostname? Because git uses github.com for all repos.
- fnord77 5y agoput this in your ~/.ssh/config Host personal.github.com HostName github.com User git IdentityFile ~/.ssh/id_rsa_personal then clone from git@personal.github.com/x.git for personal stuff
- powersurge360 5y agoThe host also doesn’t have to be a “real” host. You could do something like github-personal for example. Thanks for the assist fnord77!
- renerthr 5y agoNewbie here. Where should I type `github-personal` ?
- powersurge360 5y agoIn the example, fnord77 posted, you can replace all the places that they used personal.github.com. It will be usable anywhere you would use ssh, including when going through a few tools that ultimately resolve to an ssh invocation. I won't copy the host block in .ssh/config but you could, for example: `sshuttle -r my-cloud-server 0/0` for a poor man's vpn `ssh some-enterprise-server` for when the server has a user unfriendly domain name that you don't want to bother remembering `git clone git@github-personal:myusername/somerepo.git` when you want to clone using your personal key from GitHub. There is the caveat, though, that you may have some nested dependencies that will use the plain ole every day host name in which case things will break for you. It rarely comes up, though, in my experience.
- 3np 5y agoJust posted a more complete example above https://news.ycombinator.com/item?id=28242339 https://news.ycombinator.com/item?id=28242339
- deleted 5y ago[deleted]
- kondro 5y agoWow! I don’t know why I hadn’t thought of that, even though I use aliases all the time for SSH. Seems my brain got stuck on the domain part. ^_^
- AzN1337c0d3r 5y agoHow do you deal with submodules?
- powersurge360 5y agoThis is a limitation that I haven't really found a way through. I haven't tried too hard though because I've found that I can often just let the complicating set up have the 'plain' github.com host and use the custom host for the other set up. If I found that both professionally and personally I needed submodules, though, I'd probably be in trouble. Also, if the submodules are public, the plain host will work fine because it doesn't matter what key you authenticate with.
- 3np 5y agoSo one thing you can do is put the following in your ~/.gitconfig: [includeIf "gitdir:/home/john/corp/**"] path = .gitconfig-corp And then ~/.gitconfig-corp: [user] email = john@example.com name = John Doe [url "git@github.com-corp"] insteadOf = git@github.com Now all repos under the path /home/john/corp/ will use that config. Then you can put a new host in your SSH config: Host github.com-corp HostName github.com User git IdentityFile /home/john/.ssh/corp_github This way you can have different e-mail address and name in your commit messages as well. Due to the nature of git you can't scope it via GH URL (you can have many remotes in the same local repo). Though you can still manually rewrite when you add a remote with just the SSH config change, e.g. git clone git@github.com-corp:corp/foobar.git