screen nur bei sudo innerhalb einer ssh-Sitzung

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
scientific
Beiträge: 3022
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

screen nur bei sudo innerhalb einer ssh-Sitzung

Beitrag von scientific » 04.02.2016 11:22:07

Hi Leute!

Ich steh manchmal vor dem Problem, dass ich mich per ssh auf meinem Rechner von außerhalb einlogge. Das mache ich immer als User, root hat ein ssh-Login-Verbot.

Wenn ich dann eine Aktion ausführe, die länger dauert, und ich aber weg muss (also die ssh-Verbindung beenden), sollte die Aktion weiterlaufen. Z.B. ein umfangreiches Systemupdate könnte sowas sein. Wenn ich dann wieder am Rechner sitze, möchte ich die Sitzung übernehmen...

Normalerweise sind das aber nur Systemverwaltungsaufgaben... also etwas, wo ich root werden muss. Ich habe aber noch nichts dazu gefunden, dass screen nur dann gestartet wird, wenn sudo in einer ssh-Sitzung gemacht wird. Sitze ich lokal am Rechner, brauche ich screen nicht nach sudo.

Ist das überhaupt sinnvoll, und wenn ja, wie löse ich sowas?

Aufbauend auf dem kurzen Schnipsel

Code: Alles auswählen

if [[ -e $SSH_TTY ]] && [[ $TERM != screen ]]; then
        echo Starting or resuming screen session
        echo Press CTRL+C to cancel screen startup
        sleep 2
        screen -UxR;
fi
das ich nicht in der .bashrc sondern in einem File in /etc/profile.d/ abgelegt habe, sollte sich da was machen lassen?
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Benutzeravatar
Patsche
Beiträge: 3263
Registriert: 21.06.2013 01:47:54
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: /home/10001101001

Re: screen nur bei sudo innerhalb einer ssh-Sitzung

Beitrag von Patsche » 04.02.2016 11:23:47

Eventuell ist Debianscreen das, was du suchst. Ich nutze es nicht, habe aber schon öfter davon gelesen.
https://wiki.ubuntuusers.de/Screen/

TomL

Re: AW: screen nur bei sudo innerhalb einer ssh-Sitzung

Beitrag von TomL » 04.02.2016 11:30:15

scientific hat geschrieben: dass screen nur dann gestartet wird, wenn sudo in einer ssh-Sitzung gemacht wird.
Warum "gestartet wird"? Warum startest du screen nicht manuell, wenn die SSH-Verbindung steht, meldest dich dann in der neuen screen-Sitzung als root an, startest deine Jobs und machst nen detach? Dann kannst du dich als user vom ssh ausloggen und später die Screensitzung wieder öffnen .... entweder erneut mit ssh oder auch lokal.

Benutzeravatar
MSfree
Beiträge: 11715
Registriert: 25.09.2007 19:59:30

Re: screen nur bei sudo innerhalb einer ssh-Sitzung

Beitrag von MSfree » 04.02.2016 11:34:25

scientific hat geschrieben:...sollte die Aktion weiterlaufen. Z.B. ein umfangreiches Systemupdate
kennst du nohup?

z.B.

nohup apt-get upgrade -y > ~/SystemUpdate.output

danach kannst du dich wieder ausloggen.

scientific
Beiträge: 3022
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: screen nur bei sudo innerhalb einer ssh-Sitzung

Beitrag von scientific » 04.02.2016 11:46:17

Patsche hat geschrieben:Eventuell ist Debianscreen das, was du suchst. Ich nutze es nicht, habe aber schon öfter davon gelesen.
https://wiki.ubuntuusers.de/Screen/
Du hast aber schon gesehen und darüber nachgedacht, was ich gepostet habe?

An die anderen:

Nohup kenne ich. Habs aber vergessen. Danke für die Erinnerung!!

Anders gefragt:
Was muss ich tun, dass screen gestartet wird, wenn ich mich in einer ssh-Sitzung mittels sudo zu root mache?
Mir geht es darum, dass ich es nur selben benötige, dass ich mich vorzeitig abmelden muss... Aber wenn, dann muss es schnell gehen. Und wenn ich automatisiert screen gestartet bekomme (eben nur über ssh, und nur wenn ich mittels sudo zu root werde!!!), bin ich diese Eventualitäten los.

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

TomL

Re: screen nur bei sudo innerhalb einer ssh-Sitzung

Beitrag von TomL » 04.02.2016 11:57:52

Vielleicht müsstest Du einfach noch mal besser die Sinnhaftigkeit Deiner Frage erklären.... denn ich verstehe nicht, welchen Vorteil ein Automatismus speziell an diesem Punkt hat. Das ist doch manuell und ohne jeglichen Aufwand eigentlich ganz einfach zu lösen.

1. Du meldest die als User per ssh oder lokal an
2. Du startest "screen" manuell, also 6 Buchstaben im Terminal tippen (und nur dann, wenn mans braucht)
3. In der Screen-Session erfolgt dann die Anmeldung als root und die benötigten Jobs werden gestartet
4. Dann mit strg-a+d die aktive Screen-Sitzung geöffnet verlassen

Und bei/nach nächster Anmeldung am PC (entweder lokal oder per ssh) einfach mit

Code: Alles auswählen

screen -R
die letzte Sitzung wieder aufnehmen. Dafür brauch man doch keinen Automatismus, der erkennt, ob man lokal oder per ssh angemeldet ist.

uname
Beiträge: 12474
Registriert: 03.06.2008 09:33:02

Re: screen nur bei sudo innerhalb einer ssh-Sitzung

Beitrag von uname » 04.02.2016 12:53:56

Neben Debianscreen kannst du dir noch Debiantmux anschauen. Das aber nur am Rande.

Bei Screen mache ich immer folgendes auf allen Systemen. Wichtig ist mir zu wissen, dass ich in einer Screen-Sitzung bin und immer nur genau eine Screen-Sitzung habe.

~/.screenrc

Code: Alles auswählen

hardstatus alwayslastline '[%H] %Lw'
startup_message off
Dann sieht man auch ob man in einer Screen-Sitzung ist. Und dann ganz wichtig rufe ich Screen nur so und immer so auf:

Code: Alles auswählen

screen -xRR
Damit stellt man sicher, dass immer maximal eine Sitzung und somit immer dieselbe Sitzung existiert. Existiert keine wird eine erzeugt. Erst in dieser Sitzung solltest du dann deine sudo-Befehle (wer braucht denn das unter Debian) verwenden. Durch nur eine Sitzung sparst du dir dann auch das ganze Wipen von kaputten screen-Sitzungen. Sitzung ganz normal detachen oder wenn du ganz raus willst entsprechend exit auf allen virtuellen Terminals eingeben. Shortcut ist mir entfallen.

Falls du doch beim Anmelden immer Screen aufrufen willst kannst du in ~/.bash_profile schreiben:

Code: Alles auswählen

screen -xRR
Bei Debiantmux ist das etwas komplizierter. Da wäre es mehr:

Code: Alles auswählen

tmux attach || tmux new (new ist optional)
tmux ist aber besser am Display angepasst, die Statuszeile existiert bereits ohne Konfiguration. CTRL-b gegenüber CTRL-a ist gewöhnungsbedürftig. Kann man aber anpassen.

scientific
Beiträge: 3022
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: screen nur bei sudo innerhalb einer ssh-Sitzung

Beitrag von scientific » 04.02.2016 13:50:50

@uname, vielen Dank!

Warum ich das automatisiert lösen möchte? Nun... bis auf wenige Ausnahmen hab ich screen genau dann benötigt, wenn ich es gerade nicht manuell gestartet hab... Murphy lässt grüßen.

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

scientific
Beiträge: 3022
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: screen nur bei sudo innerhalb einer ssh-Sitzung

Beitrag von scientific » 04.02.2016 14:13:01

Ach ja... @uname...

Wenn du mein ursprüngliches Posting ansiehst, dann findest du darin ein kleines shell-Skript, welches screen aufruft. Dieses habe ich in /etc/profile.d/screen-ssh.sh abgelegt.

Dieses Skript prüft beim Login, ob es in einer ssh-Sitzung läuft, und ob es schon in einer Screen-Sitzung ist. Nur wenn der Login in einer SSH-Sitzung ohne screen stattfindet, wird screen gestartet. Sonst ist es ein ganz normaler Login.

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

uname
Beiträge: 12474
Registriert: 03.06.2008 09:33:02

Re: screen nur bei sudo innerhalb einer ssh-Sitzung

Beitrag von uname » 04.02.2016 14:58:09

Das mit deinem Script war mir schon mehr oder weniger klar. Nur in Verbindung mit "sudo" ist das wohl eine sehr schlechte Idee. Ich könnte mir aber vorstellen, dass du z.B. statt "sudo" ein "ssh root@localhost" durchführst. Du kannst gerne diesen Schritt ohne Benutzeranmeldung durchführen (Einsatz SSH-Keys). Für dein "sudo" nutzt du ja auch nur das dem Hacker bereits bekannte Benutzerpasswort. In der .bashrc von root wiederum könntest du nun versuchen dann Screen zu starten, wenn du dich nicht lokal als root, sondern über SSH und localhost anmeldest. Auf "sudo" musst du leider verzichten. Aber da dir "sudo" keinen Sicherheitsgewinn gibt ist es ja auch kein großer Verlust. Falls dir "ssh root@localhost" nicht gefällt kannst du, sofern du zuvor "sudo" deinstalliert hast z.B. einen Alias "sudo" anlegen ;-) Parameter können leider nicht übergeben werden. Aber auch da könnte man was scripten ;-)

TomL

Re: screen nur bei sudo innerhalb einer ssh-Sitzung

Beitrag von TomL » 04.02.2016 15:33:23

uname hat geschrieben:~/.screenrc

Code: Alles auswählen

hardstatus alwayslastline '[%H] %Lw'
startup_message off
Dann sieht man auch ob man in einer Screen-Sitzung ist.
Klasse! :THX: Das kannte ich noch nicht... gefällt mir ... :) ... so sieht jetzt meine aus:

Code: Alles auswählen

startup_message off
hardstatus on
hardstatus alwayslastline
#                  BG=Blue, FG=Bright-White
#                        Hostname
#                             Number, Flags and Title of aktive Window
#                                     Rechtbündig
#                                       Date     Time
hardstatus string "%{.bW}%H | %n%f %t %=%m.%d.%Y %c "
Wer Lust hat, sich die Erläuterungen für das Code-Chaos anzusehen oder selber experimentieren und anpassen möchte, guckt hier:
http://www.kilobitspersecond.com/2014/0 ... s-strings/
http://www.gnu.org/software/screen/manu ... capes.html

Antworten