Sshd'yi normal bir kullanıcı olarak çalıştırmak mümkün mü?


39

sshdAyrıcalıklı olmayan bir bağlantı noktasında (örn. 2222) ikinci bir örneği kendi yapılandırma dosyamla başlatmayı hedefliyorum .

Açıkçası, bu sshdişlem setuid, sshdarka plan programı çalıştıran kullanıcılar dışındaki kullanıcılar olarak giriş yapamaz .

Ancak, sshdhalihazırda çalışan kullanıcı için işe yarayacak bir çalışma daemonu olması mümkün mü? Kullanım davam için bu iyi olur.

sshdKendi config dosyam ve ana bilgisayar anahtarımla bir örnek başlatmayı denedim ve sshdişlem başladı (bazı komutlar gibi root olmadığına dair herhangi bir şikayet yok), ancak bu bağlantı noktasına bağlanmayı denediğimde sshdişlem öldü.

$ /usr/sbin/sshd -dD -h .ssh/id_rsa -p 2222 
debug1: sshd version OpenSSH_5.6p1
debug1: read PEM private key done: type RSA
debug1: private host key: #0 type 1 RSA
debug1: setgroups() failed: Operation not permitted
debug1: rexec_argv[0]='/usr/sbin/sshd'
debug1: rexec_argv[1]='-dD'
debug1: rexec_argv[2]='-h'
debug1: rexec_argv[3]='.ssh/id_rsa'
debug1: rexec_argv[4]='-p'
debug1: rexec_argv[5]='2222'
debug1: Bind to port 2222 on 0.0.0.0.
Server listening on 0.0.0.0 port 2222.
debug1: Bind to port 2222 on ::.
Server listening on :: port 2222.
debug1: fd 6 clearing O_NONBLOCK
debug1: Server will not fork when running in debugging mode.
debug1: rexec start in 6 out 6 newsock 6 pipe -1 sock 9
debug1: inetd sockets after dupping: 5, 5
Connection from ::1 port 57670
debug1: Client protocol version 2.0; client software version OpenSSH_5.6
debug1: match: OpenSSH_5.6 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.6
debug1: list_hostkey_types: 
No supported key exchange algorithms
debug1: do_cleanup
debug1: do_cleanup
debug1: audit_event: unhandled event 12

debug1: setgroups() failed: Operation not permittedHat açıkçası sopalarla, ama bir bağlantıyı kabul etmeye çalışır kadar ölmez.

Yanıtlar:


35

Bir miktar kazı yaptıktan sonra çözdüm.

İşlemi, oluşturduğunuz yeni dosyanın sshd -f ~/.ssh/sshd_confignerede /.ssh/sshd_configolduğu ile başlatın. Diğer seçenekler arasında (farklı bir ana bilgisayar anahtarı, farklı bir bağlantı noktası vb. Gibi) satırı eklemeniz gerekir UsePrivilegeSeparation no. Bu, sshdişlemin herhangi birini setuidveya setgidçağrı yapmayı denemesini önler ve kullanıcı olarak çalışmaya devam etmesini ve kullanıcı olarak bağlantıları kabul etmesini sağlar.

DÜZENLEME: Birkaç dakika birilerini bulmaktan sonra başka bu bunu yapmanın doğru yolu olduğu doğrulanırsa bana bu bağlantıyı tweeted http://cygwin.com/ml/cygwin/2008-04/msg00363.html


1
Ayrıca ayarlayarak devre dışı PAM gerek UsePamiçin no.
haridsv

@bjeanes sizin için çalışıyor mu? sshd_config dosyanızı paylaşır mısınız? ubuntu'da denediğimde "Set" benim için geçerli bir komut değil.
jojo

@jojo Bu konfigürasyonu çalıştırmıyorum, bu yüzden paylaşacak dosyam yok. Bilinen bir çalışma dosyasıyla başlamak ve ihtiyaçlarınızı ayarlamak zorunda kalacaksınız.
Bo Jeanes

1
Devre dışı bırakan PAM olayı yalnızca belirli durumlar içindir. Pam ayarlarıyla uğraşmadan Fedora'da benim için çalışıyor. Her şeyi güzelleştirmek için başka nelerin değiştirilmesi gerektiğine dair daha fazla fikir için, verilen e-posta iletisine bakın. Yakında notlarımı docker için nasıl çalıştığımı güncelleyeceğim: hub.docker.com/r/aosqe/ssh-git-server (lütfen okumadan birkaç gün önce izin verin)
akostadinov

6

Bu iş parçacığının bir güncellemesi olarak, 7.5 sürümündeki OpenSSH, ayrıcalık ayrılmasını devre dışı bırakmayı imkansız kılarak, UsePrivilegeSeparation seçeneğini kullanımdan kaldırmıştı. Bir kullanıcı olarak SSHD çalıştırmanın artık mümkün olmadığı anlaşılıyor.

Bkz https://www.openssh.com/releasenotes.html


Sunucu yapılandırmasına bağlı olarak, durum böyle olmayabilir. Sshd config dosyamda "UsePrivilegeSeparation yes" veya "UsePrivilegeSeparation sanal alanını" gösterirken normal bir kullanıcı olarak sshd çalıştırmakta hiçbir sorunum yok.
a3nm

Eh, henüz denemedim, ama bunun şimdi "sabit" olduğunu düşünüyorum: "sshd (8): root ayrıcalıklarına sahip olmadan başladığında, ayrıcalık ayırma kullanıcısı veya yolunun mevcut olmasını gerektirmez. Regresyon testlerini çalıştırmayı kolaylaştırır dosya sistemine dokunmadan. "
Daniel Santos

2

Normal bir kullanıcı olarak sshd servisini çalıştırma olasılığını detaylı olarak kontrol ettim. Programın versiyonunun detayı:

sshd sürümü OpenSSH_7.4, OpenSSL 1.0.2k

Sonunda birçok hatayı çözdükten sonra SSHD'nin aşağıdaki hatayı iptal ettiği bir noktaya geldim:

Root olmayan kullanıcılar tarafından giriş kayıtları yazmaya çalışın (iptal)

Kaynak kodu değiştirmeden sorunu çözmenin mümkün olup olmadığını görmek için kaynak kodunu kontrol ettim. Buradaki koda bakın . Programın kürtajına neden olan kodun bir kısmı:

#ifndef HAVE_CYGWIN
    if (geteuid() != 0) {
        logit("Attempt to write login records by non-root user (aborting)");
        return (1);
    }
#endif

Kullanıcı ayrıcalığını kontrol eder (geteuid() != 0)ve burada soruna neden olur.


1

Yukarıda @magiclantern'de belirtilenleri varsaymak ve yama yapmak istemediğinizi varsaymak sshd, Dropbear'ın sizin için çalışacağını mı düşünüyor? Daha az yer kaplayan (ve daha az özellik / yapılandırma) bir ssh sunucusu isteyen birçok yerleşik aygıtta kullanılır.


1
dropbear -E -F -R -w -g -a -p 2222 -P ./dbearPID # hile yapar
dotbit

1

İşte Bo Jeanes'in cevabını esas alan bir kullanıcı bash senaryosu:

  • Evde çalışma dir oluşturun
  • çalışma dizininde sunucu anahtarları oluşturmak
  • çalışma dizininde bulunan pid dosyası ile temel config dosyası oluşturmak
  • SSH arka planını başlat

mkdir ${HOME}/custom_ssh
ssh-keygen -f ${HOME}/custom_ssh/ssh_host_rsa_key -N '' -t rsa
ssh-keygen -f ${HOME}/custom_ssh/ssh_host_dsa_key -N '' -t dsa
echo "Port 2222
HostKey ${HOME}/custom_ssh/ssh_host_rsa_key
HostKey ${HOME}/custom_ssh/ssh_host_dsa_key
AuthorizedKeysFile  .ssh/authorized_keys
ChallengeResponseAuthentication no
UsePAM yes
Subsystem   sftp    /usr/lib/ssh/sftp-server
PidFile ${HOME}/custom_ssh/sshd.pid" > ${HOME}/custom_ssh/sshd_config
/usr/bin/sshd -f ${HOME}/custom_ssh/sshd_config
echo "
--------
Process ID : ${HOME}/custom_ssh/sshd.pid
-------"
  • OpenSSH_7.9p1, OpenSSL 1.1.1a 20 Kas 2018
  • pam auth (aynı yerel ve uzak kullanıcıyla test edildi)

Hala görüyorum: "debug1: setgroups () başarısız oldu: İşleme izin verilmedi"
dotbit

İyi bir çözüm, ancak komutların daha iyi görünmesini sağlamalısınız. Çirkin.
MAChitgarha
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.