# durch ssh Session datein kopieren

## caraboides

Hallo wie kann ich ein File durch ssh kopieren wenn ich schon angmeldet bin?

Das File ist auf dem Server und ich will es auf den Client bekommen. Ich weiss das ich scp nehmen kann ,aber dazu muss dan auf dem Client ja auch sshd laufen.

Ich will wenn ich schon eine session zum Server aufgebaut habe, und dort in der Shell bin das File kopieren ohne mir erst die IP vom Client zu ziehen.

Und wie fürde es gehen, wenn ich z.B. 4 ssh sessions ueber 4 server laufen habe und das File soll zum ausgangssrechner uber alle "relays".

Danke fuer eure Hilfe.

CU

Christian

----------

## xces

 *caraboides wrote:*   

> Ich weiss das ich scp nehmen kann ,aber dazu muss dan auf dem Client ja auch sshd laufen.

 

Nein, muss er nicht. Wie kommst du auf diese Idee? Der SSHd muß auf dem Rechner laufen, auf den oder von dem du etwas kopieren willst.

Oder muss bei dir etwa auch ein FTP-Server laufen, wenn du etwas via FTP-Herunterladen willst? Oder muss ein Webserver bei dir laufen, wenn du im Web surfen willst?

----------

## beejay

 *caraboides wrote:*   

> Hallo wie kann ich ein File durch ssh kopieren wenn ich schon angmeldet bin?
> 
> Das File ist auf dem Server und ich will es auf den Client bekommen. Ich weiss das ich scp nehmen kann ,aber dazu muss dan auf dem Client ja auch sshd laufen.

 So? Hier funktioniert es auch prima ohne lokalen sshd.

```

/home/benni # /etc/init.d/sshd stop                                                                                (ok)

 * Stopping sshd ...                                                                                              [ ok ]

/home/benni # exit                                                                                                 (ok)

~ % scp rootie:~/catalyst.conf .                                                                                   (ok)

catalyst.conf                                                                         100%  222     0.2KB/s   00:00    

~ %                                                                                                                (ok)

```

----------

## caraboides

Danke fuer deine Sinnfreie Äuserung:

Ich bin per ssh auf dem Server, und will dann was auf den Client schicken:

```
ich@server:# scp test.dat ich@client:/home/ich
```

```

christian@flox ~ $ su

Password: 

flox christian # /etc/init.d/sshd stop

 * ERROR:  "sshd" has not yet been started.

flox christian # exit                 

christian@flox ~ $ rm .ssh/

authorize_keys  id_rsa          known_hosts     

config          id_rsa.pub      

christian@flox ~ $ rm .ssh/config 

christian@flox ~ $ ssh christian@lastoknow.de

Password: 

christian@hennig:~$ w

 20:20:54 up 242 days,  2:04,  1 user,  load average: 0.42, 0.56, 0.68

USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT

christia pts/2    p548bd0d9.dip.t- 20:20    0.00s  0.00s  0.00s w

christian@hennig:~$ scp 

.bash_history  .forward       Mail/          mbox

.bash_profile  .mc/           a.out          noce

.bashrc        .ssh/          index.html     stud/

.cedit/        .viminfo       logo.jpg       

christian@hennig:~$ scp logo.jpg christian@p548bd0d9.dip.t-dialin.net: /home/christian/

```

Ich habe dann mal 2 min gewartet und es passierte nix

Und dazu muss ja wohl auf dem Client sshd laufen, ich bin doch nich bloede, sonst koennte ich ja per scp auch auf nen Windows rechner was kopieren. 

Aber zurück zu meiner frage wie kann ich durch die Schon offene Session ein File kopieren? (siehe  ganz oben)

----------

## Kugelfang

 *Quote:*   

> Danke fuer deine Sinnfreie ï¿½userung:

 

Tse... Um Hilfe bitten, und dann unverschÃ¤mt werden... naja

Falls ich dich richtig verstanden habe, willst du von $server nach $client eine $datei kopieren. Also:

$client # scp $server:$datei ./

In den manpages zu stÃ¶bern hÃ¤tte dich genauso weit gebracht.

Was das kopieren durch ein und den selben ssh tunnel angeht, so starte deine ssh sessions einfach mit dem Paramter -M

Viel Erfolg...

----------

## caraboides

ok in die man pages hatte ich geschaut nur unter:

```
     -M      Places the ssh client into ``master'' mode for connection shar-

             ing.  Refer to the description of ControlMaster in ssh_config(5)

             for details.

```

Nicht das gesuchte verstanden, aber danek das wars zum ersten. 

Geht es damit auch durch gschachteltete Sessions? ( wohl eher nich)

----------

## theche

wennde auf den rechner zugereifen kannst sicherlich. wenn nicht kannst du dir sicher nen ssh tunnel baun.

----------

## Raimund

zssh

----------

## chilla

irgendwie verstehe ich das ganze noch nich  :Smile: 

 *Quote:*   

> Hallo wie kann ich ein File durch ssh kopieren wenn ich schon angmeldet bin?
> 
> Das File ist auf dem Server und ich will es auf den Client bekommen. Ich weiss das ich scp nehmen kann ,aber dazu muss dan auf dem Client ja auch sshd laufen.
> 
> Ich will wenn ich schon eine session zum Server aufgebaut habe, und dort in der Shell bin das File kopieren ohne mir erst die IP vom Client zu ziehen. 

 

dann kam 

 *Quote:*   

> Falls ich dich richtig verstanden habe, willst du von $server nach $client eine $datei kopieren. Also:
> 
> $client # scp $server:$datei ./ 

 

aber irgendwie verstehe ich nicht recht, wie das gehen soll. Er sagte ja, er wolle die datei kopieren, _wenn er schon am server angemeldet ist_. Wenn er aber schon am server angemeldet ist, ist das was du geschreiben hast ja keine lösung: "$client # scp $server:$datei ./", denn die geht ja davon aus, dass man gerade auf dem klient is. 

Daher stelle ich die Frage zu meinem Verständnis nochmal: Es ist nicht möglich, eine Datei per ssh auf einen anderen Rechner zu schieben, wenn dieser garkeinen ssh am laufen hat, oder? 

Ich vermute zumindest nicht, denn irgendwie muss man ja für den Filetransfer eine Verbindung aufbauen. Wenn auf dem 2. Rechner jedoch kein ssh läuft, kann man auch keine Verbindung aufbauen.

Man müsste also die Datei durch die bereits bestehende Verbindung durchtunneln... is das möglich? Hört sich zumindest für mich als Laien nicht so an  :Smile: 

Hoffe auf die Erleuchtung von euch  :Smile: 

----------

## sschlueter

Um das nochmal klarzustellen:

Die Sache mit dem Parameter -M ist nicht das, was bei OP sucht. Eine zweite TCP-Verbindung würde ihn wohl nicht stören, aber er will diese Verbindung vom Server aus zum Client aufbauen, obwohl beim Client nichts lauscht.

Es ist richtig, daß scp sich mit einem Server verbinden muß, kann also nicht einfach "nur so" eine bestehende SSH-Verbindung nutzen. 

Für mich hat sich da auch nie die Notwendigkeit dazu ergeben.

Denn immerhin kann man den Parameter -R verwenden. Damit kann man "rückwärts" eine getunnelte TCP-Verbindung zum Client aufbauen, etwa zu dem auf dem Client laufenden SSH-Server. (Genauer gesagt funktioniert das für alle Protokolle, die nur eine einzelne TCP-Verbindung mit festem Zielport für einen Dateitransfer benötigen, also ist es unglücklicherweise gerade bei FTP nicht so ohne weiteres möglich. Aber WebDAV würde genauso unproblematisch funktionieren wie SSH. Da die gesamte verbindung ja über SSH gesichert ist, kann man für den Dateitransfer sogar netcat benutzen. Ich gehe im folgenden der Einfachheit halber dennoch von SSH aus.)

Das klappt in allen Fällen, also auch dann, wenn

* der Client gar keine öffentliche IP Adresse hat. Man muß zur Benutzung des Tunnels keine direkte Verbindung zur IP des Clients aufbauen, sondern eine Verbindung zu localhost.

* der Client zwar eine öffentliche IP-Adresse hat, diese aber dynamisch ist. Man muß diese dynamische IP zur Benutzung des Tunnels nicht wissen.

* der Client zwar eine öffentliche IP hat, die man auch weiß, aber den Port 22 trotzdem nicht öffentlich freigeben will. Der Port 22 muß zur Benutzung des Tunnels nicht von außen erreichbar sein.

So etwas läßt sich auch problemlos über mehrere geschachtelte SSH-Sessions nutzen. Man bekommt allerdings schnell einen Knoten im Gehirn, weil man darauf achten muß, daß die Zielports der Tunnel und die Listening-Ports jeweils zusammenpassen.

----------

