Znalazłem to pytanie, które wyjaśnia, jak edytować plik zdalny za pomocą vima przy użyciu:
vim scp://user@myserver[:port]//path/to/file.txt
Czy można to zrobić jako root (via sudo
) na zdalnym hoście?
Próbowałem utworzyć plik z uprawnieniami administratora na zdalnym hoście i edytować go za pomocą powyższego. Vim widzi zawartość, może ją edytować i może ją zapisać, ale nic się nie zmienia na zdalnym hoście (prawdopodobnie dlatego, że vim zapisuje tylko swój plik tymczasowy, a następnie przekazuje go SCP, aby odłożyć?)
Robiąc to z plikiem zapisanym przez mojego użytkownika, działa on zgodnie z oczekiwaniami.
Mój SSH używa klucza do uwierzytelnienia, a serwer zdalny ma NOPASSWD dla mojego dostępu sudo
To pytanie jest podobne, ale jedyną odpowiedzią głosującą jest marionetka, która zdecydowanie nie jest tym, czego chcę użyć.
Edycja: W odpowiedzi na komentarz @ drewbenn poniżej, oto mój pełny proces edycji:
vim scp://nagios//tmp/notouch
Gdzie /tmp/notouch
jest plik należący do roota, widzę, że vim szybko pokazuje
:!scp -q 'nagios:/tmp/notouch' '/tmp/vaHhwTl/0'
Znika to automatycznie, dając pusty czarny ekran z tekstem
"/tmp/vaHhwTl/0" 1L, 12C
Press ENTER or type command to continue
Naciśnięcie Enter pozwala mi edytować plik
Zapisywanie wyskakuje z tym samym rodzajem polecenia scp co na początku, który szybko i automatycznie znika (trudno jest odczytać go na czas, ale pliki scp i / tmp / ... są zdecydowanie dostępne)
ssh
na serwer i edytuj tam plik (za pomocąvisudo
lub cokolwiek innego). Wszystko inne ma wpływ na bezpieczeństwo..vimrc
plikussh -t host sudo vim file
?Odpowiedzi:
Powiem, że nie jest to możliwe, ponieważ
vim
nie wykonuje zdalnych poleceń. Po prostuscp
kopiuje plik, edytuje go lokalnie iscp
wraca po zakończeniu . Jak stwierdzono w tym pytaniusudo
za pośrednictwem,scp
nie jest możliwe i zaleca się albo zmodyfikować uprawnienia, aby osiągnąć zamierzony cel, albo po prostu ssh na zdalnym komputerze.źródło
Podobnie jak zaakceptowana odpowiedź, nie sądzę, że jest to możliwe bezpośrednio.
Widzę jednak co najmniej dwa sposoby, aby nadal osiągnąć swój cel.
Uruchamianie vima zdalnie
Ma to wady:
Ale ma tę zaletę, że działa.
Robienie scp poza vimem
Możesz po prostu skopiować plik lokalnie, edytować go i skopiować z powrotem. Możesz to zautomatyzować, aby uczynić go niemal tak bezproblemowym, jak obsługa SCP przez vima.
Może działać coś takiego jak poniższy skrypt powłoki (uwaga, w pełni nieprzetestowane!):
To pozwoli ci zrobić coś takiego
rvim user@myserver /some/file
. Nawet zachowuje kopię lokalną, jeśli drugi transfer się nie powiedzie, więc nie stracisz swoich zmian.Skrypt może korzystać z wielu ulepszeń (przynajmniej sprawdzania błędów), ale jest to punkt wyjścia.
źródło
Będziesz potrzebował hasła roota lub mieć swój publiczny klucz ssh w ~ root / .ssh / Author_keys. Gdy już to masz, prawdopodobnie możesz to zrobić
Podsumowując: jest to w rzeczywistości tylko skrót
Jeśli masz niezbędny dostęp do tego, masz niezbędny dostęp do korzystania z wtyczki dostępu do sieci vima. Jeśli nie, to nie.
Jak zauważa Zachary Brady,
sudo
nie jest zaangażowany. Będziesz potrzebował dostępu ssh do konta root.Próbowałeś tego?
źródło
ssh remotesystem sudo vim file