← Back to context

Comment by Eikon

5 days ago

I am not sure to understand what this is this achieving compared to just assigning a ip + port per vm?

Using nonstandard ports would break the `ssh foo.exe.dev` pattern.

This could also have been solved by requiring users to customize their SSH config (coder does this once per machine, and it applies to all workspaces), but I guess the exe.dev guys are going for a "zero-config, works anywhere" experience.

  • Zero-config usually means the complexity got shoved somewhere less visible. An SSH config is fine for one box, but with a pile of ephemeral workspaces it turns into stale cruft fast and half the entries is for hosts you forgot existed.

    The port issue is also boringly practical. A lot of corp envs treat 22 as blessed and anything else as a ticket, so baking the routing into the name is ugly but I can see why they picked it, even if the protocool should have had a target name from day one.

    • SSH configs support wildcards, so if you couple it with a ProxyCommand you can an arbitrary level of dynamism for a host pattern (like *.exe.dev).

      But yeah, everything is a trade-off.

  • Too bad most SSH clients don't seem to support SRV records, they would've been perfect for this:

      ;; Domain:     mydomain.com.
      ;; SSH running on port 2999 at host 1.2.3.4
    
      ;; A Record
      vm1928.mydomain.com. 1 IN A 1.2.3.4
    
      ;; SRV Record
      _ssh._tcp.vm1928.mydomain.com. 1 IN SRV 0 0 2999 vm1928.mydomain.com.
    

    If supported it would result in just being able to do "ssh vm1928.mydomain.com" without having to add "-p 1928"

Not needing a different port. Middleboxes sometimes block ssh on nonstandard ports. Also, to preserve the alignment between the SSH hostname and the web service hostname, as though the user was accessing a single host at a single public address. Usability is key for them.

  • Why would anyone configure it to do that?

    Like, I understand the really restrictive ones that only allow web browsing. But why allow outgoing ssh to port 22 but not other ports? Especially when port 22 is arguably the least secure option. At that point let people connect to any port except for a small blacklist.

    • Asking back, when I limit the outgoing connections from a network, why would I account for any nonstandard port and make the ruleset unwieldy, just in case someone wanted to do something clever?

      5 replies →

    • I’m not a network security expert, so I don’t know the threat model. I just know that this is a thing companies do sometimes.