ถ่ายโอนไฟล์โดยใช้ scp: สิทธิ์ถูกปฏิเสธ


23

ฉันพยายามถ่ายโอนไฟล์จากคอมพิวเตอร์ระยะไกลที่ใช้sshกับคอมพิวเตอร์ของฉัน:

scp My_file.txt user_id@server:/Home

สิ่งนี้จะทำให้ My_file.txt ในโฟลเดอร์หน้าหลักในคอมพิวเตอร์ของฉันใช่ไหม ฉันเข้าใจ

scp / Home: ปฏิเสธการอนุญาต

นอกจากนี้เมื่อฉันลอง: ...@server:/Desktopเพื่อคัดลอกไฟล์จากคอมพิวเตอร์ระยะไกลไปยังเดสก์ท็อปของฉัน

ผมทำอะไรผิดหรือเปล่า?


1
หากคุณต้องการคัดลอกไฟล์ไปยังโฟลเดอร์บ้านของ 'user_id' ใช้scp My_file.txt user_id@server:มันคัดลอกไปยังโฟลเดอร์บ้านของผู้ใช้
Manula Waidyanatha

คำตอบ:


36

คำสั่งของคุณกำลังพยายามนำเอกสารใหม่ไปที่รูท ( /) ของเครื่องของคุณ สิ่งที่คุณต้องการทำคือโอนไปยังโฮมไดเร็กตอรี่ของคุณ(เนื่องจากคุณไม่มีสิทธิ์ในการเขียน/) หากเส้นทางไปที่บ้านของคุณเป็นสิ่งที่ต้องการ/home/erezลองต่อไปนี้:

scp My_file.txt user_id@server:/home/erez/

คุณสามารถแทนที่เส้นทางไปยังไดเรกทอรีบ้านของคุณด้วยทางลัด~/ดังนั้นสิ่งต่อไปนี้จะมีผลเหมือนกัน:

scp My_file.txt user_id@server:~/

คุณยังสามารถออกจากเส้นทางไปพร้อมกันในด้านระยะไกล นี่หมายถึงไดเรกทอรีบ้านของคุณ

scp My_file.txt user_id@server:

นั่นคือเพื่อคัดลอกไฟล์ไปยังเดสก์ท็อปของคุณคุณอาจต้องการถ่ายโอนไปที่/home/erez/Desktop/:

scp My_file.txt user_id@server:/home/erez/Desktop/

หรือใช้ทางลัด:

scp My_file.txt user_id@server:~/Desktop/

หรือใช้พา ธ สัมพัทธ์ทางด้านรีโมตซึ่งถูกตีความสัมพันธ์กับโฮมไดเร็กตอรี่ของคุณ:

scp My_file.txt user_id@server:Desktop/

แก้ไข:

ตามที่ @ckhan พูดถึงแล้วคุณต้องสลับอาร์กิวเมนต์มันต้องเป็นด้วย

scp FROM TO

ดังนั้นหากคุณต้องการคัดลอกไฟล์My_file.txtจากเซิร์ฟเวอร์user_id@serverไปยังเดสก์ท็อปของคุณคุณควรลองทำสิ่งต่อไปนี้:

scp user_id@server:/path/to/My_file.txt ~/Desktop/

หากไฟล์My_file.txtอยู่ในโฮมไดเร็กตอรี่ของคุณบนเซิร์ฟเวอร์คุณสามารถใช้ทางลัดอีกครั้ง:

scp user_id@server:~/My_file.txt ~/Desktop/

- ฉันลองแล้ว: "~ /" สำหรับ 'Home' ตอนนี้และ "~ / Desktop /" ทั้งคู่ส่งผลให้: My_file.txt 100% 0 0.0 KB / s 00:00 และฉันไม่เห็นไฟล์ในของฉัน โฟลเดอร์ฉันยังคงทำผิดอะไรอยู่ขอบคุณมาก!
Erez

ในตัวอย่างคำสั่งที่สองของคุณ~ควรได้รับการปกป้องจากการประเมินเพื่อที่จะถูกประเมินบนรีโมตโฮสต์: \~ตัวอย่างเช่น
แดน

1
เพื่อเป็นการขอบคุณฉันลงทะเบียนกับเว็บไซต์ ขอขอบคุณคุณบันทึกวันของฉัน :)
โฆษณา Infinitum

6

ฉันมาที่นี่เพื่อ "โอนไฟล์โดยใช้ scp: อนุญาตถูกปฏิเสธ" เพราะฉันมีข้อผิดพลาดเดียวกัน

ในกรณีของฉันไฟล์ที่ดาวน์โหลดด้วย scp จะเขียนทับไฟล์ที่เป็นของ root และฉันไม่ได้รูท ในระยะสั้นตรวจสอบความเป็นเจ้าของของไฟล์ที่ถูกเขียนทับ


1
ในกรณีนี้เป็นเพราะเขาพยายามที่จะเขียน/Homeและไม่ได้เป็นรากเขาไม่ได้มีการเข้าถึงการเขียนภายนอก~/
Shadur

คุณช่วยฉัน
longdeqidao

4

ดูเหมือนว่าจะเป็นปัญหาการอนุญาต

ไฟล์อาจไม่มีสิทธิ์อ่านเนื่องจากส่งไปยังเซิร์ฟเวอร์ปลายทางเป็นบัญชีต้นทาง

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

-rw-R - r--

chmod 744

จากนั้น scp ไฟล์ไปยังปลายทาง สิ่งนี้จะได้รับการแก้ไข


3
-rw-r--r--คือ 644 ไม่ใช่ 744 การตั้งค่าสิทธิ์ในการใช้งานสำหรับไฟล์ที่ไม่สามารถใช้งานได้จริงอาจทำให้เกิดปัญหาได้
G-Man กล่าวว่า 'Reinstate Monica'

3

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

sudo chown (your username) (remote folder)

และเพื่อให้แน่ใจว่าเปิดใช้งานการอนุญาตทั้งหมดในโฟลเดอร์ระยะไกล: (ไม่จำเป็นเสมอไป):

sudo chmod 777 (remote folder)

1

คุณมีข้อโต้แย้งที่จะscpกลับรายการ cpเป็นแหล่งแรกปลายทางแล้วเช่น man scpสำหรับรายละเอียดเพิ่มเติม


1

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

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

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

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

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

0

ติดตั้งเครื่องมือ windows "mRemoteG" จาก www.mremoteng.org/

สร้างการเชื่อมต่อ SSH ของคุณไปยังกล่องที่ต้องการ

คลิกที่เมนู "โอนไฟล์"

มันจะช่วยให้การถ่ายโอนไฟล์ได้อย่างง่ายดายจาก Windows ไปยัง Linux

ขอบคุณ


0

Amazon Linux AMI

ตรวจสอบให้แน่ใจว่าคุณต้องตั้งค่าเส้นทางเซิร์ฟเวอร์แน่นอนจากที่บ้านในกรณีปัจจุบัน:

scp file.txt SSH-ALIAS:/home/YOUR_USER/

0

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


0

ในกรณีของฉันฉันยังพยายามให้สิทธิ์ทั้งหมดกับ -R ในโฟลเดอร์ แต่ยังได้รับข้อผิดพลาดเกี่ยวกับการอนุญาต

ฉันต้องลบ "/" ก่อนหน้าพา ธ ของเซิร์ฟเวอร์เป้าหมายและโฟลเดอร์ เหตุผลก็คือดาวน์โหลดเป็นโฟลเดอร์แรกที่ฉันสามารถแสดงรายการหลังจากฉันไปยังเซิร์ฟเวอร์ตัวอย่างเช่น: ssh tiennsloit@13.76.91.2

งานนี้:

sudo scp -rp /Users/macintosh.vn/Downloads/bbhs_20190301.zip tiennsloit@13.76.91.2: ดาวน์โหลด

สิ่งนี้ไม่ทำงาน:

sudo scp -rp /Users/macintosh.vn/Downloads/bbhs_20190301.zip tiennsloit@13.76.91.2: / ดาวน์โหลด


0

แก้ไขได้ง่าย ทำให้แน่ใจว่าคุณเป็นคนรูท SCP ไปที่รีโมตแล้วมันจะขอรหัสผ่านจากรูทเครื่อง เพิ่งมีปัญหานี้นั่นคือทางออก คุณหยั่งรากพวกมัน


เนื่องจากการเข้าสู่ระบบโดยปกติจะถูกปิดการใช้งานในsshd_configคุณควรแสดง OP วิธีการเปลี่ยนแปลง (แม้ว่าจะไม่แนะนำ)
ajgringo619

ทำไมคุณยืนยันที่จะใช้รูทเพื่อคัดลอกไฟล์ (ใด ๆ )? สังเกตเห็นคำตอบที่ได้รับการยอมรับจาก ~ 7 ปีก่อน ...
Jeff Schaller

-3

ก่อนใช้คำสั่ง scp ตรวจสอบให้แน่ใจว่าคุณให้สิทธิ์ในการอ่านเขียนและดำเนินการกับทุกคนภายนอก "chmod 777 file_name"


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