Missing environment variables when ssh'ing into Windows machine

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Missing environment variables when ssh'ing into Windows machine

cygwin-12

The Windows variables $USERNAME, $USERPROFILE and $USERDOMAIN are set properly
when opening a cygwin bash shell on a Windows 10 machine.  

However when I *ssh* into that same machine (under the same user name),
the variables are unset in the bash shell.

More generally, it seems that none of my Windows User variables are
set under a remote ssh bash shell while they are all inherited properly
when opening a cygwin bash shell directly on the machine.

I have not had that problem in the past on my other (older) Windows
machine
The only differences that come to mind are:
1. The other machine is Win7 and not Win10
2. On this (Win10) machine I installed cygwin as a non-admin while the
   Win7 machine was installed with admin privileges
3. Because of #2, I start ssh on the Win 10 machine by running
   /usr/sbin/sshd manually as a user, while on Win 7, I am able to
   start sshd as a service, running as SYSTEM
4. This (Win10) machine doesn't have an /etc/passwd file whereas the
   Win7 machine does.

I am assuming that #3 may be the source of the problem...

Still seems strange that these seemingly very basic Windows variables
are not available under ssh.

Any way to fix this?

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

Reply | Threaded
Open this post in threaded view
|

Re: Missing environment variables when ssh'ing into Windows machine

cygwin-12
[hidden email] wrote at about 01:59:19 -0500 on Friday, January 3, 2020:
 >
 > The Windows variables $USERNAME, $USERPROFILE and $USERDOMAIN are set properly
 > when opening a cygwin bash shell on a Windows 10 machine.  
 >
 > However when I *ssh* into that same machine (under the same user name),
 > the variables are unset in the bash shell.
 >
 > More generally, it seems that none of my Windows User variables are
 > set under a remote ssh bash shell while they are all inherited properly
 > when opening a cygwin bash shell directly on the machine.
 >
 > I have not had that problem in the past on my other (older) Windows
 > machine
 > The only differences that come to mind are:
 > 1. The other machine is Win7 and not Win10
 > 2. On this (Win10) machine I installed cygwin as a non-admin while the
 >    Win7 machine was installed with admin privileges
 > 3. Because of #2, I start ssh on the Win 10 machine by running
 >    /usr/sbin/sshd manually as a user, while on Win 7, I am able to
 >    start sshd as a service, running as SYSTEM
 > 4. This (Win10) machine doesn't have an /etc/passwd file whereas the
 >    Win7 machine does.
 >
 > I am assuming that #3 may be the source of the problem...
 >
 > Still seems strange that these seemingly very basic Windows variables
 > are not available under ssh.
 >
 > Any way to fix this?
 >

Said another way,  assuming that the issue is my non-admin Cygwin
install and my attendant need to run 'sshd' manually rather than as
service, what can I do to best 'fake' running 'sshd' as a service that
will allow it to load the environment variables automatically.

For 'cleanliness' and 'consistency' purposes, I would like to do that
as a wrapper around the call to 'sshd' rather than by tampering with
/etc/sshd_config and /etc/sshd_config or by manually recreating and exporting the
Windows variables in .bashrc or .bash_profile. In other words, I want
to keep my standard installation configuration as clean and unchanged
as possible.

Thanks,
Jeff

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

Reply | Threaded
Open this post in threaded view
|

UPDATE Re: Missing environment variables when ssh'ing into Windows machine

cygwin-12
[hidden email] wrote at about 10:45:51 -0500 on Friday, January 3, 2020:
 > [hidden email] wrote at about 01:59:19 -0500 on Friday, January 3, 2020:
 >  >
 >  > The Windows variables $USERNAME, $USERPROFILE and $USERDOMAIN are set properly
 >  > when opening a cygwin bash shell on a Windows 10 machine.  
 >  >
 >  > However when I *ssh* into that same machine (under the same user name),
 >  > the variables are unset in the bash shell.
 >  >
 >  > More generally, it seems that none of my Windows User variables are
 >  > set under a remote ssh bash shell while they are all inherited properly
 >  > when opening a cygwin bash shell directly on the machine.
 >  >
 >  > I have not had that problem in the past on my other (older) Windows
 >  > machine
 >  > The only differences that come to mind are:
 >  > 1. The other machine is Win7 and not Win10
 >  > 2. On this (Win10) machine I installed cygwin as a non-admin while the
 >  >    Win7 machine was installed with admin privileges
 >  > 3. Because of #2, I start ssh on the Win 10 machine by running
 >  >    /usr/sbin/sshd manually as a user, while on Win 7, I am able to
 >  >    start sshd as a service, running as SYSTEM
 >  > 4. This (Win10) machine doesn't have an /etc/passwd file whereas the
 >  >    Win7 machine does.
 >  >
 >  > I am assuming that #3 may be the source of the problem...
 >  >
 >  > Still seems strange that these seemingly very basic Windows variables
 >  > are not available under ssh.
 >  >
 >  > Any way to fix this?
 >  >
 >
 > Said another way,  assuming that the issue is my non-admin Cygwin
 > install and my attendant need to run 'sshd' manually rather than as
 > service, what can I do to best 'fake' running 'sshd' as a service that
 > will allow it to load the environment variables automatically.
 >
 > For 'cleanliness' and 'consistency' purposes, I would like to do that
 > as a wrapper around the call to 'sshd' rather than by tampering with
 > /etc/sshd_config and /etc/sshd_config or by manually recreating and exporting the
 > Windows variables in .bashrc or .bash_profile. In other words, I want
 > to keep my standard installation configuration as clean and unchanged
 > as possible.
 >

I verified that the difference is solely related to whether sshd is
started directly by calling /usr/bin/sshd or by starting the service
via 'cygrunsrv -S sshd' -- the former doesn't set the environment
variables, while the latter does!
Even if both are run with admin privileges!

Really wish I knew what 'cygrunsrv' does differently...

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple