On Tue, Apr 25, 2023 at 01:16:22PM -0500, rea...@catastrophe.net wrote: > On Tue, Apr 25, 2023 at 08:09:46PM +0200, Antoine Jacoutot wrote: > >On Tue, Apr 25, 2023 at 12:41:41PM -0500, rea...@catastrophe.net wrote: > >> On Tue, Apr 25, 2023 at 12:03:51PM -0500, rea...@catastrophe.net wrote: > >> >On Tue, Apr 25, 2023 at 10:45:21AM -0500, rea...@catastrophe.net wrote: > >> >> [..] > >> >> [ some bad paste ] > >> > > >> >Just a clarification: the rc script in /etc/rc.d/autossh actually looks > >> >like > >> > > >> >#!/bin/ksh > >> ># start autossh tunnel > >> ># requires remoteuser user with $HOME/.ssh/config and keys > >> > > >> >daemon="/usr/local/bin/autossh" > >> >daemon_flags_1="-M 0 -f -N tun-remoteA" > >> >daemon_flags_2="-M 0 -f -N tun-remoteB" > >> >daemon_user="remoteuser" > >> > > >> >. /etc/rc.d/rc.subr > >> > > >> >rc_reload=NO > >> > > >> >pexp="autossh:.*" > >> > > >> ># Child will not return a config parsing error to the parent. > >> >rc_start() { > >> > # use rcexec here since daemon_flags may contain arguments with > >> > spaces > >> > ${rcexec} "${daemon} ${daemon_flags_1}" && \ > >> > ${rcexec} "${daemon} ${daemon_flags_2}" > >> >} > >> > > >> >rc_cmd $1 > >> > >> > >> So tracking this down a bit more, if I modify the rc script to just > >> list remoteuser's ~/.ssh/config file issues arise > > > >That's not what the script does from what I can see. > > > >> rc_start() { > >> # use rcexec here since daemon_flags may contain arguments with > >> spaces > >> ls -l ${daemon_user}/.ssh/config > >> #${rcexec} "${daemon} ${daemon_flags_1}" && \ > >> #${rcexec} "${daemon} ${daemon_flags_2}" > >> } > >> > >> # rcctl -d start autossh > >> doing _rc_parse_conf > >> autossh_flags empty, using default >< > >> doing rc_check > >> autossh > >> doing rc_start > >> doing _rc_wait_for_start > >> doing rc_check > >> ls: remoteuser/.ssh/config: No such file or directory > >> doing _rc_rm_runfile > >> (failed) > > > >Well it's doing exactly what you are telling it to do. > >Not sure I understand what you mean. > > You missed the second part where I said: > > But if I add prepend "/home" to ${daemon_user}, it works as expected. >
I didn't miss anything. "ls -l ${daemon_user}/.ssh/config" Which translate to "ls remoteuser/.ssh/config". That file does not exist (it's not an absolute path so if you run it from anywhere other than /home, then it won't be found). When you append /home you are doing: "ls -l /home/${daemon_user}/.ssh/config" which translate to an absolute path: /home/remoteuser/.ssh/config. -- Antoine