| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Basic documentation for fixing/tweaking WSL2 for my dev use. Some of this is useful, some of it might be just anecdotal. It's mostly a log of what I did so that if/when I have to reset/refresh windows and/or start on a new laptop, I can get up-and-running faster.
Lots of problems with name resolution and networking in general.
Symptom: /etc/resolv.conf includes the correct IP address of the host, yet pings do not get through and names are not resolved.
Fix:
disable auto-generation of resolv.conf by adding this to the in-WSL /etc/wsl.conf:
[network] generateResolvConf = false
rm /etc/resolv.conf (because it's a symlink to /run/resolvconf/resolv.conf)
add nameserver realnameserver where "realnameserver" is the ip address of your actual local DNS name server (I used my local network router, a caching name server)
Other complaints about networking involve the misconception that localhost on the linux machine is the same as localhost in windows, disregarding the whole host/guest-vm relationship. These are just misunderstandings. While my first reaction is "localhost is unique for each", but apparently linux ports are accessible in windows as localhost but not vice versa. I have no idea.
For the reverse, you'll likely need the windows IP address to get to it from linux.
I'd like to automatically add the host IP address to /etc/hosts; currently docker is adding its own stuff there, perhaps I need to find or write a script that auto-fills (perhaps based on ip route ls or similar?).
Long-debated. I prefer using KeePass and KeeAgent (github) instead of windows' openssh key-management, so many of the links proved troublesome and/or just unrelatable.
Long-story-short:
in Windows, I have KeePass/KeeAgent configured with its cygwin-compatible socket file (vice its msysGit-compatible), and the SSH_AUTH_SOCK envvar is set in the windows Environment Variables thing;
in linux, install socat; in debian-like, this is apt install socat;
get npiperelay.exe; the "proper" way to go if you have go available on your windows machine is to go to https://github.com/jstarks/npiperelay and install it that way; an alternative is to download the wsp-ssh-agent package from https://github.com/rupor-github/wsl-ssh-agent/releases and extract the pre-compiled npiperelay.exe from its release and discard the rest (I'm currently looking at v1.4.2, commit dd85633, there might be differences later); save this .exe file somewhere on the windows side (does not need to be in the PATH, just somewhere accessible from the linux side);
you can go as quick as using dlech/KeeAgent#159 (comment):
export SSH_AUTH_SOCK=$HOME/.ssh/agent.sock
ss -a | grep -q $SSH_AUTH_SOCK
if [ $? -ne 0 ]; then
rm -f $SSH_AUTH_SOCK
( setsid socat UNIX-LISTEN:$SSH_AUTH_SOCK,fork EXEC:"/mnt/c/Tmp/npiperelay.exe -ei -s //./pipe/openssh-ssh-agent",nofork & ) >/dev/null 2>&1
fi(changing the location of npiperelay.exe) though I don't understand why the need for setsid, and there is no PID tracking here. I've drafted a hackish script to do ever-so-slightly more, found in ./assets/wsl-ssh-agent-forwarder.
(I should note that I don't know how the //./pipe/openssh-ssh-agent is used. For instance, my windows-side $SSH_AUTH_SOCK is pointing to a non-standard socket name ... if there is a standard ... and even though I never define it, things work nonetheless. However, if I change from that to any other string, it stops working, so ... keep it.)
Still WIP. My biggest issue is that I feel the need for something screen-like (or tmux-like) with X windows, so that when (not if) the network between windows and WSL2 glitches, I can reconnect and continue using the windows. I'm told Xpra is a good fit for this.
But for starters:
More testing is required to see how "robust" this is. I've heard that some WSL2 installations suspend or stop the WSL2 VM when not in use; since I use docker with the WSL2 extension, I believe that is keeping WSL2 active at all times even when no terminals are open. YMMV.
| Back | FazBrowse Home | New Git URL |