SSH, yeniden başlatma sırasında varsayılan bağlantı noktasına sıfırlanır


12

Ev sunucumdaki ( /etc/ssh/sshd_configdosyadaki) varsayılan SSH bağlantı noktanızı 54747 numaralı bağlantı noktasına değiştirdim, sonra sshve sshdhizmetleri yeniden başlattım (hangisinin bu kadar güvende olmadığından emin değilim). Yapılandırmamı test etmek için oturumu kapattım ve sorunsuz bir şekilde tekrar giriş yaptım.

Birkaç gün sonra uygun güncellemeler yükledim ve sunucumu yeniden başlattım. SSH'yi tekrar (54747 numaralı bağlantı noktasında) denemeye çalıştığımda, bağlantı reddedildi hatası alıyorum.

Nedense, varsayılan bağlantı noktasında SSH denedim ve işe yaradı! Ben sshd_config kontrol etmek için geri döndü, ama yine de özel bağlantı noktası vardı. Bu yüzden sshve sshdhizmetlerini yeniden başlattım ve "düzenli" davranışa geri döndüm (54747 numaralı bağlantı noktasında ssh). Yeniden başlatmayı denedim ve bağlantı tekrar reddedildi ...

Ne yaptığımı bilen var mı?

Ekstra ayrıntılar:

  • Ubuntu 16.04.2 LTS
  • Sunucu, TV'imde açık oturum (SSH ile aynı kullanıcı) olan bir HTPC de kullanıyor
  • Dizüstü bilgisayarımın RSA anahtarını kullanarak SSH ve şifre kimlik doğrulamasını devre dışı bıraktım
  • Eskiden yeniden başlatırdım sudo reboot -h now, ama aradıktan sonra, bazı insanlar tarafından cesaretini kırdığını keşfettim, bu yüzden denedim sudo reboot, ama hiçbir fark yok

Olayları DÜZENLE :

  1. SSH bağlantı noktasını 22'den 54747'ye değiştirin. /etc/ssh/sshd_config
  2. Ssh ve sshd hizmetlerini yeniden başlatın
  3. Geçerli SSH oturumunu sonlandır
  4. SSH 54747 numaralı bağlantı noktasında başarıyla geri döndü
  5. Yeniden Başlatma
  6. 54747 numaralı bağlantı noktasında SSH bağlantı hatası, ancak 22 numaralı bağlantı noktasında başarılı
  7. Ssh ve sshd hizmetlerini yeniden başlatın
  8. SSH, 54747 numaralı bağlantı noktasında başarıyla geri döndü, 22 numaralı bağlantı noktasında bağlantı hatası
  9. Yeniden başlatın ve 6'ya geri dönün

EDIT 1: netstat çıktı

rgo@ATLAS:~$ sudo netstat -lntp | grep :54747
rgo@ATLAS:~$ sudo netstat -lntp | grep :22
tcp6       0      0 :::22                   :::*                    LISTEN      1/init  

DÜZENLEME 2: service sshd status

● ssh.service - OpenBSD Secure Shell server
   Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
   Active: inactive (dead)

DÜZENLEME 3: lsof -i | grep ssh

systemd      1     root   46u  IPv6  42724      0t0  TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
systemd      1     root   49u  IPv6  14641      0t0  TCP *:ssh (LISTEN)
sshd      4088     root    3u  IPv6  42724      0t0  TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
sshd      4088     root    4u  IPv6  42724      0t0  TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
sshd      4202      rgo    3u  IPv6  42724      0t0  TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
sshd      4202      rgo    4u  IPv6  42724      0t0  TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)

Başvuru için, ATLAS uzak sunucu ana bilgisayar adı, 192.168.1.27 dizüstü bilgisayarımın LAN IP'sidir ve komut adım 6 ve 7 arasında yürütülmüştür

ufw status

Status: inactive

DÜZENLEME 4: ps -ef |grep sshd

root      4088     1  0 22:40 ?        00:00:00 sshd: rgo [priv]
rgo       4202  4088  0 22:40 ?        00:00:00 sshd: rgo@pts/1 sshd

Seni hiçbir şekilde küçümsemiyorum. Ama bana öyle geliyor ki ssh sunucusunda komutları istenildiği gibi girmiyorsunuz. Ssh arka plan programı öldüğünde canlı ssh bağlantısı kuramazsınız. Ssh sunucusunda ps -ef | grep sshd / usr / sbin / sshd -D işlemini döndürmelidir. Size yardım etmek ama farklı yönlere göndermek birkaç millet vardır. Size yardımcı olursa, sizinle anlık mesajlaşmaktan memnuniyet duyarız.
jones0610

Belki de Zaten Kodi ile aynı kullanıcı açmış ve TV'mde görüntülenmiş bir oturum var çünkü?
3rgo

Merhaba, @ 3rgo, bunu çözmeyi başardın mı?
pa4080

Selam ! Hayır hala bu sorunu yaşıyorum ... Neyse ki, ev sunucumu sık sık yeniden başlatmam gerekmiyor, ama yine de bir acı, çünkü bazı otomatik işlemlerimi
kırıyor

Bazı fikirlerim var. (1) Bağlantı noktasını varsayılan değerine değiştirmeye ve ardından tüm sistemi yeniden başlatmaya çalışabilirsiniz. Sonra tekrar istenen değere değiştirmeyi deneyin. (2) Örneğin farklı değerlerle deneyin Port 10285. Google, 54747 için birkaç sonuç gösteriyor ... (3) Ayrıca SSH sunucusu aynı anda birkaç bağlantı noktasıyla çalışabilir. Her bağlantı noktası için iki ayrı yönerge oluşturun: Port 22ve Port 54747ardından güvenlik duvarında yalnızca ikincisini açın. (4) başında yer alan Match LocalPortdirektifi deneyebilirsiniz sshd_c.
pa4080

Yanıtlar:


2

ssh, yapılandırmaya bağlı olarak systemd tarafından "soketle etkinleştirilebilir", yani başlangıçta dinleme bağlantı noktasını kuran sistemd'dir ve sshd yalnızca bir istemci ilk bağlandığında başlatılır. Bu, başlangıç ​​zamanını hızlandırmak içindir: hizmet cinleri yalnızca istek üzerine başlatılır.

Ancak bu, systemd'yi eşleşen bağlantı noktasına da yapılandırmanız gerektiği anlamına gelir. /lib/systemd/system/ssh.socketListelerde hangi sistem yapılandırmasını bulacaksınız ListenStream=22. Bunu geçersiz kılmak için aşağıdakileri içeren bir dosya /etc/systemd/system/ssh.socket.d/port.confoluşturun ( ssh.socket.dgerekirse dizini oluşturma ):

[Socket]
ListenStream=
ListenStream=54747

Numarayı istediğiniz bağlantı noktasına değiştirin. İlk boş giriş önceki varsayılanı siler ve sonraki giriş yeni girişi ekler. Bu, gönderilen varsayılan değeri geçersiz kılar ve değiştirmeye ek/lib/systemd/system/ssh.socket olarak yapılması gerekir ./etc/ssh/sshd_config

Ardından sudo systemctl daemon-reload, systemd'ye değişikliklerinizi ve sudo systemctl reload sshssh arka plan programınızın daha önce çalışıp çalışmadığını anlatmak için çalıştırın.


Bu yanıt çok ümit verici görünüyor , ancak /etc/systemd/system/ssh.socket.d/port.confyok sayılıyor ve yeniden başlatma yine de portu 22'ye sıfırlıyor. Dosya adı ilgili mi? Ubuntu'daki sistemd geçersiz kılmaları hakkında iyi belgeler bulamıyorum .
MestreLion

Dosya adı, bittiği sürece önemli değildir .conf. Systemd geçersiz kılma yapılandırma dosyalarıyla ilgili ayrıntılar için bkz. Systemd-system.conf (5) .
Robie Basak

Ayrıca systemctl status ssh.socket, etkin olup olmadığını ve ne dinlediğini görmek için koşabilirsiniz .
Robie Basak

2
Bu çalışıyor!!! Sonunda bu mistery çözüldü! Ancak daha sonra her iki bağlantı noktasını kullanarak da erişebildiğimi fark ettim : varsayılan 22 ve özel olan. ListenStream=Özel bağlantı noktasından önce bir satır eklemek bunu engelledi, neden olduğundan emin değilim. Belki de bu ListenStream=22, varsayılandaki ayarı "temizler" /lib/systemd/system/ssh.socket? Ayarları geçersiz kılmanın garip yolu. Belki bunu cevaba eklemeye değer mi?
MestreLion

@MestreLion ah evet, bu doğru. Cevabı güncelleyeceğim. Teşekkürler!
Robie Basak

0

/etc/ssh/sshd_configDosyadaki bağlantı noktası ayarlarınızı doğrulayın . Sudo veya sudo grubunda bir kullanıcı olarak düzenleme yaptığınızdan emin olun. Bağlantı noktasını ayarlamak için tek yapmanız gereken, bir satır türünde Port 54747.Şimdi, ssh hizmetini service sshd restart.çalıştırarak sudo netstat -lntp | grep ssh.yeniden başlatmaktır.

Ayrıca ağ ayarlarınızı kontrol edin. Şirket ağındaysanız, doğru vlanda olduğunuzdan emin olun.


Bir yedekleme yaptım ve dosyayı sudo olarak düzenledim ve varsayılan Port 22satırı Port 54747yalnızca olarak değiştirdim. Ayrıca bana verdiğin netstatın hiçbir çıktısı yoktu. OP
3rgo

Doğru bir anahtarla mı bağlanıyorsunuz? Böylece gibi bağlantı olmalıdır: ssh -i key.txt user@ipaddress -p 54747. Ayrıca bu bağlantı noktasında başka bir şey dinleyip dinlemediğini kontrol edin. Yap sudo lsof -i | grep ssh. Güvenlik duvarınızı, hiçbir şeyi engellemediğinden emin olmak için de kontrol edebilirsiniz. Yapın: sudo ufw status.
G_Style

54747'de bağlantı noktası kullanılmadı (OP'ye bakın, ekledim). Komutlarınızın çıktısını da buna ekliyorum
3rgo

Sorununuz hakkında biraz daha düşündükten sonra, bunun sizin kurulumunuz olmadığını, ancak yeniden başlatma şeklinizi, bu da yaşadığınız soruna neden olduğunu hissediyorum. Yeniden başlattığınızda komutu kullanmalısınız shutdown -r now. Bunu deneyin ve sonuçları bize bildirin. Referans için bu makaleye bakın: askubuntu.com/questions/483670/…
G_Style

Sadece denedim ve sudo reboot -h now`` sudo reboot`` ile aynı sonucu aldım
3rgo

0

Bazen işler ters gidiyor. Senin yerinde olsaydım, denerdim:

cp /etc/ssh/sshd_config $HOME
sudo apt-get --reinstall install openssh-server

Sunucuya fiziksel olarak erişmem gerekiyor mu? Eğer öyleyse, sadece yarın akşam yapabilirim
3rgo

Merhaba @ 3rgo, fiziksel erişime ihtiyacınız olmadığını düşünüyorum. Sadece VPS'imde deniyorum. Ayrıca SSH ile giriş yaparken evim Ubuntu Sunucusuna da. Bağlantı bile kesilmedi. cpkomut, her durumda, genellikle yeniden yükleme işlemi yapılandırma dosyalarına dokunmaz.
pa4080

Selam! Yeniden yüklemeyi denedim, ancak hiçbir şey değişmedi, hala aynı sorunum var ...
3rgo

0

ssh, ssh sunucusuna kullanıcı oturumu bağlantısını tahkim eden ve sürdüren istemci işlemidir. sshd, ssh bağlantı isteklerini dinlemek ve kimlik doğrulaması yapmak için ssh sunucusunda çalışan arka plan programıdır.

Sshd hizmetini başlatırken okunan sshd sunucusundaki yapılandırma dosyası (düzenlemek için sudo ayrıcalıkları gerektirir)

/etc/ssh/sshd_config

Hizmet başlamalıdır

/etc/systemd/system/sshd.service

Sshd_config dosyasının yeniden okunmasını gerektiren sshd'yi yeniden başlatmak için

sudo service sshd restart

Sshd arka plan programının hangi bağlantı noktasını ve diğer yararlı bilgileri dinlediğini görmek için ssh sunucusu türü

sudo service sshd status

Aşağıdaki adımları belirtilen sırayla gerçekleştirin:

Ssh sunucusunu yeniden başlatın

Ssh sunucusunda bir terminal oturumu açın (ssh bağlantısı değil)

tip hostname

Ana bilgisayar adı ssh sunucusunun adını döndürmezse (bu durumda Atlas) önceki adımı doğru şekilde yeniden yapın.

grep Port /etc/ssh/sshd_config - bağlantı noktası numarasını not edin. Belirttiğiniz kişi olmalı

sudo service sshd status

Durum etkin olduğunu, belirttiğiniz özel bağlantı noktasında çalıştığını ve dinlediğini bildiriyorsa, bu konuda iyisinizdir. Değilse, hizmet başlangıcı değiştirdiğiniz sshd_config dosyasını değil, varsayılan bilgileri içeren başka bir yapılandırma dosyasını çağırıyor olabilir. Hizmet başlamadıysa (ölü olduğunu, etkin ve çalışmadığını söylüyorsa, bu, sorduğunuzdan farklı bir sorundur.

Bu adımlar muhtemelen sorduğunuz sorunun temel nedenini belirleyecektir.

Test amacıyla ve basitlik için: İstemci tarafında, bir terminal oturumundan ssh sunucusuna aşağıdaki gibi ssh

ssh -l username -p 54747 hostname

OP geri bildirimlerine dayanarak, sshd'nin önyüklemede başlatılmadığından, ancak manuel olarak çağrıldığında doğru başlatıldığından şüpheleniyorum. Bağlantı noktası 22 yoluyla başarılı ssh bağlantıları ssh sunucusuna DEĞİL, başka bir şeye (örneğin localhost) bağlanıyor olabilir. Ssh tipiyle bağlandıktan sonra bunu kanıtlamak veya reddetmek için

hostname

OP'nin söylediklerine dayanarak, ana bilgisayar adının ssh sunucusu atlası olmayacağını tahmin ediyorum.

Bunu daha fazla izole etmek için, ssh sunucusunu yeniden başlattıktan sonra ancak başka bir şey yapmadan önce , ssh sunucusu (Atlas) türündeki bir terminal oturumundan

ssh localhost

Bu başarısız olursa, olması gerektiği gibi, o zaman

ssh -p 54747 localhost

Bu da işe yaramazsa, çalışırken elde edilen sonuçları onaylar

sudo service sshd status

Selam ! Daha iyi anlayabilmeniz için bir dizi etkinlik ekledim. I SSH komutunu kullanarak, ssh -p <PORT> <USER>@<IP>özel anahtarım aracıya eklendi.
3rgo

Çok iyi. Adım 6a: sshd sunucusunda sudo service sshd status yapın. Bağlantı noktası 22'yi bildirirse, o zaman çağıran sahte bir sshd_config dosyası vardır.
jones0610

"Etkin değil (ölü)" (bir saniyede
OP'mdeki

Öyleyse (etkin değilse ve çalışmıyorsa), olduğunuzu düşündüğünüz makineye girmezsiniz. Sshd sunucusunda ps -ef | grep sshd yazın. Sshd sunucusundaki sshd arka plan programı gerçekten ölmüşse, hiçbir sshd işlemi çalışmaz ve böylece kazanırsınız; kullanılan bağlantı noktasından bağımsız olarak ssh'a giremezsiniz.
jones0610

2 sshd süreçleri bulundu ... Ayrıntılı çıktı ekledim
3rgo

0

Muhtemelen, sshd_config ile paketiniz arasındaki farklar uygun olduğunda Y'yi yanıtladınız. Paket mantain versiyonunu kurmak ya da sizinkini korumak isteyip istemediğinizi sorar.


1
Böyle bir şey sorulduğunu hatırlamıyorum, ancak böyle olduğunu varsayarak, düzeltmek için ne yapabilirim?
3rgo

0

Düşünebileceğim olası nedenler

  1. Önyükleme sırasında farklı bir sshd ikili dosyası veya farklı bir yapılandırma ile sshd başlatılır. Belki burada sistemd suçludur - /usr/lib/systemd/system/sshd.socketgörünüşe göre dosya üzerinden port değiştirmenin farklı bir yolu var : https://www.vultr.com/docs/how-to-change-ssh-port-on-coreos
  2. Sshd başladığında doğru / etc / veya / etc / ssh henüz bağlanmamıştır, makinenizde daha sonra önyükleme işlemine bağlanan ayrı bir birim mi?
  3. sshd, açılışta yapılandırma dosyasına okuma izinlerinden yoksundur, ancak sshd'nin daha sonra başlayıp başlamayacağını bilmiyorum.

2
Sanırım onun üzerindesin. Ve çok fazla yükseltmeden geçen bir sunucu ise, belki de etrafta bir başlangıç ​​komut dosyası kokteyli var (sysv-init, upstart, systemd) Belki basit bir arama ve / etc / içindeki tüm dosyaları kontrol edin find /etc/ -iname "*ssh*".
Bazz
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.