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