Scp sırasında kullanıcıyı değiştirme


16

Linux makineleri arasında dosya kopyalamam gerekiyor. Login ( myuser) için kullandığım kullanıcının dosyaya erişebildiğinden farklı.

Sadece sshmakineye gidersem, kullanıcıyı kullanarak değiştirebilirim sudo su someuser, bir şekilde yapabilir miyim scp?

WinSCP kullanırken, SCP / Shell'i yapılandırarak yapmayı başardım, bu yüzden saf kabuk yoluyla yapmanın benzer bir yolu olması gerektiğine inanıyorum.


Kafam karıştı. Neden dosyayı işleyen kullanıcı olarak giriş yapmıyorsunuz?
rahmu

Çünkü diğer kullanıcıyı kullanarak giriş yapmak imkansız.
Tarlog

Böyle bir şeyle bağlantı kurmaya sshve yürütmeye ne dersiniz ? scpssh myuser@host "sudo scp ..."
rahmu

Belki buradaki cevap böyle bir durumda işe yarayabilir? unix.stackexchange.com/questions/43094/… @Tarlog Bu, uzak makinenin kendisinde, bazı kullanıcı @ uzaktan ssh yapabileceğinizi varsayar
Bernhard

Yanıtlar:


9

Ssh yapabileceğiniz kullanıcının hedef kullanıcıya sudo su için bir parola gerektirmediğini varsayarsak, bunu deneyebilirsiniz:

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

... Dikkat, hala sadece targetuserSSH üzerinden scp / sftp / rsync'e izin verecek şekilde yapılandırmanın ve kimlik doğrulama için bir RSA anahtar çifti kullanmanın çok daha iyi bir seçenek olmadığından emin değilim.


1
ya da tar -cvf - * | ssh user@host "sudo -u targetuser tar -C /targetdir -xf -"bir grup dosya için
Matt

Ayrıca gerçek ve ben olmadığını tartışabiliriz varsayalım -zveya -jiki tarafında bağlantı hızı ve bilgisayar donanımı bağlı yararlıdır ...
shadur

3

Diğer kullanıcının ( someuser) kimlik bilgilerini biliyorsanız, bunu scparamanızda belirtebilirsiniz .

Sayfadan man scp:

Dosya adları, dosyanın o ana makineye / ana bilgisayardan kopyalanacağını belirten bir kullanıcı ve ana bilgisayar belirtimi içerebilir. Yerel dosya adları, scp'nin ana bilgisayar belirteçleri olarak ':' içeren dosya adlarını işlemesini önlemek için mutlak veya göreli yol adları kullanılarak açık hale getirilebilir. İki uzak ana bilgisayar arasında kopyalamaya da izin verilir.

Kullanılan sözdizimi şöyledir:

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

Misal

Dosyayı kopyalamak istediğiniz /home/foo/bardan host1kullanıcıyı kullanarak, localhost'a someuserburada komut var:

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

Kimlik doğrulaması istenir (şifre, anahtarlar, ...).


1
Diğer kullanıcı olarak giriş yapmak imkansızdır.
Tarlog

Sonra RSA anahtarları ile bir scp / rsync salt oturum açın.
Shadur

1
Diğer kullanıcıyı herhangi bir giriş kullanarak kullanmak imkansızdır. Diğer ssh / scp için zaten RSA anahtarları kullanmak.
Tarlog

1

Muhtemelen mümkün , ama bunun için çok garip bir yol olduğunu söyleyebilirim.

İlk önerim bu kullanıcı olarak giriş yapmak. Bu kullanıcının şifresine sahip olmasanız bile, kendi genel ssh anahtarınızı yetkili_anahtarlara ekleyebilir ve daha sonra rahmu'nun gösterdiği gibi anahtarlarını kullanarak scp kullanabilirsiniz.

Bu mümkün değilse, ikinci önerim ssh, sudo ile kullanıcıya giriş yapmak ve kopyalamak istediğiniz dosyaların bir tarfını oluşturmak ve kendi kullanıcınızın okuyabileceği bir yere koymaktır. Sonra o tarlayı aşağı kaydır.


Diğer kullanıcıya giriş yapmak imkansız. Evet, ikinci öneriyi kendim anladım. Kolay bir yol arıyor :)
Tarlog

O zaman gcb tarafından gönderilen link hizmete girmelidir. En azından bunu bir kereden fazla yapacaksan. Veya, elbette, kendi kullanıcısına dosyaya erişim vermek için dosyaya erişim haklarını değiştirebilirsiniz.
Jenny D

Eh, farklı kullanıcılar tarafından kullanılacak bir komut dosyası (tabii ki birden çok kez kullanılacak) oluşturmaya çalışıyorum. Bu yüzden bana erişim izni vermek gerçekten yardımcı olmaz. 'Sudo su otheruser' komutunu çalıştırabilen herkes komut dosyasını çalıştırabilmelidir.
Tarlog

Anladım. Ben gcb bağlantı ile başlamak istiyorum, o zaman komut dosyası sonrası sorunları varsa ve bazı yardım crowdsource olup olmadığını görmek.
Jenny D


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.