Доступ к 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).

Наслаждаемся приятным интерфейсом и удобной интеграцией в оболочку :)