On Tue, Apr 25, 2023 at 01:06:35PM -0600, Ashlen wrote:
>On 2023-04-25 10:45, [email protected] wrote:
>> After upgrading to 7.3 autossh is failing using the following rc script
>> in /etc/rc.d/autossh. It looks like maybe switching to $daemon_user is
>> not happening to find the correct ssh config stanzas? Thanks in advance
>> for any help.
>>
>>
>> ## Startup configuration
>>
>> #!/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_1="-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_1}"
>> }
>>
>> rc_cmd $1
>
>${rcexec} was deprecated in 7.2 and dropped in 7.3. You have to use
>rc_exec now.
>
># sed -i 's/\${rcexec}/rc_exec/' /etc/rc.d/autossh
>
>https://www.openbsd.org/faq/upgrade72.html#ConfigChanges
>https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/etc/rc.d/rc.subr.diff?r1=1.159&r2=1.160&f=h
Thanks for that.
Even after I modified to use rc_exec I'm still getting the same problem of
not switching to daemon_user . Comments added inline:
# rcctl -d start autossh
doing _rc_parse_conf
autossh_flags empty, using default ><
doing rc_check
autossh
doing rc_start
remoteuser
^^^^^^^^^^ daemon_user is correctly set to "remoteuser"
doing _rc_wait_for_start
doing rc_check
root
^^^^^^^^^^^^ here is where we should see "remoteuser" and not root when
^^^^^^^^^^^^^ running "whoami"
/etc/rc.d/autossh: /usr/local/bin/autossh -M 0 -f -N tun-remoteA: not found
doing _rc_rm_runfile
(failed)
The modified rc script that yields this output is:
#!/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 rev-tun-lax"
daemon_flags_2="-M 0 -f -N rev-tun-ord"
daemon_user="as2h"
. /etc/rc.d/rc.subr
rc_reload=NO
pexp="autossh:.*"
# Child will not return a config parsing error to the parent.
rc_start() {
# use rc_exec here since daemon_flags may contain arguments with spaces
echo ${daemon_user} # prove the variable is
set here
${rc_exec} "/usr/bin/whoami" # show who we are running commands as
${rc_exec} "${daemon} ${daemon_flags_1}" && \
${rc_exec} "${daemon} ${daemon_flags_2}"
}
rc_cmd $1