Jak ssh linux, gdy powłoka zostanie zmieniona lub ulegnie awarii, ale nadal trzeba mieć dostęp zdalny?

0

Mam zdalnie uruchomioną Linuksa (CentOS 6.0). Ma dynamiczny adres IP, więc zainstalowałem usługę noip2 i skopiowałem plik cp redhat.noip2.sh /etc/profile.d/noip.sh.

Tutaj możesz zobaczyć skrypt noip.sh działający teraz na zawsze przy ponownym uruchomieniu ( patrz ).

Po tym, gdy system uruchomił się raz, nigdy nie miał poprawnej powłoki. W rezultacie zdalnie, gdy próbuję ssh serwera, nie mogę się zalogować i nie mogę nic zrobić. Czy ktoś może to rozwiązać? Oto szczegóły, które próbowałem: Kiedy debuguję ssh, widzę to debug1: Authentication succeeded (password).i polecenie jest również wysyłane, ale nic się nie dzieje. Po prostu nie mogę tego jeszcze naprawić.

Wszystkie zawiodły:

ssh root@host 'rm -fr /etc/profile.d/noip.sh'
scp emptynoip.sh root@host:/etc/profile.d/noip.sh
ssh root@host /bin/sh
ssh root@host /bin/bash
ssh root@host --norc -i
ssh root@host -- --norc -i
ssh root@host bash --norc -i 
ssh root@host /bin/bash -i './etc/profile.d/noip2 stop'
ssh root@host /bin/bash -i './etc/profile.d/noip stop'
ssh root@host /bin/bash -l './etc/profile.d/noip stop'

wiele innych ... kombinacji, które próbowałem, wszystkie zawiodły. Czy jest jakaś pojedyncza opcja, którą mogę wypróbować?

Mniam mniam mniam
źródło
Co się stanie, kiedy dokładnie je wypróbujesz? Otrzymałeś komunikat o błędzie? Jeśli tak, to jaki błąd?
David Schwartz
Do wykorzystania w przyszłości: dzwonienie do usług noip/etc/profile.d to zły pomysł. (Sytuacja: serwer uruchamia się ponownie, uzyskuje inny adres, ale DNS nie jest aktualizowany, ponieważ profil.d jest uruchamiany w czasie logowania i nie można się zalogować bez uprzedniej aktualizacji DNS ...) /etc/rc.localZamiast tego użyj lub podobnie.
grawity
Co się stanie, gdy spróbujesz nacisnąć Ctrl-C po wyświetleniu komunikatu „wysłane polecenie”? W większości powłok profilepliki mogą być w ten sposób przerywane. Ctrl-Z i Ctrl- \ mogą również działać.
grawity
Próbowałem umieścić kogoś na stronie, aby fizycznie usunąć plik /etc/profile.d/noip.sh i zastosować init 6. Ale na stronie za pomocą klawiatury nie mogą się zalogować przy użyciu nazwy użytkownika root i hasła. Zawsze otrzymują teraz monit o zalogowanie się. Ctrl-c i cant stosują bardzo krótki czas, jaki mamy w tym okresie.
YumYumYum
Czy mogę wysłać zdalnie ssh root @ host 'ctrl-c lub ctrl-z'?
YumYumYum

Odpowiedzi:

1

Dwa możliwe rozwiązania:

  • zaloguj się jako inny użytkownik, a następnie użyj sudo lub su, aby usunąć noip.sh
  • użyj sftp, aby usunąć noip.sh

Na marginesie, w przypadku problemu z dynamicznym adresem IP ddclient jest bardziej niezawodnym rozwiązaniem, obsługuje wiele usług, haczyki ifup / down, a także tryb demona.

Pablo Castellazzi
źródło
Nie mogę się też fizycznie zalogować. Wyświetla monit o zalogowanie i ponownie monit o zalogowanie, a następnie ponownie o zalogowanie, nawet podając prawidłowe hasło.
YumYumYum
Nie mogę nawet su - to zawsze uruchamia plik noip.sh. Testowałem w VirtualBox, umieszczając plik noip.sh w pliku /etc/profile.d/noip.sh
YumYumYum
Próbowano z Sftp, połączenie jest zawsze automatycznie zamykane.
YumYumYum
su - jest taka sama jak działa skorupę konta root, spróbuj su -s /bin/dash(lub innej powłoki wymienione w / etc / shells, csh rodzina muszli są dobrymi kandydatami, używają różnych plików konfiguracyjnych)
Pablo Castellazzi
Dzięki temu, że w końcu zostało rozwiązane, umieściłem właściwe kroki na przyszłość.
YumYumYum
0

Rozwiązany.

Kroki:

  • byłem fizycznie na serwerze
  • wtedy nadal nie mogę się zalogować, zawsze pytam o logowanie, nawet fizycznie próbując się zalogować
  • Więc poszedłem do menu grub, naciskając klawisz Shift i nadal tak samo, zawsze pyta o login (nie pozwól mi zmienić nawet poziomu uruchamiania)

Rozwiązanie:

  1. Podczas uruchamiania naciśnij klawisz Shift
  2. Menu Grub naciśnij a
  3. dodaj to „init = / bin / sh”
  4. pojawi się powłoka, a następnie zastosuj rm -fr /etc/profile.d/noip.sh (nie powiodło się, ponieważ tylko do odczytu)

  5. zamontować, odmontować /

  6. rm -fr /etc/profile.d/noip.sh działał

  7. init 6 (nieudany)

  8. wyłącz zasilanie i włącz je (rozwiązane całe badziewie)

Nadal nie ma już problemu w tej sprawie, więc rozwiązany, nie ma teraz problemu. Mam nadzieję, że pomoże innym w przyszłości. (nigdy nie umieszczaj czegoś w /etc/profile.d / ...)

Mniam mniam mniam
źródło