Bash: Steuern von SSH

7

Ich habe diese Bash-Datei, die nach IP, Passwort usw. für OpenSSH zu einem Gerät fragt.

Wenn ich nun ssh root@ip verwende, muss ich das Passwort eingeben. Das ist wirklich irritierend. Zweitens; Ich kann nicht zulassen, dass mein Skript Befehle an es sendet.

Das ist was ich will- & gt;

  1. Nicht die Passwort-Sache; Ich habe schon etwas gefunden; aber es sagt mir, dass die Befehle nicht gefunden werden?:

    #!/usr/bin/expect -f

    spawn ssh root@$IPADDR

    expect "password:"

    sleep 1

    send "$rpass\r"

    1. Ich möchte, dass der Benutzer einige Menüs sehen kann, aus denen er auswählen kann; danach; Jedes Kommando ist für ihn erledigt. Also wie ein neues Fenster oder so?

    2. Ich möchte nicht verwenden: - Irgendwelche externen Sachen -Keine zusätzliche Bearbeitung der SSH-Verbindung

BASH INFO: GNU Bash, v. 4.0.33 (1) -Release (i486-pc-Linux-gnu), läuft auf Linux Mint. Aber es wurde für mehrere Linux Distributionen und auch für Mac verfügbar?

    
Deniz Zoeteman 17.12.2009, 20:45
quelle

7 Antworten

2

Viele Tools, mit denen Sie große Anstrengungen unternehmen können, um das zu verhindern, was Sie tun. Ich empfehle die Verwendung von ssh öffentlichen Schlüsseln, um dieses Problem anstelle von Passwörtern zu lösen.

Die große Alternative besteht darin, Ihren eigenen modifizierten ssh-Client basierend auf der Open Source zu schreiben, um die Kontrolle über die Passwortverwaltung zu übernehmen.

Oh, nun, ich habe es vergessen. Du kannst das wahrscheinlich mit einem Pty austricksen, denn dann wird / dev / tty das sein, was du kontrollierst. Erwarten könnte Ihnen dabei helfen.

    
bmargulies 17.12.2009, 20:48
quelle
13

Der richtige Weg, dies zu tun, ohne Passwörter im Klartext auf Ihrem Computer zu speichern, ist mit ssh. Erster Lauf:

  

ssh-keygen

Dies erzeugt einen neuen SSH-Schlüssel in ~/.ssh/id_rsa.pub . Danach einfach ausführen:

  

ssh-copy-id [email protected]

Wenn Sie auf OS X oder einem anderen Computer ohne "ssh-copy-id" arbeiten, gibt es eine Zeile alternative wie dieser:

  

Katze ~ / .ssh / id_rsa.pub | ssh Benutzer @ Maschine "mkdir ~ / .ssh; Katze & gt; & gt; ~ / .ssh / authorized_keys"

Schließlich müssen Sie nur den Inhalt von ~/.ssh/id_rsa.pub auf Ihrem lokalen Rechner an ~/.ssh/authorized_keys auf dem entfernten Server anhängen. Wie Sie das tun, liegt an Ihnen, die oben genannten sind nur schnelle Verknüpfungen, um das zu tun.

    
Chev 30.01.2014 21:13
quelle
2

Expect ist das übliche Werkzeug zum Automatisieren interaktiver Sitzungen.

    
Dennis Williamson 17.12.2009 20:55
quelle
2

Der richtige Weg ist es, die Schlüssel zu kopieren, wie es hier gesagt wurde. Um der Konversation etwas hinzuzufügen, gibt es Fälle, in denen sshpass nützlich sein kann.

Die Frage bezieht sich speziell auf das Scripting in einem System mit SSH. Wenn es sich um die Entwicklung eines eingebetteten Systems handelt, kann es nützlich sein, sshpass mit Befehlszeilenoptionen zu kombinieren, wenn es in diesem Beitrag gelesen wird

%Vor%

Dies kann mit

kombiniert werden %Vor%

, um Bestätigungsfragen zu vermeiden, die das Auftreten von Skripten verhindern.

Verwenden Sie dies wiederum nur in Entwicklungssystemen, in denen sich verschiedene Maschinen eine IP teilen und die Sicherheit nicht wichtig ist.

Ссылка

    
nachoparker 01.03.2017 12:53
quelle
1

Verwenden Sie ssh-keygen, um einen öffentlichen Schlüssel für Ihre Maschine zu erstellen, und kopieren Sie dann Ihre lokale ~/.ssh/id_rsa.pub oder ~/.ssh/identity.pub in ~/.ssh/authorized_keys auf das entfernte System.

Möglicherweise müssen Sie die Berechtigungen für die Datei authorized_keys verschärfen: chmod 600

    
Nick Dixon 17.12.2009 20:53
quelle
1

Haben Sie Paramiko in Erwägung gezogen? Es ist eine Python-Bibliothek für die Interaktion mit SSH.

    
Alex Brasetvik 17.12.2009 23:37
quelle
1

Auch wenn ich dafür PEM-Schlüssel verwenden würde und dies ein altes Thema ist, wollte ich auch sshpass

    
Tom 31.08.2015 15:59
quelle

Tags und Links