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;
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"
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?
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?
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.
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.
Expect ist das übliche Werkzeug zum Automatisieren interaktiver Sitzungen.
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
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.
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
Haben Sie Paramiko in Erwägung gezogen? Es ist eine Python-Bibliothek für die Interaktion mit SSH.