per ssh auf einem anderen Rechner einen Publickey generieren

D

dauda

Grünschnabel
Hallo, ich habe ein Problem!

Ich möchte Daten in einem Netzwerk von einem Rechner auf einen anderen übertragen. Der eine Rechner ist sozusagen der Verwaltungsrechner, der andere ist ein beliebiger Rechner in meinem Netzwerk. Ich bin auf beiden Systemen angemeldet und kann mich auf dem beliebigen Netzwerkrechner per SSH einloggen.
Nun habe ich ein Programm geschrieben, daß Ergebnisse in Form von Txt-Files erzeugt. Dieses Ergebnisse sollen auf den Verwaltungsrechner wieder zurückgespielt werden. Es ist aber sehr mühseelig, jedesmal das via:

scp *.txt User@IP:.

zu machen.
Also dachte ich mir, schreibe ich mir ein Skript, daß quasi ein paßwortloses Anmelden auf dem Verwaltungsrechner ermöglicht.

Dazu habe ich ein Skript geschrieben, daß einen Key generiert (also mit ssh-keygen) und diesen dann auf den Verwaltungsrechner kopiert.

Nun das Problem.
Führe ich dieses Skript lokal auf dem beliebigen Netzwerkrechner aus, so funktioniert alles ohne Probleme.
Melde ich mich per SSH auf dem Netzwerkrechner an und starte dann das Skript, funktioniert es auch.
Sobald ich jedoch diesen Aufruf ebenfalls in ein Skript oder auch in ein C-Programm integriere, dann kommt es zu Fehlern.

Wie sehen diese Fehler aus?

Nun ja, das Programm bzw. das Skript wird nur zum Teil ausgeführt. Starte ich ssh-keygen so werden verschiedene Infos vom User verlangt, bei diesen Abfragen springt dann das Programm, eine Eingabe ist dann nicht möglich. Das führt dazu, daß erst gar kein Key erzeugt wird....

Hat jemand eine Idee, wie man das verhindern kann?
Ich habe auch versucht, jeden Schritt einzeln zu automatisieren, also ich habe versucht immer nur einen Befehl in einem Skript zu erfassen, aber das war sinnlos, es kommt zu Fehlern, so bald man diesen Login via SSH automatisiert....

Über eine Antwort wäre ich sehr dankbar....die Skripte selbst sind fehlerfrei, sonst würde das ja lokal bzw. bei manuellem SSH-Login ja nicht funktionieren.
 
1. script zeigen!
2. absolute pfade genommen? hat der benutzer mit dem das ausgeführt wird die erforderlichen rechte etc.

is alles nur raten ohne das script selber zu sehen

frank
 
Hier die Scripte:

Das erste Script erzeugt den Schlüssel:

###############################################

#! /bin/bash
#Dieses Script erzeugt bzw. generiert den Schlüssel für die passwortlose Anmeldung auf dem Fronted-Rechner

env LC_ALL=C /sbin/ifconfig eth0 | sed -n '/addr:/s/ [^r]*..//gp' > ownip #ERZEUGEN DER EIGENEN IP
read Ownip < ownip

read LBN < BN-"$Ownip" # Auslesen des lokalen Benutzers (wurde vom Server übermittelt

# Datei Ownip stammt von Keyinstall und wird in das Verzeichnis von Keycopy hineininstalliert

cd /home/$LBN/.ssh

if test -s key-host-"$Ownip".pub


then echo "Schlüssel bereits vorhanden!"


else ssh-keygen -t rsa -b 2048; #generiert Key für Authentifizierung


mv -i id_rsa.pub key-host-"$Ownip".pub # Umbenennen der SChlüssel zur Identifikation auf Zielhost


fi

echo "Schlüssel wurde erzeugt!"

###############################################

Das zweite Script kopiert die Daten auf den Zielrechner:

#! /bin/bash
#Dieses Script kopiert den erzeugten Schlüssel auf den Fronted-Rechner

echo "Kopiere Schlüssel zum Server"

read Ownip < ownip

read LBN < BN-$Ownip # Auslesen des lokalen Benutzers (wurde vom Server übermittelt
# Datei Ownip stammt von Keyinstall und wird in das Verzeichnis von Keycopy hineininstalliert

read Zh < hostip # Auslesen der Hostip
read Usr < luser # Auslesen des Benutzers auf dem Server

cd /home/$LBN/.ssh

echo "Kopiere Schlüssel auf Zielrechner"
echo "Bitte Password für Zielhost eingeben!"
scp key-host-"$Ownip".pub $Usr@$Zh:. #Kopiert Key auf Zielrechner

ssh $Zh chmod u+x Keysavec.sh

echo "Zum Ausführen von Keysave bitte Passwort angeben!"

ssh $Zh "./Keysavec.sh"

###############################################

Die letzte Zeile im Script ruft ein Script auf dem Zielrechner auf, das den Schlüssel in ein spezielles Verzeichniss kopiert.

Wie gesagt. Diese Scripte funktionieren. Das Problem ist aber, dass wenn man ein Script schreibt, dass automatisch eine ssh-Verbindung aufbaut und dann auf dem Rechner dieses Scripte, die ich oben dargestellt habe, ausführt, kommt es zu Problemen.

Bezüglich der Frage absolute Pfade genommen??? Diese Frage verstehe ich nicht. Denn, das Script wird ja gestartet und auch zu einer bestimmten Stelle ausgeführt, erst wenn es zu Benutzerabfragen kommt, springt das Script!

Der Benutzer hat die notwendigen Rechte, denn sonst gäbe es eine entsprechende Fehlermeldung.

Ich denke eher, dass es kein Problem im Script selbst ist, sondern evt. eine programmiertechnische Besonderheit, die speziell bei ssh-Verbindungen auftritt, daher habe ich ganz bewusst kein Script reingestellt, denn dort kann man nichts erkennen. Achso, alle Scripte sind auf den jeweiligen Rechner für den angemeldeten Benutzer ausführbar!
 

Ähnliche Themen

nach ssh-login auswerte ob passwortabfrage komt oder nicht

Cronjob mit Root-Rechten

rsync via ssh per http-Aufruf starten

Spielespezifische Frage - Rechtefreigabe

ssh login via shell script, und anschliessend befehele ausfuehren.

Zurück
Oben