"Virtual hosts" for ssh

Dan Kaminsky dan at doxpara.com
Sun Jun 9 01:14:27 EST 2013



Sent from my iPhone

On Jun 8, 2013, at 7:58 AM, Nico Kadel-Garcia <nkadel at gmail.com> wrote:

> On Fri, Jun 7, 2013 at 8:02 PM, Johannes Ernst <johannes.ernst at gmail.com> wrote:
>> It'd be very cool if ssh supported something like Apache "virtual hosts". This would make it much more viable to host multiple installs of git on the same server, for example.
> 
> You've stepped into one of my fun areas, mixing technologies to attain
> a desired result, especially SSH and source control.
> 
> As long as you can gracefully use a different IP address for each
> environment, it's workable.

Because nothing says graceful or workable like large scale IP management.

> If you do it hostname based, you can get
> in deep confusion with all the different valid versions of the same
> hostname, such as WWW.eXaMplE.CoM versus www.example.com versus www
> (with a local domain set of example.com), and trying to match them
> all. That's an old problem with "VirtualHosts" from web servers, as
> well.

Yes, it's an old, pretty much entirely solved problem. It's also not *our* problem; with this environment trick, it's the consuming shell's thing to deal with.

Arguably we could canonicalize the DNS name. 

> 
> Alternatively, don't use the "same user" for different projects on the
> same server. Use a different git shared username for each project
> environment. Since your git environments are normally defined by the
> home directory of the actual shared git username, this may be much
> faster and easier to set up and require no root managed manipulation
> of your sshd_config.

That's one way to do it, but overloading username instead of host has its own pile of issues.

> 
>         Nico Kadel-Garcia <nkadel at gmail.com>
> 
>> More details:
>> 
>> On the remote server, ssh already sets some environment variables:
>> 
>>> printenv | grep SSH
>> SSH_CLIENT=192.168.1.18 50945 22
>> SSH_TTY=/dev/pts/1
>> SSH_CONNECTION=192.168.1.18 50945 192.168.1.1 22
>> 
>> What about adding another, say
>> SSH_SERVER_HOST=host1
>> 
>> Assuming that /etc/hosts
>> 192.168.1.1 host1 host2
>> then
>> ssh user at host1
>> and
>> ssh user at host2
>> would lead to a shell on the same host with the same user, but SSH_SERVER_HOST would be different, and that would allow the creation of a script that, for example, could find the correct git repository given the virtual hostname. This is currently not possible because the script only has IP addresses.
>> 
>> Presumably that would not be too hard to do?
>> 
>> Cheers,
>> 
>> 
>> Johannes.
>> 
>> _______________________________________________
>> openssh-unix-dev mailing list
>> openssh-unix-dev at mindrot.org
>> https://lists.mindrot.org/mailman/listinfo/openssh-unix-dev
> _______________________________________________
> openssh-unix-dev mailing list
> openssh-unix-dev at mindrot.org
> https://lists.mindrot.org/mailman/listinfo/openssh-unix-dev


More information about the openssh-unix-dev mailing list