Muszę skopiować plik między maszynami z systemem Linux. Problem, którego używa użytkownik do logowania ( myuser
), różni się od użytkownika, który może uzyskać dostęp do pliku.
Jeśli tylko przejdę ssh
do komputera, mogę zmienić użytkownika za pomocą sudo su someuser
, czy mogę to zrobić w jakiś sposób scp
?
Podczas korzystania z WinSCP udało mi się to zrobić, konfigurując SCP / Shell, więc uważam, że musi istnieć podobny sposób, aby to zrobić za pomocą czystej powłoki.
ssh
i wykonywaniescp
, coś takiegossh myuser@host "sudo scp ..."
:?Odpowiedzi:
Zakładając, że użytkownik, do którego MOŻESZ ssh nie potrzebuje hasła do sudo su na docelowego użytkownika, możesz spróbować:
... Uwaga, wciąż nie jestem przekonany, że samo skonfigurowanie,
targetuser
aby zezwalać tylko na scp / sftp / rsync przez SSH i używanie pary kluczy RSA do uwierzytelniania nie jest lepszą opcją.źródło
tar -cvf - * | ssh user@host "sudo -u targetuser tar -C /targetdir -xf -"
kilka plików-z
czy-j
są przydatne w zależności od szybkości łącza i sprzętu komputerowego po obu stronach ...Jeśli znasz dane uwierzytelniające drugiego użytkownika (
someuser
), możesz po prostu podać je podczasscp
rozmowy.Ze
man scp
strony:Oto zastosowana składnia:
Przykład
Chcesz skopiować plik
/home/foo/bar
zhost1
lokalnego hosta, używając użytkownikasomeuser
, oto polecenie:Zostaniesz poproszony o uwierzytelnienie (hasło, klucze, ...).
źródło
Prawdopodobnie jest to możliwe , ale powiedziałbym, że jest to bardzo niewygodny sposób.
Moją pierwszą sugestią jest zalogowanie się jako ten użytkownik. Nawet jeśli nie masz hasła tego użytkownika, możesz dodać własny publiczny klucz ssh do jego autoryzowanych_kluczy, a następnie scp za pomocą ich klucza, jak pokazuje rahmu.
Jeśli nie jest to możliwe, moją drugą sugestią jest zalogowanie się przez ssh, sudo do użytkownika i utworzenie pliku tar z plikami, które chcesz skopiować, i umieszczenie go w miejscu, które twój użytkownik może przeczytać. Następnie przeszukaj plik tar.
źródło
użyj
-S
nascp
komendzienp. /superuser/87597/how-to-perform-scp-as-a-sudo-user
pozwoli ci wykonać skrypt, podobnie jak sądzę, że robiłeś z przypadkiem użycia winscp.
źródło
Próbowałem podać kilka przykładów w następnym artykule. Podstawową ideą nie jest użycie scp, ale użycie dd i ssh z przełącznikiem użytkownika sudo. Popatrz:
http://hmmss.wordpress.com/2014/07/02/ssh-and-scp-with-another-user
źródło