it-swarm.com.de

Wie kann man aus einem Bash-Skript heraus sshen?

Ich versuche, eine SSH-Verbindung herzustellen und einige Dinge auf dem Remote-Server innerhalb des Skripts auszuführen.

Das Terminal fordert mich jedoch zur Eingabe eines Kennworts auf und öffnet dann die Verbindung im Terminalfenster anstelle des Skripts. Die Befehle werden erst ausgeführt, wenn ich die Verbindung beende.

Wie kann ich aus einem Bash-Skript heraus ssh?

56
Andrew
  1. Wenn Sie möchten, dass die Kennworteingabeaufforderung nicht mehr angezeigt wird, verwenden Sie die schlüsselbasierte Authentifizierung ( hier beschrieben ).

  2. Um Befehle remote über ssh auszuführen, müssen Sie sie wie folgt als Argument an ssh übergeben:

root @ Host: ~ # ssh root @ www 'ps -ef | grep Apache | grep -v grep | wc -l '

64
halfdan

Wenn Sie weiterhin Kennwörter verwenden und keinen Schlüsselaustausch verwenden möchten, können Sie dies mit "erwarten" wie folgt ausführen:

#!/usr/bin/expect -f
spawn ssh [email protected]
expect "password:"
sleep 1
send "<your password>\r"
command1
command2
commandN
17
SiegeX

Es gibt noch eine andere Möglichkeit, dies mit Shared Connections zu tun: Jemand initiiert die Verbindung mit einem Kennwort, und jede nachfolgende Verbindung wird über denselben Kanal gemultiplext, sodass keine erneute Authentifizierung erforderlich ist. (Und es ist auch schneller)

# ~/.ssh/config 
ControlMaster auto
ControlPath ~/.ssh/pool/%[email protected]%h

dann müssen Sie sich nur noch anmelden und solange Sie angemeldet sind, kann das Bash-Skript ssh-Verbindungen öffnen.

Sie können dann die Arbeit Ihres Skripts unterbrechen, wenn der Kanal noch nicht von jemandem geöffnet wurde:

ssh ... -o KbdInteractiveAuthentication=no ....
5
Kent Fredric

Sie müssen lediglich die SSH-Schlüssel für den Benutzer austauschen, unter dem das Skript ausgeführt wird. Schauen Sie sich dieses Tutorial an

Anschließend werden Ihre Skripte ausgeführt, ohne dass Sie ein Kennwort eingeben müssen. Aus Sicherheitsgründen möchten Sie dies jedoch nicht für Root-Benutzer tun!

2
Dan Soap