Как стать автором
Обновить

Редактирование файлов через SSH на локальном Mac

Здравствуйте коллеги. Внесу свою лепту в коллективное сознательное.

Intro


Сегодня я расскажу про must–have инструмент для любого сисадмина или программиста.
К сожалению работает только на Mac, но если есть знаете решения под Win и Linux, то прошу добавлять их в комментарии.
Она позволяет открывать файлы на удаленных машинах через SSH для локального редактирования — rmate.
Набирая на удаленном сервере
rmate /path/to/source



Мы получаем мгновенное редактирование в любимом TextMate 2



Ну что, настроим?


Связка рабочая для Mac и *nix системами.
Последний build для Mac берем в официальном репозитории на github. Устанавливаем.
В составе пакета есть ruby скрипт посылающий редактируемый файл в обратную сторону через SSH туннель.
Сначала его надо добавить в любое место куда указывает $PATH в CentOS
scp /Applications/TextMate.app/Contents/Frameworks/Preferences.framework/Versions/A/Resources/rmate example.com:/usr/local/bin

Естественно меняем права на сервере
chmod +x /usr/local/bin/rmate

Теперь подключаемся через SSH с туннелем
ssh -R 52698:127.0.0.1:52698 example.com

Но я чтобы не писать каждый раз этот туннель прописываю его по умолчанию в ~/.ssh/config
# ~/.ssh/config
RemoteForward 52698 127.0.0.1:52698

И при запуске
#порт опционален, так как по умолчанию он и вешается на 52698
rmate [-p port] /path/to/source 

Хитрый ruby скрипт отправляет содержимое файла на определенный порт, через туннель и на Textmate (ВНИМАНИЕ: Он должен быть запущен) который как раз слушает этот порт.
Done.

Troubleshooting


/usr/bin/env: ruby: No such file or directory
sudo yum-install ruby

Warning: remote port forwarding failed for listen port 52698
Это происходит (в 99% случаев) если сессия Textmate не была правильно закончена.

Солюшен номер раз
Решается через замену портов обмена:
ssh -R <my-port-number>:localhost:52698 <user>@<server>
rmate -p <my-port-number> rmate_rocks.txt

Солюшен номер два
#Смотрим PID процесса на порте
sudo lsof -i :52698
#Kill it
kill PID

Солюшен номер три
Проблема решается сама по себе если повесить сам ssh и его туннели на autossh.

Все. Мы убрали кучу ненужных телодвижений. Теперь не нужно монтировать удаленные диски через fstub, sshfs или лезть через sftp over Cyberduck (sic!) и Transmit.

Вся файловая система как на ладони. Конфигурируй не хочу.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.