การเปลี่ยนผู้ใช้ในขณะที่ SCP


16

ฉันต้องการคัดลอกไฟล์ระหว่างเครื่อง Linux ปัญหาที่ผู้ใช้ฉันใช้เพื่อเข้าสู่ระบบ ( myuser) แตกต่างจากผู้ใช้ที่สามารถเข้าถึงไฟล์ได้

ถ้าฉันเพียงแค่sshไปที่เครื่องฉันสามารถสลับผู้ใช้โดยใช้sudo su someuserฉันจะทำมันอย่างใดในขณะที่scp?

ในขณะที่ใช้ WinSCP ฉันสามารถทำได้โดยการกำหนดค่า SCP / Shell ดังนั้นฉันเชื่อว่าต้องมีวิธีที่คล้ายกันในการทำมันผ่านเปลือกบริสุทธิ์


ฉันสับสน ทำไมคุณไม่เข้าสู่ระบบในฐานะผู้ใช้ที่จัดการไฟล์?
rahmu

เพราะมันเป็นไปไม่ได้ที่จะเข้าสู่ระบบโดยใช้ผู้ใช้คนอื่น
Tarlog

วิธีการเกี่ยวกับการเชื่อมต่อกับsshและดำเนินการscpบางสิ่งบางอย่างเช่นนี้ssh myuser@host "sudo scp ..."?
rahmu

บางทีคำตอบที่นี่สามารถทำงานได้ในสถานการณ์เช่นนี้? unix.stackexchange.com/questions/43094/… @Tarlog สิ่งนี้อนุมานได้ว่าบนเครื่องระยะไกลคุณสามารถ ssh someuser @ remote
Bernhard

คำตอบ:


9

สมมติว่าผู้ใช้ที่คุณสามารถ ssh ไปไม่จำเป็นต้องใช้รหัสผ่านเพื่อ sudo su เป็นผู้ใช้เป้าหมายคุณสามารถลองนี้:

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

... ใจฉันยังไม่มั่นใจว่าเพียงกำหนดค่าtargetuserเพื่ออนุญาตเฉพาะ scp / sftp / rsync ผ่าน SSH และการใช้คีย์แพร์ RSA สำหรับการตรวจสอบสิทธิ์ไม่ใช่ตัวเลือกที่ดีกว่ามาก


1
หรือtar -cvf - * | ssh user@host "sudo -u targetuser tar -C /targetdir -xf -"สำหรับกลุ่มไฟล์
Matt

เป็นจริงเช่นกันและฉันคิดว่าเราสามารถอภิปรายได้ว่ามีประโยชน์-zหรือไม่-jขึ้นอยู่กับความเร็วในการเชื่อมต่อและฮาร์ดแวร์คอมพิวเตอร์ทั้งสองด้าน ...
Shadur

3

หากคุณรู้จักข้อมูลประจำตัวของผู้ใช้รายอื่น ( someuser) คุณสามารถระบุได้ในการscpโทรของคุณ

จากman scpหน้า:

ชื่อไฟล์อาจมีข้อมูลผู้ใช้และโฮสต์เพื่อระบุว่าไฟล์นั้นจะถูกคัดลอกไปยัง / จากโฮสต์นั้น ชื่อไฟล์โลคัลสามารถทำให้ชัดเจนโดยใช้ชื่อพา ธ สัมบูรณ์หรือสัมพัทธ์เพื่อหลีกเลี่ยงการใช้ชื่อไฟล์ที่มี ':' เป็นตัวระบุโฮสต์ อนุญาตให้คัดลอกระหว่างโฮสต์ระยะไกลสองเครื่อง

นี่คือไวยากรณ์ที่ใช้:

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

ตัวอย่าง

คุณต้องการคัดลอกไฟล์ /home/foo/barจากhost1การ localhost ของคุณโดยใช้ผู้ใช้someuserที่นี่เป็นคำสั่ง:

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

คุณจะถูกขอให้ตรวจสอบ (รหัสผ่านกุญแจ ... )


1
เป็นไปไม่ได้ที่จะเข้าสู่ระบบในฐานะผู้ใช้รายอื่น
Tarlog

จากนั้นสร้างการเข้าสู่ระบบ scp / rsync เท่านั้นโดยใช้คีย์ RSA
Shadur

1
เป็นไปไม่ได้ที่จะใช้ผู้ใช้รายอื่นโดยใช้การเข้าสู่ระบบทุกประเภท นอกจากนั้นฉันก็ใช้ RSA keys สำหรับ ssh / scp แล้ว
Tarlog

1

มันอาจจะเป็น เป็นไปได้แต่ฉันว่ามันเป็นวิธีที่น่าอึดอัดใจมาก

ข้อเสนอแนะแรกของฉันคือการเข้าสู่ระบบในฐานะผู้ใช้ที่ แม้ว่าคุณจะไม่มีรหัสผ่านของผู้ใช้นั้นคุณสามารถเพิ่มกุญแจสาธารณะของคุณเองไปที่ authorized_keys ของพวกเขาแล้ว scp ใช้รหัสของพวกเขาดังที่ rahmu แสดง

หากเป็นไปไม่ได้ข้อเสนอแนะที่สองของฉันคือการเข้าสู่ระบบโดย ssh, sudo กับผู้ใช้และสร้างไฟล์ tarfile ที่คุณต้องการคัดลอกและวางไว้ที่ใดที่ผู้ใช้ของคุณสามารถอ่านได้ จากนั้นบันทึกลงบนพื้น


เป็นไปไม่ได้ที่จะเข้าสู่ระบบผู้ใช้รายอื่น ใช่ฉันคิดคำแนะนำที่สองด้วยตัวเอง กำลังมองหาวิธีที่ง่าย :)
Tarlog

ลิงก์ที่โพสต์โดย gcb ควรเป็นบริการแล้ว อย่างน้อยถ้าคุณกำลังจะทำสิ่งนี้มากกว่าหนึ่งครั้ง หรือแน่นอนคุณสามารถเปลี่ยนสิทธิ์การเข้าถึงเป็นไฟล์เพื่อให้ผู้ใช้ของคุณสามารถเข้าถึงได้
เจนนี่ D

ฉันกำลังพยายามสร้างสคริปต์ (ซึ่งจะมีการใช้งานหลายครั้ง) ซึ่งจะถูกใช้โดยผู้ใช้ที่แตกต่างกัน ดังนั้นการอนุญาตให้เข้าถึงฉันจะไม่ช่วยได้จริงๆ ทุกคนที่สามารถ 'sudo su otheruser' ควรสามารถเรียกใช้สคริปต์ได้
Tarlog

Gotcha ฉันจะเริ่มด้วยลิงก์จาก gcb ถ้าคุณมีปัญหากับสคริปต์โพสต์และดูว่าเราสามารถ crowdsource ความช่วยเหลือ
เจนนี่ D


0

ฉันพยายามยกตัวอย่างในบทความต่อไปนี้ แนวคิดพื้นฐานไม่ได้ใช้ scp แต่ใช้ dd และ ssh ด้วยสวิตช์ผู้ใช้ sudo ดู:

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


1
จะเป็นการดีกว่าถ้าให้รายละเอียดเพิ่มเติมที่นี่หากลิงก์ไม่ถูกต้องคำตอบของคุณจะมีมูลค่าน้อย
Anthon
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.