Benutzerwechsel während scp

16

Ich muss die Datei zwischen Linux-Rechnern kopieren. Das Problem des Benutzers, mit dem ich mich anmelde ( myuser), unterscheidet sich von dem Benutzer, der auf die Datei zugreifen kann.

Wenn ich nur sshzur Maschine sudo su someusergehe, kann ich den Benutzer über wechseln . Kann ich das irgendwie währenddessen tun scp?

Während der Verwendung von WinSCP habe ich es geschafft, indem ich den SCP / die Shell konfiguriert habe. Daher glaube ich, dass es eine ähnliche Möglichkeit geben muss, dies über die reine Shell zu tun.

Tarlog
quelle
Ich bin verwirrt. Warum melden Sie sich nicht als der Benutzer an, der die Datei bearbeitet?
Rahmu
Weil es unmöglich ist, sich mit dem anderen Benutzer anzumelden.
Tarlog
Wie wäre es mit Verbinden sshund Ausführen scp, so etwas wie ssh myuser@host "sudo scp ...":?
Rahmu
Vielleicht kann die Antwort hier in einer solchen Situation funktionieren? unix.stackexchange.com/questions/43094/… @Tarlog Dies setzt voraus, dass Sie auf dem Remotecomputer someuser @ remote
Bernhard

Antworten:

9

Angenommen, der Benutzer, für den Sie ssh verwenden können, benötigt kein Kennwort, um su in den Zielbenutzer einzugeben, können Sie Folgendes versuchen:

dd if=myfile | ssh some.host "sudo -u targetuser dd of=myfile" 

Ich bin immer noch nicht davon überzeugt, dass targetuseres nicht viel besser ist , einfach nur scp / sftp / rsync über SSH zuzulassen und ein RSA-Schlüsselpaar für die Authentifizierung zu verwenden.

Shadur
quelle
1
oder tar -cvf - * | ssh user@host "sudo -u targetuser tar -C /targetdir -xf -"für ein paar Dateien
Matt
Auch wahr, und ich nehme an, wir können diskutieren, ob -zoder -jje nach Verbindungsgeschwindigkeit und Computerhardware auf beiden Seiten nützlich sind ...
Shadur
3

Wenn Sie die Anmeldeinformationen für den anderen Benutzer ( someuser) kennen, können Sie sie einfach bei Ihrem scpAnruf angeben .

Von der man scpSeite:

Dateinamen können eine Benutzer- und Hostspezifikation enthalten, die angibt, dass die Datei auf diesen / von diesem Host kopiert werden soll. Lokale Dateinamen können mit absoluten oder relativen Pfadnamen explizit angegeben werden, um zu vermeiden, dass SCP Dateinamen, die ':' enthalten, als Host-Bezeichner behandelt. Kopien zwischen zwei Remote-Hosts sind ebenfalls zulässig.

Hier ist die verwendete Syntax:

[[user@]host:]/path/to/file

Beispiel

Sie möchten die Datei mit user /home/foo/barvon host1auf Ihren localhost kopieren. Führen Sie dazu someuserden folgenden Befehl aus:

scp someuser@host1:/home/foo/bar .

Sie werden zur Authentifizierung aufgefordert (Passwort, Schlüssel, ...).

rahmu
quelle
1
Es ist nicht möglich, sich als anderer Benutzer anzumelden.
Tarlog
Richten Sie dann mit RSA-Schlüsseln eine Nur-scp / rsync-Anmeldung ein.
Shadur
1
Es ist unmöglich, den anderen Benutzer mit einem Login zu benutzen. Ansonsten benutze ich schon RSA-Schlüssel für ssh / scp.
Tarlog
1

Es ist wahrscheinlich möglich , aber ich würde sagen, es ist ein sehr umständlicher Weg, dies zu tun.

Mein erster Vorschlag ist, sich als dieser Benutzer anzumelden. Selbst wenn Sie nicht über das Kennwort dieses Benutzers verfügen, können Sie dessen authorized_keys Ihren eigenen öffentlichen SSH-Schlüssel hinzufügen und dann mit dessen Schlüssel scp, wie Rahmu zeigt.

Wenn das nicht möglich ist, ist mein zweiter Vorschlag, sich per ssh und sudo beim Benutzer anzumelden und eine Tarfile der zu kopierenden Dateien zu erstellen und sie an einer Stelle abzulegen, die Ihr eigener Benutzer lesen kann. Dann scp runter diese Tarfile.

Jenny D
quelle
Es ist nicht möglich, den anderen Benutzer anzumelden. Ja, ich habe den zweiten Vorschlag selbst herausgefunden. Auf der Suche nach einem einfachen Weg :)
Tarlog
Der von gcb gepostete Link sollte dann von Nutzen sein. Zumindest, wenn Sie dies mehr als einmal tun werden. Sie können natürlich auch die Zugriffsrechte für die Datei ändern, um Ihrem eigenen Benutzer Zugriff darauf zu gewähren.
Jenny D
Nun, ich versuche ein Skript zu erstellen (das natürlich mehrmals verwendet wird), das von verschiedenen Benutzern verwendet wird. Es wird also nicht wirklich helfen, mir den Zugang zu gewähren. Jeder, der "sudo su otheruser" kann, sollte das Skript ausführen können.
Tarlog
Erwischt. Ich würde mit dem Link von gcb beginnen. Wenn du dann Probleme mit dem Skript hast, poste es und schau, ob wir etwas Hilfe über Crowdsource sammeln können.
Jenny D
0

Ich habe versucht, im folgenden Artikel einige Beispiele zu nennen. Die Grundidee ist nicht scp zu verwenden, sondern dd und ssh mit sudo user switch. Aussehen:

http://hmmss.wordpress.com/2014/07/02/ssh-and-scp-with-another-user

Gokhan Demir
quelle
1
Es ist besser, hier mehr Details anzugeben, wenn der Link ungültig wird und Ihre Antwort keinen Wert mehr hat.
Anthon