Mosh: Having a .moshrc (equivalent to .ssh/config) file to be able to specify per-host configs

Created on 29 May 2013  路  21Comments  路  Source: mobile-shell/mosh

Hi,

I think this would go a long way improving the usability of mosh to be able to have a .ssh/config equivalent.

Unfortunately, ssh complains about unknown directives in .ssh/config so we will need a new file (I also think it's good practice to do so anyway).

The format could be simple (.ssh/config sounds a pretty good example: easy to write, easy to parse).

Useful configs to include: hostname, port, mosh-server, eventually ssh and command (in some weird case). Later: enable/disable OOB data (#423) on a per-host basis.
Some of the configs such as hostname, agent forwarding, X11 forwarding, etc... could actually be extracted from .ssh/config directly.

I think it's much better than aliases because it's seamless and consistent. Plus the fact that mosh already seamlessly use .ssh/config makes it quite irritating to be able to use aliases only for specifying a couple of argument for a given host. If many hosts requires a custom config multiplication of aliases could also clutter the shell. Plus we always have to remember which hosts works out-of-the-box and which needs an alias. All this disappears with a .mosh/config config file.

Security-wise, since it's already done by ssh (and actually allows a much bigger control on the connection since it could change the Hostname we are connecting to, define a ProxyCommand, etc...), If the file is secure, I don't see a very big security issue here.

feature

Most helpful comment

Great idea, but please avoid polluting home directory, refer to XDG base directory spec.

All 21 comments

FTR, IRC discussion:

11:40 < lemoinem> I was wondering if there has already been a discussion regarding a .ssh/config-like file for mosh...
11:41 < grawity> What options would it have?
11:41 < lemoinem> I think it's a kind of small feature code-wise that would go a great way to improve the usability.
11:41 < lemoinem> On the top of my head, port is the one I see the most usefull
11:41 < achin> -p is the only useful option to mosh, right?
11:41 < lemoinem> yeah, but mosh-server could be too
11:41 < achin> true
11:42 < achin> in the past, people have recommended aliases for this, but i can see how a .mosh-config might be useful
11:42 < lemoinem> (plus, with oob data coming with mosh 1.3 (iirc), we could enable/disable it on a per-host basis...)
11:44 < lemoinem> otoh, I understand it might still be a bit of work code-wise, but I guess it would already be nice to have it in the roadmap... If enough people think it's a nice idea someone might even contribute to it...
11:44 < lemoinem> I would myself but I don't have the necessary free time on my hands right now )':
11:46 < lemoinem> (per-host ssh command might happen to be useful too in some weird cases...)
11:50 < lemoinem> Oh, another one, having a way to configure the command mosh-server is running (could be useful to have run tmux/screen instead of a direct login shell), but I have a work-around for that already and it's a different feature.
11:50 < joneskoo> basically the reason why config file has not been implemented are security concerns
11:51 < lemoinem> ? security concerns, how come?
11:51 < joneskoo> the current behaviour is simple

At least for the port I think a _server-side_ configuration file would be much better. Just like SSH has its ~/.ssh/authorized_keys for the user's key we could have a ~/.mosh/ports which defines the ports mosh is allowed to use.

For example if my sysadmin has opened up the UDP port 63210 so that I can use mosh, I simply type echo 63210 >> ~/.mosh/ports (it could also be a port range) and mosh-server will no longer user the ports 60000-61000, but the one defined in the server's configuration file.

I'm not sure about having a config file for a single config avery good idea... I think it will tend to multiply the number of config files rather quickly if we ever want other configurations server-side. However, the idea of configuring the port server-side is actually a very good point (:+1:), and could even be configured in a system-wide configuration file.

However, I think it would still be useful to be able to override this client-side in some special cases (SSH Tunnel to reach a FWed host, multiple FW with port translating between the client and the server, etc.

I'm a little late to the party here, but +1 for a config file.

To connect to my home server I have to type: mosh -p 12345 --ssh="ssh -p 54321 -i ./.ssh/id_rsa" my.host.name

Yes, I can easily alias that but being able to store those the way I would for ssh would be very useful as my config would become more portable. As far as security concerns, I don't see how it would be any less secure than using a .ssh/config file. Plus, it's optional.

mosh already respects SSH options stored in ~/.ssh/config, so there鈥檚 no need to pass a long --ssh option every time:

Host my.host.name
    Port 54321
    IdentityFile ~/.ssh/id_rsa

@andersk So it does! I don't know why I didn't try that. Thanks for the tip :)

Bumping this issue.

I already know as @andersk said, mosh uses the ssh config file. But what about a custom UDP port? Any workaround to avoid remembering/writing the desired port per host?

Hi,

I did a simple python3 scripting that does enable profile for mosh ports and commands. It can be found at https://github.com/kiniou/moshy .

Looks like this is in the pipeline!
+1 for this feature.

Currently I have to do

mosh --server=/home/user/bin/mosh-server [email protected]

It would be nice to not have to specify --server :)

I did something that works well in my branch config: https://github.com/ekacnet/mosh/tree/config

I made a pull request but so far it seems that it hasn't been pulled.

Instead of having a separate .moshrc, it would be easier for users, to just put these extra options in .ssh/config?

Host xxx.com.yyy
HostName xxx.com
User uuu
MoshPort 6nnn
MoshPrediction always

@infinity0, nope, the unrecognized syntax would completely break ssh (and therefore also mosh). I could imagine putting them inside magic comments鈥ut not for two seconds longer than I have to.

Any consensus on this in sight? I'm also very much interested in server-side custom port(range)s. Don't mind if it's systemwide (as in /etc/moshports) or per-user (as in ~/.moshports).

Also interested to have a client-side or server-side configuration for udp port range.

+1 for this

Another vote for server-side config; with multiple servers behind NAT, ssh-config nicely solves the port changes, but there's no elegant way to teach mosh that it's only getting specific ports forwarded to it.

+1

There is no way to config custom mosh-server udp port range now.
Would be really handy if a config file is available.

Please refrain from "+1-ing" issues, here or elsewhere. I鈥檓 sure you mean well, but it dilutes the discussion and essentially spams subscribers of the issue.

Great idea, but please avoid polluting home directory, refer to XDG base directory spec.

Is there a plan when this feature might be released?

I know this is an old ticket, but I've noticed that it's still open. Could you provide some guidance as to whether this is still in the works? I have several machines running mosh behind NAT and it would be fantastic if I could configure them server side to use a specified port range.

Was this page helpful?
0 / 5 - 0 ratings