Open Source & Linux Lab

It's better when it's simple

User Tools

Site Tools


howtos:cvs_through_ssh

Доступ к 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_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. FIXME найти способ настраивать порт индивидуально для каждой папки.
  • Выделяем папку для чекаута, открываем контекстное меню, выбираем “CVS checkout…”.
  • Настраиваем соединение, заполняя соответствующие поля, кроме порта(программа почему-то некорректно обрабатывает это поле, дописывая его CVSROOT).
  • Наслаждаемся приятным интерфейсом и удобной интеграцией в оболочку :)
1)
позволяет аутентифицировать пользователя
howtos/cvs_through_ssh.txt · Last modified: 2016/08/07 01:17 by kel