ไม่สามารถคัดลอกไฟล์จากโลคัลไปยังรีโมตโฮสต์ - ปฏิเสธสิทธิ์การใช้งาน


0

ฉันพยายามคัดลอกไฟล์บางไฟล์จากเครื่องท้องถิ่นไปยังโฮสต์ระยะไกล

root@local:~$ scp /var/www/html/file.php root@remote_host:/var/www/html/test/

ผลที่ได้คือ

scp: / var / www / html / test: ปฏิเสธการอนุญาต

รหัสผ่านของ root @ remote_host: การอนุญาตถูกปฏิเสธโปรดลองอีกครั้ง

สิ่งเหล่านี้เป็นสิทธิของโฟลเดอร์บนเครื่องระยะไกล

drwxrwxr-X

ความคิดใด ๆ ที่สามารถเป็นปัญหาได้?


มีสาเหตุที่เป็นไปได้มากมายและโดยทั่วไปคุณไม่ได้ตั้งค่า Author_keys ใน remote_host: /. ssh / คุณควรทำการแก้ไขปัญหาเบื้องต้นและรายงานสิ่งที่คุณสังเกตเห็นเพื่อให้ผู้อื่นช่วยเหลือ
chingNotCHing

แต่ถ้าพวกเขาไม่ได้กำหนดไว้อย่างถูกต้องฉันจะไม่สามารถเชื่อมต่อและเข้าสู่ระบบเซิร์ฟเวอร์นี้ได้เลย แต่ฉันสามารถ ..
Jason Paddle

เช่นหากมีรายการของคีย์ผับของโฮสต์ใน remote_host: /. ssh / authorized_keys คุณจะได้รับการรับรองความถูกต้องด้วย pki แทนการป้อนรหัสผ่าน อย่างไรก็ตามถ้า IP ของโฮสต์ในพื้นที่ของคุณเปลี่ยนไปเมื่อเร็ว ๆ นี้สิ่งนี้จะล้มเหลว ฉันขอแนะนำให้คุณดูการกวดวิชา ssh
chingNotCHing

if there's an entry of your local host's pub key in remote_host:/.ssh/authorized_keys, then you'd be authenticated with pki instead of inputting password.ฉันเข้าใจแล้ว. ฉันไม่เคยบันทึกมาก่อนโดยไม่มีรหัสผ่านบนเซิร์ฟเวอร์นั้น ไม่ IP ของฉันเหมือนกันเสมอ
Jason Paddle

คำตอบ:


1

หากคุณเข้าสู่ระบบในฐานะรูทแล้วรูตจะได้รับอนุญาตทั้งหมดไม่ว่าจะอนุญาตในไดเรกทอรีใดก็ตาม (การยกเว้นสามารถทำได้ก็ต่อเมื่อไดเรกทอรีมีการตั้งค่าสถานะที่ไม่เปลี่ยนรูประบบได้บน chflags (1))

คุณระบุรหัสผ่านไม่ถูกต้องหรือโฮสต์ระยะไกลใช้การตรวจสอบคีย์สาธารณะเท่านั้น


ขอบคุณสำหรับคำตอบ. or remote host used public key authentication onlyฉันไม่คุ้นเคยเล็กน้อยเรื่องนี้ ฉันสามารถเข้าสู่ระบบในฐานะ root ได้โดยไม่มีปัญหา แต่สามารถคัดลอกได้
Jason Paddle

รหัสผ่านยังไม่ผิด 100%
Jason Paddle

rsync -v -e ssh SomeLocalFile root@remoteHost:~ตกลงลอง ไม่SomeLocalFileคัดลอกไปยังบ้านรากหรือไม่ ลองwhich scpและตรวจสอบการอนุญาตบนเส้นทางที่กำหนดไว้สำหรับscpบนเซิร์ฟเวอร์ระยะไกล
Alex

3

เหตุผลอาจแตกต่างกันแน่นอน

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

ดังนั้นสิ่งแรกที่ต้องทำคือการ ssh ไปยังเครื่องและตรวจสอบให้แน่ใจว่าคุณสามารถเขียนไปยังตำแหน่งนั้น (ซึ่งคุณอาจลองแล้ว):

ssh root@remote_host
cd /var/www/html/test/
touch scratch

หากคุณเห็นรอยขีดข่วนไฟล์เปล่าคุณก็รู้ว่าคุณสามารถเขียนได้

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

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

คุณสามารถค้นหา IP ของคอมพิวเตอร์ที่คุณต้องการได้โดยไม่ต้องย้ายไปที่เทอร์มินัลอื่น ลองสร้างตัวแปรสภาพแวดล้อมเพื่อความเรียบง่าย:

export IP="`echo $SSH_CLIENT | awk '{print $1}'`"

ฉันมักจะรวมบรรทัดนี้ไว้ใน ~ / .bashrc เพราะฉันพบว่ามันมีประโยชน์

ไม่ว่าในกรณีใดก็ตาม

scp user@$IP:/var/www/html/file.php /var/www/html/test/

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


ขอบคุณสำหรับคำตอบนี้ ดังนั้นฉันจึงได้ลองวิธีกลับในขณะที่ฉันเข้าสู่เครื่องระยะไกล เมื่อฉันเขียนscp user@myip:/var/www/html/file.php /var/www/html/test/แน่นอนฉันเปลี่ยนuser@myipด้วยของจริงไม่มีอะไรเกิดขึ้น เพียงแค่แขวนและมีจุดสีขาวกระพริบในคอนโซล ..
เจสัน Paddle

[root@remote_host /var/www/html/test ]# touch test, [root@remote_host /var/www/html/test ]# ls -al, -rw-r--r-- 1 root root 0 Jul 23 14:55 test.. ดังนั้นฉันสามารถสร้างไฟล์ในโฟลเดอร์
เจสัน Paddle

ยืนยันว่าใช้พอร์ต 22 หรือไม่ nmap -PN localhostโดยที่ localhost เป็นคำต่อคำ โปรดทราบว่ามันใช้งานได้ดังนี้: ssh -p 22และscp -P 22สำหรับพอร์ต 22 (ค่าเริ่มต้น) กรณีของ p และ P ไม่สมมาตร ฉันคิดว่าไม่มีปัญหา แต่คุณอาจไม่พูดถึงรายละเอียดของเซิร์ฟเวอร์ของคุณ ถ้าพอร์ตคือ 22, คุณสามารถใช้ต่อไปกับเป้าหมายและสถานที่ทุ่งนาเหมือนกันกับ SCP โดยทั่วไป:alias scpresume="rsync --partial --progress --rsh=ssh -e 'ssh -p 22'"
daid
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.