Ich habe diese Frage gefunden , die erklärt, wie man eine Remote-Datei mit vim bearbeitet, indem man:
vim scp://user@myserver[:port]//path/to/file.txt
Ist es möglich, dies als root (via sudo
) auf dem Remote-Host zu tun ?
Ich habe versucht, eine Datei mit Root-Berechtigungen auf dem Remote-Host zu erstellen und mit den oben genannten zu bearbeiten. Vim kann den Inhalt sehen, bearbeiten und speichern, aber auf dem Remote-Host ändert sich nichts (wahrscheinlich, weil vim nur seine temporäre Datei speichert und diese dann an scp weitergibt, um sie zurückzusetzen?)
Wenn Sie dies mit einer von meinem Benutzer gespeicherten Datei tun, verhält es sich wie erwartet.
Mein SSH verwendet einen Schlüssel zur Authentifizierung und der Remote-Server verfügt über NOPASSWD für meinen Sudo-Zugriff
Diese Frage ist ähnlich, aber die einzige Antwort mit Stimmen verwendet Marionette, was definitiv nicht das ist, was ich verwenden möchte.
Bearbeiten: Als Antwort auf den Kommentar von @ drawbenn unten ist hier mein vollständiger Bearbeitungsprozess:
vim scp://nagios//tmp/notouch
Wo /tmp/notouch
sich die Datei im Besitz von root befindet, wird vim schnell angezeigt
:!scp -q 'nagios:/tmp/notouch' '/tmp/vaHhwTl/0'
Dies verschwindet automatisch und es entsteht ein leerer schwarzer Bildschirm mit dem Text
"/tmp/vaHhwTl/0" 1L, 12C
Press ENTER or type command to continue
Durch Drücken der Eingabetaste kann ich die Datei bearbeiten
Beim Speichern wird derselbe scp-Befehl wie am Anfang angezeigt, der schnell und automatisch verschwindet (es ist schwierig, ihn rechtzeitig zu lesen, aber die Dateien scp und / tmp / ... sind definitiv vorhanden).
ssh
zum Server und bearbeiten Sie die Datei dort (mitvisudo
oder was auch immer). Alles andere hat Auswirkungen auf die Sicherheit..vimrc
Datei verwendenssh -t host sudo vim file
?Antworten:
Ich werde sagen, dass dies nicht möglich ist, weil
vim
keine Remote-Befehle ausgeführt werden. Es wird einfach verwendet,scp
um die Datei zu kopieren, lokal zu bearbeiten undscp
wenn Sie fertig sind, zurück. Wie in dieser Frage angegeben, istsudo
viascp
nicht möglich und es wird empfohlen, dass Sie entweder die Berechtigungen ändern, um das zu erreichen, was Sie möchten, oder einfach auf den Remote-Computer übertragen.quelle
Wie die akzeptierte Antwort denke ich nicht, dass dies direkt möglich ist.
Ich sehe jedoch mindestens zwei Möglichkeiten, um Ihr Ziel noch zu erreichen.
Remote-Ausführung von vim
Dies hat Nachteile:
Aber es hat den Vorteil zu arbeiten.
Den scp außerhalb von vim machen
Sie können die Datei einfach lokal kopieren, bearbeiten und zurückkopieren. Und Sie könnten das automatisieren, um es fast so nahtlos zu machen wie die scp-Unterstützung von vim.
So etwas wie das folgende Shell-Skript könnte funktionieren (Hinweis, völlig ungetestet!):
Dies würde es Ihnen ermöglichen, so etwas zu tun
rvim user@myserver /some/file
. Die lokale Kopie bleibt sogar erhalten, wenn die zweite Übertragung fehlschlägt, sodass Sie Ihre Änderungen nicht verlieren.Das Skript könnte viele Verbesserungen gebrauchen (zumindest Fehlerprüfung), aber es ist ein Ausgangspunkt.
quelle
Sie benötigen das Root-Passwort oder haben Ihren öffentlichen SSH-Schlüssel in ~ root / .ssh / authorized_keys. Sobald Sie das hatten, könnten Sie wahrscheinlich tun
Fazit: Dies ist praktisch nur eine Abkürzung für
Wenn Sie dazu über den erforderlichen Zugriff verfügen, haben Sie den erforderlichen Zugriff, um das Netzwerkzugriffs-Plugin von vim zu verwenden. Wenn nicht, dann nicht.
Wie Zachary Brady betont,
sudo
ist nicht beteiligt. Sie benötigen SSH-Zugriff auf das Root-Konto.Hast du es versucht?
quelle
ssh remotesystem sudo vim file