ssh-Script
ssh-Script
Hallo,
ist es möglich, dass ich über ein Skript oder einen ssh-Befehl, eine Verbindung von einem Rechner 1 auf einen Rechner 3 bekomme, wobei ich von Rechner 1 über einen Rechner 2 gehen muss, um auf Rechner 3 zu gelangen.
Ich habe die public-keys der jeweiligen Rechner schon auf den Ziel-Rechnern hinterlegt. Sprich, ein ssh Rechner 2 (von Rechner 1 aus) funktioniert, ohne dass ich ein Passwort eingeben muss. Ein ssh (von Rechner 2 aus) zu Rechner 3 funktioniert auch ohne Passworteingabe.
Das ganze würde ich aber schon gerne von Rechner 1 aus starten können, so dass ich direkt auf Rechner 3 gelange.
Ein ssh Rechner 2 "ssh Rechner 3" funktioniert leider nicht.
ist es möglich, dass ich über ein Skript oder einen ssh-Befehl, eine Verbindung von einem Rechner 1 auf einen Rechner 3 bekomme, wobei ich von Rechner 1 über einen Rechner 2 gehen muss, um auf Rechner 3 zu gelangen.
Ich habe die public-keys der jeweiligen Rechner schon auf den Ziel-Rechnern hinterlegt. Sprich, ein ssh Rechner 2 (von Rechner 1 aus) funktioniert, ohne dass ich ein Passwort eingeben muss. Ein ssh (von Rechner 2 aus) zu Rechner 3 funktioniert auch ohne Passworteingabe.
Das ganze würde ich aber schon gerne von Rechner 1 aus starten können, so dass ich direkt auf Rechner 3 gelange.
Ein ssh Rechner 2 "ssh Rechner 3" funktioniert leider nicht.
Oh, yeah!
-
- Beiträge: 2186
- Registriert: 18.09.2005 15:52:02
- Lizenz eigener Beiträge: GNU Free Documentation License
-
Kontaktdaten:
Re: ssh-Script
Wenn du drüber gegangen bist, sind sie sowieso kaputt.Duff hat geschrieben:wobei ich von Rechner 1 über einen Rechner 2 gehen muss, um auf Rechner 3 zu gelangen.
Hä?Duff hat geschrieben:Ein ssh (von Rechner 2 aus) zu Rechner 3 funktioniert auch ohne Passworteingabe.
...
Ein ssh Rechner 2 "ssh Rechner 3" funktioniert leider nicht.
Und was ist mit ssh PC3 von PC1 aus?
jhr
Desktop: Intel Core2Quad Q8300 2.5GHz, 256GB SSD + 1 TB HDD, 8 GB RAM, Debian Sid, Kernel 3.13
- DerAntiPro
- Beiträge: 123
- Registriert: 05.01.2005 02:40:08
Re: ssh-Script
er muss doch die verbindung über rechner 2 herstellen:jhr-online hat geschrieben:Und was ist mit ssh PC3 von PC1 aus?
was genau ist denn die fehlermeldung beiDuff hat geschrieben:wobei ich von Rechner 1 über einen Rechner 2 gehen muss, um auf Rechner 3 zu gelangen.
Code: Alles auswählen
ssh Rechner 2 "ssh Rechner 3"
mfg
Bei Risiken und Nebenwirkungen fragen Sie bitte Ihren Maintainer oder Supporter!
---
Der, der VORLAS UND LIST ist LINUS TORVALDS.
---
Der, der VORLAS UND LIST ist LINUS TORVALDS.
Re: ssh-Script
Ich denke mit einem ssh Tunnel sollte das funktionieren.Duff hat geschrieben: ist es möglich, dass ich über ein Skript oder einen ssh-Befehl, eine Verbindung von einem Rechner 1 auf einen Rechner 3 bekomme, wobei ich von Rechner 1 über einen Rechner 2 gehen muss, um auf Rechner 3 zu gelangen.
Schau die mal die Option -L von ssh genauer an.
@DerAntiPro: Die Fehlermeldung sieht so aus:
Die Option -L schaue ich mir noch an. Wollte nur schon mal die Fehlermeldung posten.
Code: Alles auswählen
Pseudo-terminal will not be allocated because stdin is not a terminal.
Warning: Permanently added 'Rechner 3' (RSA) to the list of known hosts.
process not attached to terminal
...
Not a terminal
stty: : Not a typewriter
Oh, yeah!
Leider komme ich mit der Option -L auch nicht weiter.
Bei ssh Rechner2 "ssh -L 23:Rechner:23" bekomme ich die Fehlermeldung, dass nur root die Ports weiterleiten darf.
Ich möchte das ganze aber ohne root-Rechte durchführen.
Noch jemand ne Idee?
Bei ssh Rechner2 "ssh -L 23:Rechner:23" bekomme ich die Fehlermeldung, dass nur root die Ports weiterleiten darf.
Code: Alles auswählen
Privileged ports can only be forwarded by root.
Noch jemand ne Idee?
Oh, yeah!
- peschmae
- Beiträge: 4844
- Registriert: 07.01.2003 12:50:33
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: nirgendwo im irgendwo
Das ist halt so. Hat nichts mit ssh zu tun. Services die auf die Ports unter 1024 (oder so ähnlich, auf jeden fall dortrum) lauschen darf auf Unix-Systemen nur root starten.
Sonst könnte ja plötzlich ein User einen Webserver auf Port 80 aufsetzen, wenn da nicht schon vorher einer am laufen war...
MfG Peschmä
Sonst könnte ja plötzlich ein User einen Webserver auf Port 80 aufsetzen, wenn da nicht schon vorher einer am laufen war...
MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy
Hallo
was du suchst ist der -t Schalter fuer ssh. Der erzwingt dass ein pseudo tty allokiert wird auf dem Zielrechner, was wieder ssh braucht um zu starten.
also:
als Beispiel
was du suchst ist der -t Schalter fuer ssh. Der erzwingt dass ein pseudo tty allokiert wird auf dem Zielrechner, was wieder ssh braucht um zu starten.
also:
Code: Alles auswählen
ssh rechner1 -t ssh rechner2 -t ssh user@rechner3
- Savar
- Beiträge: 7174
- Registriert: 30.07.2004 09:28:58
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Berlin
ansonsten machst du es halt so:peschmae hat geschrieben:Das ist halt so. Hat nichts mit ssh zu tun. Services die auf die Ports unter 1024 (oder so ähnlich, auf jeden fall dortrum) lauschen darf auf Unix-Systemen nur root starten.
Sonst könnte ja plötzlich ein User einen Webserver auf Port 80 aufsetzen, wenn da nicht schon vorher einer am laufen war...
MfG Peschmä
Code: Alles auswählen
ssh -f -C -N -L 11000:Rechner3:22 Rechner2
ssh -p 11000 localhost
ansonsten halt die "-t" Option (die ich auch noch nicht in der Form kannte)
- Savar
- Beiträge: 7174
- Registriert: 30.07.2004 09:28:58
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Berlin
Es kommt jetzt darauf an welches SSH du speziell auf SunOS installiert hast.. denn der Rechner2 sollte eigentlich alles nötige können und Rechner3 der muss nur das rudimentäre können.. aber wenn Rechner1 z.B. eine kommerzielle SSH Variante hat (war bei uns so) dann kann die meistens nicht viel.. dann hol dir da auch die OpenSSH Variante...Duff hat geschrieben:Rechner1 --> SunOS
Rechner2 --> Linux
Rechner3 --> HP-UX
Hmm.
erstens, was is das fuer nen SunOS? Ich glaub die OpenSSH lief doch nur auf Solaris 10 ? alles drunter war ned... mein ich zumindest.
Rechner2 auf Rechner3 sollte nicht wirklich ein Problem sein. Hmm, Vielleicht kannst du mittels Tunnel von 1 nach 2 gelangen (siehe Savars Post) ?
Notfalls koenntest du auch hergehen, dich auf Rechner 2 einloggen, dort einen ssh portforward oeffnen auf rechner 3 (das geht mit -R und ner option die erlaubt dass man von aussen auf den geoeffneten Port zugreiffen kann). So koenntest du mit
Rechner3 so erreichen. Nur dann empfehle ich das ganze auf Rechner2 mittels iptables abzusichern...
nur dann kannst du gleich anfangen dich durch die Gegend zu natten mittels iptables.
erstens, was is das fuer nen SunOS? Ich glaub die OpenSSH lief doch nur auf Solaris 10 ? alles drunter war ned... mein ich zumindest.
Rechner2 auf Rechner3 sollte nicht wirklich ein Problem sein. Hmm, Vielleicht kannst du mittels Tunnel von 1 nach 2 gelangen (siehe Savars Post) ?
Notfalls koenntest du auch hergehen, dich auf Rechner 2 einloggen, dort einen ssh portforward oeffnen auf rechner 3 (das geht mit -R und ner option die erlaubt dass man von aussen auf den geoeffneten Port zugreiffen kann). So koenntest du mit
Code: Alles auswählen
ssh -p port rechner2
nur dann kannst du gleich anfangen dich durch die Gegend zu natten mittels iptables.
Es müsste sich um solaris 10 handeln.
Code: Alles auswählen
Usage: ssh [options] host [command]
Options:
-l user Log in using this user name.
-n Redirect input from /dev/null.
-F config Config file (default: ~/.ssh/config).
-A Enable authentication agent forwarding.
-a Disable authentication agent forwarding (default).
-X Enable X11 connection forwarding.
-x Disable X11 connection forwarding (default).
-i file Identity for public key authentication (default: ~/.ssh/identity)
-t Tty; allocate a tty even if command is given.
-T Do not allocate a tty.
-v Verbose; display verbose debugging messages.
Multiple -v increases verbosity.
-V Display version number only.
-q Quiet; don't display any warning messages.
-f Fork into background after authentication.
-e char Set escape character; ``none'' = disable (default: ~).
-c cipher Select encryption algorithm
-m macs Specify MAC algorithms for protocol version 2.
-p port Connect to this port. Server must be on the same port.
-L listen-port:host:port Forward local port to remote address
-R listen-port:host:port Forward remote port to local address
These cause ssh to listen for connections on a port, and
forward them to the other side by connecting to host:port.
-D port Enable dynamic application-level port forwarding.
-C Enable compression.
-N Do not execute a shell or command.
-g Allow remote hosts to connect to forwarded ports.
-1 Force protocol version 1.
-2 Force protocol version 2.
-4 Use IPv4 only.
-6 Use IPv6 only.
-o 'option' Process the option as if it was read from a configuration file.
-s Invoke command (mandatory) as SSH2 subsystem.
-b addr Local IP address.
Oh, yeah!
Hmm,
liefert dir was?
Okay, das sieht sehr nach einem normalen openssh aus. Was ist denn die Fehlermeldung/das Problem?
hast du mal versucht das ganze interaktiv zu testen ?
So wie ich das sehe muss es eigentlich gehen, die Frage die sich stellt ist warum tut's das nicht.
man kann ssh auch mit mehreren -v's Starten und sich von Debug Info erschlagen lassen, vielleicht bringt dich die weiter.
Code: Alles auswählen
ssh -V
Okay, das sieht sehr nach einem normalen openssh aus. Was ist denn die Fehlermeldung/das Problem?
hast du mal versucht das ganze interaktiv zu testen ?
So wie ich das sehe muss es eigentlich gehen, die Frage die sich stellt ist warum tut's das nicht.
man kann ssh auch mit mehreren -v's Starten und sich von Debug Info erschlagen lassen, vielleicht bringt dich die weiter.
Danke (hätte ich ja auch mal drauf kommen können )
Naja, sieht so weit ganz gut aus:
So wie es aussieht, blockiert eine bereits andere, aufgebaute Verbindung das ganze.
Naja, sieht so weit ganz gut aus:
Code: Alles auswählen
...
debug1: Authentication succeeded (publickey)
debug1: Connections to local port 11000 forwarded to remote address Rechner3:22
debug1: Local forwarding listening on ::1 port 11000.
bind: Cannot assign requested address
debug1: Local forwarding listening on 127.0.0.1 port 11000.
bind: Address already in use
channel_setup_fwd_listener: cannot listen to port: 11000
Could not request local forwarding.
debug1: Entering interactive session.
Oh, yeah!
Der port 11000 is vielleicht nich so super gewaehlt, probiers mal mit 61234 (oder einem anderen port... 11111, such dir was aus).
Und dann wuerde mich nochma interessieren was als Fehlermeldung bei
rauskommt.
Und dann wuerde mich nochma interessieren was als Fehlermeldung bei
Code: Alles auswählen
ssh -vvt rechner1 ssh -vvt rechner2 ssh -vvt rechner3
Mmh..komischerweise funktioniert das hier
jetzt. Ich muss werde ich am Anfang nach einem Passwort gefragt, welches das Passwort vom Rechner1 ist. Aber auf diesem befinde ich mich ja schon.
Was muss ich denn dann noch im Verzeichnis .ssh eintragen?
Etwas den öffentlichen Key des Rechners1 in die Datei known_host (auf Rechner1)?
Code: Alles auswählen
ssh -vvt rechner1 ssh -vvt rechner2 ssh -vvt rechner3
Was muss ich denn dann noch im Verzeichnis .ssh eintragen?
Etwas den öffentlichen Key des Rechners1 in die Datei known_host (auf Rechner1)?
Oh, yeah!
war glaub ich mein Fehler, hatte die Zeile weiter oben vermurkst sorry.
Hmm, es kann sein dass du dir deinen Agent durch die gegend forwarden lassen musst mit -A
aber wir sind ja schon einen guten Schritt weiter wuerde ich sagen.
haette allerdings erwartet dass du das passwort von rechner3 eingeben musst, nicht das von Rechner1. oder ist passwort von rechner1 == passwort von rechner3 ?
Hmm, es kann sein dass du dir deinen Agent durch die gegend forwarden lassen musst mit -A
aber wir sind ja schon einen guten Schritt weiter wuerde ich sagen.
haette allerdings erwartet dass du das passwort von rechner3 eingeben musst, nicht das von Rechner1. oder ist passwort von rechner1 == passwort von rechner3 ?
stimmt, die Passwörter waren auf beiden Maschinen die selben (welche ein Zufall). Habe sie mal geändert.
So, nun muss ich aber definitiv das Passwort von Rechner1 eingeben.
So, nun muss ich aber definitiv das Passwort von Rechner1 eingeben.
Habe ich nicht hinbekommen.Hmm, es kann sein dass du dir deinen Agent durch die gegend forwarden lassen musst mit -A
Oh, yeah!
So, es hat nun endlich funktioniert.
Musste "nur" noch den id_rsa.pub (vom Rechner1) in die Datei authorized_keys (auch vom Rechner1) eingeben und schon wurde ich nicht mehr nach dem Passwort gefragt. Die Verbindung zum Rechner3 funktioniert auch einwandfrei.
Ein Ausloggen auf dem Rechner3 sieht allerdings immer etwas lustig aus:
..wobei ich natürlich trotzdem noch auf dem Rechner1 angemeldet bin.
Nochmals Danke an alle
Musste "nur" noch den id_rsa.pub (vom Rechner1) in die Datei authorized_keys (auch vom Rechner1) eingeben und schon wurde ich nicht mehr nach dem Passwort gefragt. Die Verbindung zum Rechner3 funktioniert auch einwandfrei.
Ein Ausloggen auf dem Rechner3 sieht allerdings immer etwas lustig aus:
Code: Alles auswählen
logout
Connection to Rechner3 closed.
Connection to Rechner2 closed.
Connection to Rechner1 closed.
Nochmals Danke an alle
Oh, yeah!