Ssh-host-config neden Windows 8.1'de Cygwin'de iki kullanıcı oluşturuyor?


12

Windows 8.1'de Cygwin + SSH kullanma ile ilgili bazı sorunları çözmeye çalışırken, ssh-host-configbetiğin neden OpenSSH'yi sıfırdan yapılandıran iki yeni hesap oluşturduğunu bilmek ister misiniz ? (Bu gerekli mi?)

İki hesap şunlardır: cyg_serverve sshdvarsayılan seçim + ayrıcalık yükseltme ve hizmet yüklemesi kullanılırken. Birincisinin yalnızca Cygwin SSHd hizmetini başlatmak için kullanıldığını anlıyorum, ancak ikincisinin işlevini anlamıyorum. Cygwin arşivlerini araştırdım ve geliştiricinin tek açıklaması "bunu yapmak için tasarlandığı için" idi. Bunları gerçek giriş için kullanmamanız önerilir.

İşte benim kurulum:

-----------------------------------------------------------
ssh-keygen: generating new host keys: RSA1 RSA DSA ECDSA ED25519
*** Info: Creating default /etc/ssh_config file
*** Info: Creating default /etc/sshd_config file
*** Info: Privilege separation is set to yes by default since OpenSSH 3.3.
*** Info: However, this requires a non-privileged account called 'sshd'.
*** Info: For more info on privilege separation read /usr/share/doc/openssh/README.privsep.
*** Query: Should privilege separation be used? (yes/no) yes
*** Info: Note that creating a new user requires that the current account have
*** Info: Administrator privileges.  Should this script attempt to create a
*** Query: new local account 'sshd'? (yes/no) yes
*** Info: Updating /etc/sshd_config file

*** Query: Do you want to install sshd as a service?
*** Query: (Say "no" if it is already installed as a service) (yes/no) yes
*** Query: Enter the value of CYGWIN for the daemon: []
*** Info: On Windows Server 2003, Windows Vista, and above, the
*** Info: SYSTEM account cannot setuid to other users -- a capability
*** Info: sshd requires.  You need to have or to create a privileged
*** Info: account.  This script will help you do so.

*** Info: You appear to be running Windows XP 64bit, Windows 2003 Server,
*** Info: or later.  On these systems, it's not possible to use the LocalSystem
*** Info: account for services that can change the user id without an
*** Info: explicit password (such as passwordless logins [e.g. public key
*** Info: authentication] via sshd).

*** Info: If you want to enable that functionality, it's required to create
*** Info: a new account with special privileges (unless a similar account
*** Info: already exists). This account is then used to run these special
*** Info: servers.

*** Info: Note that creating a new user requires that the current account
*** Info: have Administrator privileges itself.

*** Info: No privileged account could be found.

*** Info: This script plans to use 'cyg_server'.
*** Info: 'cyg_server' will only be used by registered services.
*** Query: Do you want to use a different name? (yes/no) no
*** Query: Create new privileged user account 'cyg_server'? (yes/no) yes
*** Info: Please enter a password for new user cyg_server.  Please be sure
*** Info: that this password matches the password rules given on your system.
*** Info: Entering no password will exit the configuration.
*** Query: Please enter the password:
*** Query: Reenter:

*** Info: User 'cyg_server' has been created with password 'XXXXXXXXXX'.
*** Info: If you change the password, please remember also to change the
*** Info: password for the installed services which use (or will soon use)
*** Info: the 'cyg_server' account.

*** Info: Also keep in mind that the user 'cyg_server' needs read permissions
*** Info: on all users' relevant files for the services running as 'cyg_server'.
*** Info: In particular, for the sshd server all users' .ssh/authorized_keys
*** Info: files must have appropriate permissions to allow public key
*** Info: authentication. (Re-)running ssh-user-config for each user will set
*** Info: these permissions correctly. [Similar restrictions apply, for
*** Info: instance, for .rhosts files if the rshd server is running, etc].


*** Info: The sshd service has been installed under the 'cyg_server'
*** Info: account.  To start the service now, call `net start sshd' or
*** Info: `cygrunsrv -S sshd'.  Otherwise, it will start automatically
*** Info: after the next reboot.

*** Info: Host configuration finished. Have fun!
-----------------------------------------------------------

Ayrıca, 'cyg_server' Windows oturumu açmak için kullanılabilecek görünür bir hesaptır, ancak 'sshd' gizli gibi görünür. Sonuç olarak SSH'yi düzgün bir şekilde kullanabilmek için başka bir 3. hesap daha eklemem gerekecek, ki bu oldukça çılgın görünüyor!


EDIT-1 : Sadece bu değil, sshd hesabının kurulumdan 40 gün sonra ayarlanmış bir parola son kullanma tarihi ve bir parolası vardır ( WMIC'ye göre ). (Ssh kurulumu sırasında bu hesap için hiçbir zaman bir şifre girmem istenmedi.)

Yapıyor wmic useraccount get AccountType,...,Status::

AccountType  Disabled  Lockout  Name           PasswordChangeable  PasswordExpires  PasswordRequired  Status    
512          FALSE     FALSE    cyg_server     TRUE                FALSE            TRUE              OK        
512          TRUE      FALSE    sshd           TRUE                TRUE             TRUE              Degraded  

ve net user sshd:

User name                    sshd
Full Name                    sshd privsep
Comment                      
User's comment               
Country/region code          000 (System Default)
Account active               No
Account expires              Never
Password last set            2014-03-01 23:20:19
Password expires             2014-04-12 23:20:19
Password changeable          2014-03-01 23:20:19
Password required            Yes
User may change password     Yes
Workstations allowed         All
Logon script                 
User profile                 
Home directory               C:\cygwin64\var\empty
Last logon                   Never
Logon hours allowed          All
Local Group Memberships      *Users                
Global Group memberships     *None                 
The command completed successfully.

Bu, bununla ilgili iki soru daha açar:

  1. Parola nedir ve kullanıcı neden bu konuda bilgilendirilmedi?
  2. Bu şifrenin neden bir son kullanma tarihi var?

EDIT-2 : Cygwin geliştirici listesine girememek için, kendi başıma daha fazla araştırma yapmak zorunda kaldım. Şimdiye kadar soru 1'e bir yanıtım yok, ancak kurulum için kullanılan ssh-host-config komut dosyasıyla ilgili başka sorunlar var. Sonuç olarak, sshd ve cyg_server hesaplarını her zaman kaldırabilir ve ayarlarını referans olarak kullanarak uygun bir yönetici hesabı oluşturabilirsiniz.

Soru 2 : Windows 8.1'de varsayılan parola geçerlilik süresi 42 gün olarak ayarlanmıştır. Bu, normal Windows araçları (UI, WMIC, net kullanıcı vb.) Kullanılarak değiştirilmeli veya devre dışı bırakılmalıdır.

Yanıtlar:


4

Güncelleme 2019: Bu cevap ve soru eski. Bill_Stewart'ın cevabına bakınız.

itibaren man 5 sshd_config

 UsePrivilegeSeparation
     Specifies whether sshd separates privileges by creating an
     unprivileged child process to deal with incoming network traffic.
     After successful authentication, another process will be created
     that has the privilege of the authenticated user.  The goal of
     privilege separation is to prevent privilege escalation by con-
     taining any corruption within the unprivileged processes.  The
     default is "yes".

Yani sshd iki tür hesap gerektirir:

  1. Bir yeteneği ile setuid.
  2. Ayrıcalıksız bir hesap.

Kurulum betiği, normal SYSTEM hesabının setuidayrıcalığına sahip olmadığını ve bu nedenle ek ayrıcalıklı hesaba duyulan ihtiyacı açıklar .


Bu biraz önemsiz olmasına rağmen bir cevap olarak kabul ediyorum ve birisinin diğer 2 soruma cevap verdiğini görmek isterdim.
not2qubit

1
Teşekkürler. Bu alt soruların cevabını bilmiyordum ama bildiklerimi paylaşmak istedim.
Dan Garthwaite

Ssh 42 gün sonra Windows 8.1'de kırılıyor mu?
Dan Garthwaite

4

Neden ssh-host-configiki kullanıcı hesabı oluşturur gelince çoğunlukla Dan tarafından cevaplandırılmaktadır. Ayrı bir hesabın neden buradasetuid bulunabileceğine dair daha fazla bilgi , karmaşık bir süreçtir .

İlk alt sorunuza gelince /usr/share/csih/cygwin-service-installation-helper, ssh-host-config tarafından kullanılan parola süre sonu gibi varsayılan değerlerin de, kullanıcı (Windows net komutunu kullanarak) bu şekilde oluşturulduğuna inanıyorum ${unpriv_user}, ad nerede , sshd, seçtiğiniz ve ${dos_var_empty}Windows / DOS stil yoludur /var/empty:

net user "${unpriv_user}" /add /fullname:"${unpriv_user} privsep" \
"/homedir:${dos_var_empty}" /active:no

Microsoft'un belgeleri/passwordreq , bir parola gerekiyorsa varsayılan değerinin evet olduğunu ve Windows'un bazı varsayılan parola atadığını söylüyor (muhtemelen bir parola belirtilmediğinden, özellikle de çünkü /active:no).

İkinci düzenlemenizde, ikinci düzenlemenizde belirttiğiniz gibi, varsayılan olarak, en azından Windows 8.1 Pro için varsayılan, hesabımda VEYA yeni cyg_serverhesapta kesinlikle etkin olmasa da, 42 gün sonra bir parola geçerlilik süresi dolmuş gibi görünüyor . Bu muhtemelen aynı kombinasyondan kaynaklanır - cyg_serverbir şifre belirtir ve aktiftir, ancak sshd bir şifre belirtmez ve aktif değildir (belki de bu, hesap etkinleştirildiğinde / etkinleştirildiğinde bir parolanın atanmasını zorlamaktır). Kesin ayrıntıları bilmek istiyorsanız, muhtemelen sona erme / parolayı belirterek ve ne olduğunu görerek daha benzer hesaplar oluşturmayı deneyeceğim.


1

Orijinal Yanıt

Ayrı devre dışı bırakılmış sshdhesap aslında Cygwin'de kullanılmaz (bir istisna dışında; aşağıya bakın). Bunu Cygwin posta listesinde sordum:

Sshd devre dışı bırakılmış kullanıcı hesabı hala gerekli mi?

Corinna Vinschen (Cygwin sürdürücü) aşağıdakileri yanıtladı:

Hayır, aslında değil. Bu günlerde sshd sunucusu privsep chrrot [sic] ortamının kullanılıp kullanılmayacağını ve sürecin "root: root" altında başlatılıp başlatılmadığını kontrol eder. Bu, Cygwin altında asla eşleşmediğinden sshd kullanıcı gereksinimini düşürebiliriz.

(Bkz. Https://cygwin.com/ml/cygwin/2019-01/msg00120.html )

Yalnızca sftp ile ilgili güncelleme

Yukarıdakiler, sshdhesabın kesinlikle gerekli olmaması nedeniyle doğrudur . Hala ihtiyacınız olan tek şey, bir hesabı yalnızca SFTP ile sınırlamak için ChrootDirectoryayarı kullanmak istiyorsanız sshd_config.

FWIW, OpenSSH'nin Cygwin sürümünü (ve diğer birkaç aracı da dahil rsync) yapılandıran kullanımı kolay bir yükleyici sağlayan bir paket oluşturdum . Eğer ilgilenen varsa GitHub'da:

https://github.com/Bill-Stewart/CygSSH

Paketteki belgeler, sshdhesabın kullanıldığı koşulları açıklar .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.