Я нашел этот вопрос, который объясняет, как редактировать удаленный файл с помощью vim:
vim scp://user@myserver[:port]//path/to/file.txt
Можно ли сделать это как root (через sudo
) на удаленном хосте?
Я попытался создать файл с правами суперпользователя на удаленном хосте и отредактировать его с помощью вышеуказанного. Vim может просматривать содержимое, редактировать его и сохранять, но ничего не меняется на удаленном хосте (возможно, потому, что vim просто сохраняет свой временный файл, а затем передает его scp для возврата?)
При выполнении этого с файлом, сохраненным моим пользователем, он ведет себя как ожидалось.
Мой SSH использует ключ для аутентификации, а на удаленном сервере есть NOPASSWD для моего доступа sudo
Этот вопрос похож, но единственный ответ с голосами использует марионетку, которая определенно не то, что я хочу использовать.
Изменить: В ответ на комментарий @ drewbenn ниже, вот мой полный процесс для редактирования:
vim scp://nagios//tmp/notouch
Где /tmp/notouch
находится файл, принадлежащий root, я вижу, Vim быстро показать
:!scp -q 'nagios:/tmp/notouch' '/tmp/vaHhwTl/0'
Это автоматически уходит, чтобы получить пустой черный экран с текстом
"/tmp/vaHhwTl/0" 1L, 12C
Press ENTER or type command to continue
Нажатие Enter позволяет мне редактировать файл
При сохранении появляется та же команда scp, что и в начале, которая быстро и автоматически исчезает (ее трудно прочитать вовремя, но файлы scp и / tmp / ... определенно есть)
ssh
на сервер и отредактируйте файл там (сvisudo
или как угодно). Все остальное имеет последствия для безопасности..vimrc
файлаssh -t host sudo vim file
?Ответы:
Я собираюсь сказать, что это невозможно, потому что
vim
не выполняются удаленные команды. Он просто использует,scp
чтобы скопировать файл, отредактировать его локально иscp
вернуть обратно, когда закончите. Как указано в этом вопросе, использованиеsudo
viascp
невозможно, поэтому рекомендуется либо изменить разрешения, чтобы выполнить то, что вы хотите, либо просто использовать ssh на удаленной машине.источник
Как и принятый ответ, я не думаю, что это возможно напрямую.
Тем не менее, я вижу, по крайней мере, два пути для достижения вашей цели.
Запуск vim удаленно
Это имеет недостатки:
Но у него есть преимущество работы.
Делать scp вне vim
Вы можете просто скопировать файл локально, отредактировать его и скопировать обратно. И вы можете автоматизировать это, чтобы сделать его почти таким же удобным, как поддержка scim в vim.
Может работать что-то вроде следующего сценария оболочки (обратите внимание, полностью не проверено!):
Это позволит вам сделать что-то вроде
rvim user@myserver /some/file
. Он даже сохраняет локальную копию, если вторая передача не удалась, поэтому вы не потеряете свои изменения.Скрипт может использовать множество улучшений (по крайней мере, проверку ошибок), но это отправная точка.
источник
Вам потребуется пароль пользователя root или ваш открытый ключ ssh в ~ root / .ssh / authorized_keys. Как только вы это сделаете, вы можете
Итог: это фактически просто ярлык для
Если у вас есть необходимый доступ для этого, у вас есть необходимый доступ для использования плагина vim для доступа к сети. Если нет, то нет.
Как указывает Захари Брэйди,
sudo
не участвует. Вам понадобится SSH доступ к учетной записи root.Ты пробовал это?
источник
ssh remotesystem sudo vim file