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ć?


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.


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 / ...)

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.