RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : CVS + SSH + маленькие хитрости


Список сообщений | Написать новое | Ответить на сообщение | Домой Поиск:
Предыдущее сообщение | Следующее сообщение
From : leonid
To : All
Subj : CVS + SSH + маленькие хитрости

Может кому будет интересно про доступ к репозиторию
CVS на UNIX-хосте через SSH из-под OS/2. Так это сюда.

Имеем в сети UNIX-хост, на котором по тем или иным
соображениям мы решили держать все что нам очень дорого и
находится в непрерывном развитии.

1. Первое, что требуется -- локальное наличие и нормальное
функционирование gnu-шных программ для os/2. Все это берется
на hobbes'е.

2. Второе -- на удаленном хосте должны работать CVS и SSH,
а мы -- иметь обычный пользовательский аккаунт. Считаем, что
это имеет место и мы имеем домашний каталог $HOME, USERID и
PASSWORD на хосте HOST.

4. Если не установлен локально, устанавливаем ssh (берем openssh
на hobbes.nmsu.edu), устанавливаем и настраиваем:

-- запускаем ssh-keygen и на все его вопросы давим <Enter>.
Он создаст в каталоге $HOME подкаталог .ssh/ и запишет туда
два файла:
$HOME/.ssh/identity -- файл с секретным ключом
$HOME/.ssh/identity.pub -- файл с открытым ключом
-- копируем identity.pub на удаленный сервер
> scp $HOME/.ssh/identity.pub USERID@HOST:.
при этом в $HOME на удаленном хосте появится файл identity.pub
-- заходим на удаленный хост по ssh
> ssh -l USERID HOST
нас спросят пароль, мы ответим PASSWORD и попадем в свой $HOME,
где лежит наш identity.pub. Теперь мы создаем подкаталог .ssh/
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
и копируем содержимое identity.pub в ~/.ssh/authorized_keys
$ cat identity.pub > .ssh/authorized_keys
$ chmod 600 ~/.ssh/*
Теперь мы можем коннектиться по ssh не набирая паролей
> ssh -l USERID HOST
Если лень набирать -l USERID, заводим локально файл
$HOME/.ssh/config и прописываем в нем две строки
host=HOST
user=USERID
ssh будет автоматом добавлять -l USERID для хоста HOST. Таких пар в
$HOME/.ssh/config может быть несколько (man ssh).
-- проверяем, как все это работает
> ssh HOST 'echo $PATH'
нам должны ответить типа
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
или что-то похожее, как у кого заведено. На строку
> ssh HOST 'which cvs'
нам должны ответить типа
/usr/local/bin/cvs
Если ничего не ответит -- там cvs не установлен.

5. Теперь настраиваем локально работу CVS.
-- Устанавливаем среду. Надо установить CVSROOT, CVS_RSH и LOGNAME.
Это можно сделать глобально в config.sys или в $HOME/.bashrc.
CVSROOT - указывает на расположение репозитория и метод доступа к нему.
LOGNAME - транслируется в USERID
CVS_RSH - указывает на программу, которая вызывается вместо rsh при
запуске cvs. Запускаться должен ssh.exe, однако есть проблема в том,
что в OS/2 cvs вызывает CVS_RSH так:
cvs: $CVS_RSH HOST -b -l USERID cvs server
что не в синтаксисе ssh и простой подстановкой ssh.exe не обойтись.
Чтобы побороть это надо написать скрипт ssh-wrapper в одну строку и
поместить его рядом с ssh.exe. У меня он выглядит так
--- ssh-wrapper ------------
#!sh
d:/usr/bin/ssh.exe $1 cvs server
exit
--- ssh-wrapper ------------
В .bashrc я поместил строки:

export CVS_RSH="d:/usr/bin/ssh-wrapper"
export CVSROOT=":ext:USERID@HOST:/home/USERID/cvsfiles"
export HOME="d:/home" # у меня в config.sys HOME=d:\home
export LOGNAME="USERID"

Теперь заходим на HOST
> ssh HOST
Создаем там каталог по репозиторий
$ mkdir cvsfiles
Теперь с локальной машины мы можем работать с этим репозиторием как обычно.

> cvs init
> cvs import -m "" import_dir first second
> cvs co import_dir
...

Вот и все.

Прошу прощения за навязчивость и нестройность изложения.


набираем

Tue 12 Oct 2004 23:24 Mozilla/5.0 (OS/2; U; Warp 4.5; en-US; rv:1.6) Gecko/2004060




Programmed by Dmitri Maximovich, Dmitry I. Platonoff, Eugen Kuleshov.
25.09.99 (c) 1999, RU/2. All rights reserved.
Rewritten by Dmitry Ban. All rights ignored.