Saya telah menemukan pertanyaan ini yang menjelaskan cara mengedit file jarak jauh dengan vim menggunakan:
vim scp://user@myserver[:port]//path/to/file.txt
Apakah mungkin untuk melakukan ini sebagai root (via sudo
) pada host jarak jauh?
Saya sudah mencoba membuat file dengan izin root pada host jarak jauh dan mengeditnya dengan di atas. Vim dapat melihat konten, dapat mengeditnya, dan dapat menyimpannya tetapi tidak ada perubahan pada host jarak jauh (mungkin karena vim hanya menyimpan file temp-nya dan kemudian memberikannya ke scp untuk dimasukkan kembali?)
Ketika melakukan ini dengan file yang disimpan oleh pengguna saya berperilaku seperti yang diharapkan.
SSH saya menggunakan kunci untuk otentikasi dan server jauh memiliki NOPASSWD untuk akses sudo saya
Pertanyaan ini mirip, tetapi satu-satunya jawaban dengan suara menggunakan boneka yang jelas bukan yang ingin saya gunakan.
Sunting: Menanggapi komentar @ drewbenn di bawah ini, inilah proses lengkap saya untuk mengedit:
vim scp://nagios//tmp/notouch
Di mana /tmp/notouch
file yang dimiliki oleh root, saya melihat vim dengan cepat ditampilkan
:!scp -q 'nagios:/tmp/notouch' '/tmp/vaHhwTl/0'
Ini hilang secara otomatis untuk menghasilkan layar hitam kosong dengan teks
"/tmp/vaHhwTl/0" 1L, 12C
Press ENTER or type command to continue
Menekan enter memungkinkan saya untuk mengedit file
Menyimpan muncul jenis yang sama dari perintah scp sebagai awal, yang dengan cepat dan otomatis hilang (sulit untuk membacanya tepat waktu tetapi file scp dan / tmp / ... sudah pasti ada)
ssh
ke server dan edit file di sana (denganvisudo
, atau apa pun). Yang lain memiliki implikasi keamanan..vimrc
file sayassh -t host sudo vim file
?Jawaban:
Saya akan mengatakan ini tidak mungkin karena
vim
tidak menjalankan perintah jarak jauh. Ini hanya menggunakanscp
untuk menyalin file, mengeditnya secara lokal danscp
kembali ketika selesai. Seperti yang dinyatakan dalam pertanyaan inisudo
viascp
tidak mungkin dan Anda disarankan untuk memodifikasi izin untuk mencapai apa yang Anda inginkan atau hanya ssh menyeberang ke mesin jarak jauh.sumber
Seperti jawaban yang diterima, saya pikir ini tidak mungkin secara langsung.
Namun, saya melihat setidaknya dua cara untuk tetap mencapai tujuan Anda.
Menjalankan vim dari jarak jauh
Ini memiliki kekurangan:
Tetapi memiliki keuntungan bekerja.
Melakukan scp di luar vim
Anda bisa menyalin file itu secara lokal, mengeditnya, dan menyalinnya kembali. Dan Anda dapat mengotomatisasi itu untuk membuatnya hampir sama mulusnya dengan dukungan scp vim.
Sesuatu seperti skrip shell berikut dapat berfungsi (perhatikan, sepenuhnya belum teruji!):
Ini akan memungkinkan Anda untuk melakukan sesuatu seperti
rvim user@myserver /some/file
. Bahkan menyimpan salinan lokal jika transfer kedua gagal, sehingga Anda tidak kehilangan perubahan Anda.Script dapat menggunakan banyak perbaikan (paling tidak memeriksa kesalahan), tetapi ini adalah titik awal.
sumber
Anda memerlukan kata sandi root atau memiliki kunci ssh publik di ~ root / .ssh / otor_keys. Setelah Anda memilikinya, Anda mungkin bisa melakukannya
Intinya: ini secara efektif hanya jalan pintas untuk
Jika Anda memiliki akses yang diperlukan untuk melakukan itu, maka Anda memiliki akses yang diperlukan untuk menggunakan plugin akses jaringan vim. Jika tidak, maka Anda tidak melakukannya.
Seperti yang ditunjukkan Zachary Brady,
sudo
tidak terlibat. Anda memerlukan akses ssh ke akun root.Sudahkah Anda mencobanya?
sumber
ssh remotesystem sudo vim file