Git через ssh на нестандартном порту (Windows/putty: unknown option -p)
При использовании git через ssh, который работает на нестандартном порту, команда типа
git clone ssh:user@host:port/path
вызывает ssh с параметром -p port
. Но под Windows при использовании putty (точнее, plink) в качестве ssh возникает ошибка
plink: unknown option "-p"
потому что putty пошел своим путём и опция у него -P
.
Самый простой способ решения: найти в файле plink.exe любым hex-редактором (я по старой памяти использовал hiew, достаточно демо-версии) эту опцию и исправить её: -P --p (0x50 -0x70)
в двух местах (одно — разбор командной строки, второе — вывод подсказки).
»
18.07.2013
Метки: git, ssh, Windows Рубрики: Инструменты, Разработка
Комментариев нет
Прозрачный ssh туннель
Внешней доступ к внутренним ресурсам сети у нас на работе возможен только через ssh. В принципе, этого достаточно для проверки почты (POP3/SMTP), пользования веб-интерфейсами (HTTP), удаленного управления компьютером (VNC или Remote Desktop), даже для доступа к репозиторию исходных текстов (CVS). Но неудобно. Поясню в двух словах, как получить доступ через ssh, в чем неудобство подхода и как я его преодолел.
ssh позволяет организовать туннели (ssh tunnel). Туннель связывает локальный порт с портом на компьютере, доступном с ssh сервера. Например, удаленный доступ к http-серверу work.yourdomain.com (порт 80) можно получить следующим образом:
ssh -f -N \
-L 10080:work.yourdomain.com:80 \
sshserver.yourdomain.com
Теперь в браузере http://localhost:10080 приведет на http://work.yourdomain.com.
Туннелей можно определить несколько. В приведенной команде добавятся аналогичные строки с ключом -L.
Теперь о проблемах.
- Абсолютные ссылки на work.yourdomain.com или другой внутренний адрес работать, очевидно, не будут.
- Если клиентская программа не позволяет изменить порт, придется занимать локальный порт с тем же номером. Не помню точно, где я этим столкнулся, то ли CVS, то ли RDP. Следовательно, на два разных сервера этим клиентом уже не зайдешь.
Проблема преодолевается с помощью port forwarding: надо задать правило, согласно которому запросы на work.yourdomain.com:80 перенаправляются на localhost:10080. Теперь в браузере можно будет использовать честный адрес — запросы на него перенаправятся на localhost, пройдут через ssh туннель и достигнут цели. При определении правил можно использовать только ip-адреса, поэтому проблему разрешения доменных имен надо решать отдельно, но это совсем просто.
Port forwarding в KUbuntu удобно настраивать через Guidedog (требуется установить одноименный пакет):
Но можно и вручную примерно такой командой (я не проверял):
iptables -t nat -A gforward -p tcp --dport 80 -d 1.2.3.4 -j REDIRECT --to-ports 10080
»
09.03.2008
Метки: Linux, ssh, сети Рубрики: Интернет
2 комментария