ฉันพบคำถามนี้ที่อธิบายวิธีแก้ไขไฟล์ระยะไกลด้วย vim โดยใช้:
vim scp://user@myserver[:port]//path/to/file.txt
เป็นไปได้ไหมที่จะทำเช่นนี้เป็นรูท (ผ่านsudo
) บนรีโมตโฮสต์
ฉันได้ลองสร้างไฟล์ด้วยการอนุญาตรูทบนรีโมตโฮสต์แล้วแก้ไขมันด้วยวิธีการข้างต้น เป็นกลุ่มสามารถดูเนื้อหาสามารถแก้ไขและสามารถบันทึกได้ แต่ไม่มีการเปลี่ยนแปลงใด ๆ ในรีโมตโฮสต์ (อาจเป็นเพราะ vim เพิ่งบันทึกไฟล์ temp ของมันแล้วมอบให้กับ scp เพื่อนำกลับมา?)
เมื่อทำสิ่งนี้กับไฟล์ที่บันทึกโดยผู้ใช้ของฉันมันจะทำงานตามที่คาดไว้
SSH ของฉันใช้คีย์เพื่อตรวจสอบสิทธิ์และเซิร์ฟเวอร์ระยะไกลมี NOPASSWD สำหรับการเข้าถึง sudo ของฉัน
คำถามนี้คล้ายกัน แต่คำตอบเดียวกับการลงคะแนนใช้หุ่นเชิดซึ่งไม่ใช่สิ่งที่ฉันต้องการใช้แน่นอน
แก้ไข: เพื่อตอบสนองต่อความคิดเห็นของ @ drewbenn ด้านล่างนี่คือกระบวนการทั้งหมดของฉันสำหรับการแก้ไข:
vim scp://nagios//tmp/notouch
ในกรณีที่/tmp/notouch
เป็นไฟล์ที่เป็นเจ้าของโดยรากผมดูการแสดงได้อย่างรวดเร็วเป็นกลุ่ม
:!scp -q 'nagios:/tmp/notouch' '/tmp/vaHhwTl/0'
สิ่งนี้จะหายไปโดยอัตโนมัติเพื่อให้หน้าจอสีดำที่มีข้อความว่างเปล่า
"/tmp/vaHhwTl/0" 1L, 12C
Press ENTER or type command to continue
การกด Enter ช่วยให้ฉันแก้ไขไฟล์ได้
การบันทึกจะแสดงคำสั่ง scp แบบเดียวกับจุดเริ่มต้นซึ่งหายไปอย่างรวดเร็วและอัตโนมัติ (เป็นการยากที่จะอ่านทันเวลา แต่มีไฟล์ scp และ / tmp / ... อยู่ที่นั่น)
.vimrc
ไฟล์ของฉัน
ssh -t host sudo vim file
?
ssh
ไปที่เซิร์ฟเวอร์และแก้ไขไฟล์ที่นั่น (ด้วยvisudo
หรืออะไรก็ตาม) สิ่งอื่นใดที่มีผลกระทบด้านความปลอดภัย