Доступ к CVS через SSH
Теоретическая справка
Репозитарии CVS представляют собой систему специальных файлов, каждый из которых хранит всю историю изменений, конкретного преимущественно текстового файла. CVS может обращаться к репозитарию множеством способов. Репозитарий может находиться на локальной машине, на соседней машине или же на машине, или на машине в интернет.
Есть следующие методы доступа:
- local - доступ к репозитарию, хранящемуся в локальной файловой системе;
- pserver - доступ к удаленному репозитарию, через программу pserver1)
- ext - “другой” метод аутентификации, как правило ssh. Использует для доступа к файлам на удаленной машине указаную программу удаленной командной строки (RSH, от Remote SHell).
Указание на то, какой метод доступа должен использоваться можно в переменной CVSROOT
, например для pserver переменная будет выглядеть так:
:pserver:kkv@kkv.spb.su:/cvs
Если используется режим доступа ext, то cvs использует программу для доступа, которая указана в переменной окружения CVS_RSH
. При данном методе доступа, выполнять cvs login не требуется.
Для доступа к cvs через ssh необходимо выполение следующих условий:
- наличие каталогов с репозитарием на удаленной машине;
- запущенный ssh-сервер;
- наличие учетной записи пользователя, и возможности логина на машину через ssh;
- дополнительно можно использовать открытый ключ чтобы не вводить каждый раз пароль
Доступ к cvs на kkv.spb.su
- Каталог репозитария: /home/cvs
- Порт: 2222
- Могут создать учетные записи: kkv, zps
Настройка порта
По умолчанию, используется обычный порт для ssh (значение 22), поэтому следующая последовательность команд
export CVS_RSH=/bin/ssh cvs -d :ext:ktoto@kkv.spb.su:/cvs co project
завершится следующей ошибкой:
ssh: connect to host kkv.spb.su port 22: Connection refused cvs [checkout aborted]: end of file from server (consult above messages if any)
Значение порта для ssh можно указать либо прописав в файле ~/.ssh/config строчку
port 2222
это не очень удобно, так как ssh будет пытаться ко всем хостам обращаться по порту 2222. Чтобы задать порт только для одного сервера – прописать в файле ~/.ssh/config строчки
Host kkv.spb.su Port 2222
Второй вариант, создать скрипт cvsrsh, который указать в переменной CVS_RSH
в качестве программы доступа.
vim ~/scripts/cvsrsh #!/bin/sh ssh -p 2222 $* chmod +x ~/scripts/cvsrsh
Доступ к cvs с машины под Linux
export CVS_RSH=~/scripts/cvsrsh cvs -d :ext:ktoto@kkv.spb.su:/home/cvs co test
Эти строчки можно добавить в ~/.bashrc, когда не надо будет вводить это все по-новой.
Доступ к cvs с машины под Windows
Для доступа к cvs из под Windows требуется выполнить следующие шаги:
- Скачать и установить cvs клиент ftp://kkv.spb.su/pub/tools/setupssh381-20040709.zip или с домашней страницы http://sshwindows.sourceforge.net/download/. В дальнейшем предполагаем, что он установлен в каталог c:\tools\openssh
- Настроить следующие переменные среды:
CVS_RSH=c:\tools\openssh\bin\ssh.exe HOME=c:\tools
- Создать каталог c:\tools\.ssh и поместить туда файл config, содержащий следующую строчку:
Port 2222
- Протестировать соединение выполнив команду
cvs -d :ext:user@kkv.spb.su:/home/cvs co test
- Должен выгрузиться проект test, содержащий файл readme.txt
Доступ к cvs с машины под Windows (альтернативный вариант)
- Качаем и устанавливаем программу для доступа к CVS репозитариям Tortoise CVS.
- В главном меню находим настройки программы (Tortoise CVS → Preferences), и в них на закладке “Tools” в поле “SSH application” дописывам параметр -p 2222. найти способ настраивать порт индивидуально для каждой папки.
- Выделяем папку для чекаута, открываем контекстное меню, выбираем “CVS checkout…”.
- Настраиваем соединение, заполняя соответствующие поля, кроме порта(программа почему-то некорректно обрабатывает это поле, дописывая его CVSROOT).
- Наслаждаемся приятным интерфейсом и удобной интеграцией в оболочку :)