Редактирование файлов через SSH на локальном Mac
Здравствуйте коллеги. Внесу свою лепту в коллективное сознательное.
К сожалению работает только на Mac, но если есть знаете решения под Win и Linux, то прошу добавлять их в комментарии.
Она позволяет открывать файлы на удаленных машинах через SSH для локального редактирования — rmate.
Набирая на удаленном сервере
Мы получаем мгновенное редактирование в любимом TextMate 2
Последний build для Mac берем в официальном репозитории на github. Устанавливаем.
В составе пакета есть ruby скрипт посылающий редактируемый файл в обратную сторону через SSH туннель.
Сначала его надо добавить в любое место куда указывает $PATH в CentOS
Done.
Все. Мы убрали кучу ненужных телодвижений. Теперь не нужно монтировать удаленные диски через fstub, sshfs или лезть через sftp over Cyberduck (sic!) и Transmit.
Вся файловая система как на ладони. Конфигурируй не хочу.
Intro
Сегодня я расскажу про must–have инструмент для любого сисадмина или программиста.К сожалению работает только на Mac, но если есть знаете решения под Win и Linux, то прошу добавлять их в комментарии.
Она позволяет открывать файлы на удаленных машинах через SSH для локального редактирования — rmate.
Набирая на удаленном сервере
<code class="bash">rmate /path/to/source</code>
Мы получаем мгновенное редактирование в любимом TextMate 2
Ну что, настроим?
Связка рабочая для Mac и *nix системами.Последний build для Mac берем в официальном репозитории на github. Устанавливаем.
В составе пакета есть ruby скрипт посылающий редактируемый файл в обратную сторону через SSH туннель.
Сначала его надо добавить в любое место куда указывает $PATH в CentOS
<code class="bash">scp /Applications/TextMate.app/Contents/Frameworks/Preferences.framework/Versions/A/Resources/rmate example.com:/usr/local/bin</code>Естественно меняем права на сервере
<code class="bash">chmod +x /usr/local/bin/rmate</code>Теперь подключаемся через SSH с туннелем
<code class="bash">ssh -R 52698:127.0.0.1:52698 example.com</code>Но я чтобы не писать каждый раз этот туннель прописываю его по умолчанию в ~/.ssh/config
<code class="bash"># ~/.ssh/config RemoteForward 52698 127.0.0.1:52698</code>И при запуске
<code class="bash">#порт опционален, так как по умолчанию он и вешается на 52698 rmate [-p port] /path/to/source </code>Хитрый ruby скрипт отправляет содержимое файла на определенный порт, через туннель и на Textmate (ВНИМАНИЕ: Он должен быть запущен) который как раз слушает этот порт.
Done.
Troubleshooting
/usr/bin/env: ruby: No such file or directory
<code class="bash">sudo yum-install ruby</code>
Warning: remote port forwarding failed for listen port 52698
Это происходит (в 99% случаев) если сессия Textmate не была правильно закончена.Солюшен номер раз
Решается через замену портов обмена:<code class="bash">ssh -R <my-port-number>:localhost:52698 <user>@<server> rmate -p <my-port-number> rmate_rocks.txt</code>
Солюшен номер два
<code class="bash">#Смотрим PID процесса на порте sudo lsof -i :52698 #Kill it kill PID </code>
Солюшен номер три
Проблема решается сама по себе если повесить сам ssh и его туннели на autossh.Все. Мы убрали кучу ненужных телодвижений. Теперь не нужно монтировать удаленные диски через fstub, sshfs или лезть через sftp over Cyberduck (sic!) и Transmit.
Вся файловая система как на ладони. Конфигурируй не хочу.
0 комментариев