คัดลอก SCP ไป ssh ไม่ทำงาน - ข้อผิดพลาดถูกปฏิเสธสิทธิ์ได้ไหม


83

มันทำให้ฉันบ้า! ฉันต้องการโอนไฟล์ง่าย ๆ หนึ่งไฟล์จากแล็ปท็อปไปยังเซิร์ฟเวอร์

ฉันใช้ Ubuntu ทั้งสองเครื่อง

ดังนั้นฉันมี:

-rwxr-xr-x 1 sandro    414622 2011-10-14 23:42 sandrophoto-html.tar.gz

และฉันกำลังส่งโดยใช้:

sudo scp -P XXXX sandrophoto-html.tar.gz usern@server.local:/media/xx/xx/xx

และฉันได้รับ: scp: /media/xx/xx/xx/sandrophoto-html.tar.gz: Permission denied

ป.ล. ฉันอาจกำลังทำสิ่งนี้ด้วยวิธีอื่น - ฉันต้องการส่งไฟล์ tar.gz ที่อยู่บนเดสก์ท็อปของฉันไปยังเซิร์ฟเวอร์ระยะไกลในโฟลเดอร์ / media / yadayda


2
ในกรณีของฉันมันเป็นเหตุผลด้านความปลอดภัยที่ได้รับฉันต้อง chmod ไดเรกทอรีเพื่อให้ผู้ใช้ระยะไกลสามารถเขียนไฟล์ (ฉัน chmod 777 ไดเรกทอรี - แต่มันเป็นห้องปฏิบัติการภายใน)
ilansch

คำตอบ:


95

คุณมีสิ่งต่าง ๆ ตามลำดับที่ถูกต้องจากสิ่งที่ฉันเข้าใจวิธีทั่วไปที่ scp ทำคือ:

scp sourceuser@sourcehost:/path/to/source/file destinationuser@destinationhost:/path/to/destination/

ตัดสินโดยคำถามของคุณคุณมีไฟล์ท้องถิ่นที่คุณต้องการส่งไปยังเซิร์ฟเวอร์ปลายทาง ดังนั้นคุณมีไวยากรณ์ที่ถูกต้องซึ่งเป็นสิ่งที่ดี!

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

หากปัญหาคือปลายทางที่ผู้ใช้ไม่สามารถเข้าถึงตำแหน่งนั้นโดยไม่ต้อง sudo ย้ายไฟล์ไปยังโฟลเดอร์บ้านของปลายทางของผู้ใช้แล้ว sudo mv ไฟล์จากเปลือกบนเซิร์ฟเวอร์อื่นเพื่อวางไว้ในตำแหน่งที่ถูกต้อง


9
ขอขอบคุณฉันต้องเพิ่มสิทธิ์ในการเขียนไปยังไดเรกทอรีปลายทาง
PiKey

@PiKey นี่ควรเป็นคำตอบ
Code-Guru

39

สวัสดีมีปัญหาข้อผิดพลาดการอนุญาตเดียวกันนี้แก้ไขได้ด้วยวิธีนี้

ตรวจสอบให้แน่ใจว่าไดเรกทอรีที่คุณกำลังคัดลอกไป192.168.0.4เป็นของชื่อผู้ใช้

chown username downloads

บนเครื่องท้องถิ่นของคุณแล้วทำ

sudo scp filename.zip username@192.168.0.4:/etc/Myfiles/downloads

ไชโย


ขอบคุณมีสิทธิ์โดยเฉพาะที่นี่ฉันต้องใช้chmodในโฟลเดอร์ปลายทางที่เซิร์ฟเวอร์ระยะไกล
Aquarius Power

26

Permisssion Denied หมายความว่าคุณไม่ใช่รากของเซิร์ฟเวอร์ คุณแค่ถือบัญชีที่นั่น ดังนั้นในกรณีนี้คุณต้องทำสิ่งนี้:

sudo scp -r /path2yourFolder/ username@server_Ip:/home/username

สิ่งนี้จะคัดลอกไปยังไดเรกทอรีบ้านของคุณบนเซิร์ฟเวอร์

สิ่งนี้จะได้ผล:

scp -r /path2yourFolder/ username@server_Ip:~/

2
ช่วยชีวิต! : ~ / ทำเพื่อฉัน
trdavidson

~/เป็นวิธีที่แน่นอน-rสำหรับการทำซ้ำไดเรกทอรีทั้งหมดซ้ำ
Noam Manos

9

ข้อผิดพลาดนี้เกิดขึ้นกับฉันเมื่อไฟล์มีอยู่แล้วในตำแหน่งเป้าหมายและไฟล์ที่มีอยู่มีสิทธิ์แบบอ่านอย่างเดียว (ป้องกันไม่ให้ไฟล์ถูกเขียนทับ) ในกรณีของฉันฉันเพิ่งเข้าสู่ระบบและลบไฟล์ที่มีอยู่และที่แก้ไขปัญหา


7

ฉันมีปัญหาที่คล้ายกันมันเกิดขึ้นเพราะsshใช้-p xxxxสำหรับการระบุพอร์ตในขณะที่scpใช้-P xxxxเพื่อระบุพอร์ต ความไม่สอดคล้องกันเล็กน้อยจึงง่ายที่จะพลาด :(


สรรเสริญคุณ อย่ารังเกียจฉันถ้าฉันเพิ่มคำหลักที่สามารถใช้กับ Google ได้เพื่อให้มองเห็นได้ชัดเจนขึ้น:scp doesn't work Permission denied (publickey). lost connection for ec2 compute.amazonaws.com
user1717828

0

มีปัญหาเดียวกัน ฉันพบว่าไดเรกทอรีที่มีไฟล์ต้นฉบับของฉันมีสิทธิ์ไม่เพียงพอ ดังนั้นฉันเพิ่งเปลี่ยนโหมดซ้ำโดยใช้: chmod -R 771 directory_pathบนเครื่องต้นทาง


0

ฉันพยายามที่จะคัดลอกจากเครื่องท้องถิ่นของฉันเป็นusername@localhost; รหัส SSH ที่ฉันใช้ไม่ได้ลงทะเบียนเพื่อเข้าถึง localhost ของฉันดังนั้นฉันจึงได้รับการปฏิเสธสิทธิ์ เมื่อฉันลบมันออกจากส่วนที่มามันก็ทำงานได้

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