using tailscale to use your friend's M1

I don’t have a problem with Windows. However, it cannot be disputed that as most development occurs on MacOS, most documentation is written with Mac users in mind. In many areas of computer science, a lack of diversity leads in a circular fashion to …cause no more diversity than there was before. And thus I was there, complaining to my friend that a hello world demo was not operating as expected on my windows machine, and the response given from the server was not giving me clues as to whether it was an OS-specific error, or whether I had done something incorrectly.

“Why not use my M1?” he said.

“Why don’t I?” I said, from several zipcodes away.

Step 1: Grab a friend.

Or an M1. Or any computer, really, that you wish to remotely access. A friend is preferred, because friends are good things to have.

Step 2: Install Tailscale on both computers.

You can install it here

Step 3: Sign in to Tailscale on the device you’d like to remotely access

My friend signed in using his Azure AD account, because he is, and I quote, “a glutton for punishment and it seemed like a good idea a the time”. You may sign in any way that you chose.

Step 4: Have them make you an account on their machine.

My account username was “lanie”. You could alternatively, use their account. Or maybe this is your machine you’re trying to shell into, in which case you can absolutely use the main account.

Step 5: Sign into Tailscale on the machine you’d like to access the machine from.

My friend created a user with his custom domain through the Azure AD account. If you’re on the same domain as another user (with special rules for gmail and others, obviously), then you’ll have access to all of the devices on their Tailscale network. If you’re logging on with the same account as your target, this will work as well.

Step 6: Take a gander at the Tailscale internal IP.

You’ll use this to ssh into the other machine using lanie@<tailscale internal IP address>. You could, optionally, point the domain name at the Tailscale internal IP so that it would just be lanie@<domain name> if you’re operating on a custom domain name. This would save brain capacity every time you shell into the computer. A good use for that domain that you’ve purchased and never used!

Step 7: Shell into the machine.

Tailscale only routes traffic that needs to use the service over its network. I shelled in using the Remote-SSH package in VSCode because my aim was just to test code from the machine.

Step 8 (optional): Realize that Homebrew has permission issues.

This doesn’t really have anything to do with the topic of the article. I only want to point out that I had a bad time trying to use Homebrew on a second account on my friend’s machine. He tried changing file permissions for /opt/homebrew, but to no avail. I ended up switching to using his profile directly, which then created…interesting results when I attempted to push to GitHub, even with the correct public key and git username/email settings.