LINUX.ORG.RU

git: сервер под linux, клиент под windows

 , ,


0

1

Привет всем! Прочитал настройку сервера. Никогда ранее не работал с ssh. Установил пакет openssh, для винды скачал клиент bitvise - связь установить удалось по паролю и по ip, по имени хоста почему-то не нашёл. Сгенерировал ключи, создал папку в /opt, где у меня будет храниться репозиторий. Что дальше - не понимаю. Прошу помочь. Сервер arch linux x64, клиент windows 7 x64

Когда-то очень давно, в эпоху cvs настраивал на w2k ssh - всё достигалось кучей каких-то нюансов и оговорок из разных howto/readme/subscribe lists, но работало.

Многое базировалось на переменных окружения. В общем RTFM.

Могут быть полезными эти утилиты http://unxutils.sourceforge.net/ или что-то подобное и посвежее.

anonymous
()
Ответ на: комментарий от anonymous

Вроде под виндой с git идёт часть этих утилит. Люди, переходите все на линукс....

heaven__12
() автор топика

Что именно там непонятно? Как ключи добавить? Берёшь открытый ключ и дописываешь его в файл authorized_keys, всё.

Виндовый клиент - рекомендую TortoiseGit (сам работал с TortoiseHg, но они должны быть практически идентичны).

tiandrey ★★★★★
()
Ответ на: комментарий от tiandrey

authorized_keys в папке /home/git/.ssh/, верно? Это я сделал. Мне это позволило подсоединиться с помощью bitvise под виндой. Что теперь нужно сказать git, чтобы он начал заливать коммиты? Я использую версию с git-scm.com. Других версий не пробовал. Даже не представляю, чем они могут отличаться. Подозревал, что моя должна уметь всё.

heaven__12
() автор топика
Ответ на: комментарий от heaven__12

Ты вообще понимаешь, как устроена работа с репозиториями?

Для начала - ты не поверишь! - нужно _создать_ репозиторий.

создал папку в /opt, где у меня будет храниться репозиторий

Чтобы создать репозиторий, нужно в этой папке сделать git init.

Дальше на своём клиентском компе ты _клонируешь_ этот репозиторий и работаешь с ним с помощью pull-commit-push-whatever.

tiandrey ★★★★★
()
Ответ на: комментарий от tiandrey

Кстати, попутно хотел спросить. Вот я сделал этот authorized_keys для пользователя git. Смог залогиниться по ssh от его лица. При соединении я ввожу пароль пользователя git. Нормально ли это? Я подозревал, что должно быть соединение по какому-то ключу или т.п. А ещё создал пары ключей для пользователя dmitriy, перезапустил sshd, но от его лица соединиться я почему-то не смог. Пишет

Authentication failed. Remaining authentication methods: 'publickey,password'.
И предлагает ввести заново пароль. Ввожу и всё снова по циклу. Что не так?

heaven__12
() автор топика
Ответ на: комментарий от heaven__12

Почитай про шифрование, симметричное и асимметричное.

Чтобы использовать аутентификацию по ключу, подключающийся пользователь должен иметь закрытый ключ, а на сервере соответствующий открытый ключ должен быть добавлен в authorized_keys. Как правило, сначала ssh пробует аутентифицироваться как раз по ключу.

tiandrey ★★★★★
()
Ответ на: комментарий от heaven__12

Вкратце про настройку доступа в SSH:

1) есть пользователь, который хочет подключаться. У него может быть одна или более пара ключей (открытый и закрытый).

2) есть удалённый компьютер, на который пользователь хочет подключиться, и на нём есть удалённый пользователь, под именем которого ты хочешь подключиться.

Соответственно, чтобы ты из-под своего пользователя мог подключиться на сервер под именем пользователя vpupkin, либо ты должен знать пароль этого пользователя, либо один из открытых ключей твоего пользователя должен быть добавлен в файл authorized_keys удалённого пользователя.

Если ты хочешь подключаться без пароля под именем нескольких пользователей, то тебе нужно добавить свой открытый ключ каждому из них.

tiandrey ★★★★★
()
Ответ на: комментарий от tiandrey

Спс. Начал соединяться, но выдает вот что

P:\QtProjects\Master>git push
warning: push.default is unset; its implicit value is changing in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the current behavior after the default changes, use:

  git config --global push.default matching

To squelch this message and adopt the new behavior now, use:

  git config --global push.default simple

When push.default is set to 'matching', git will push local branches
to the remote branches that already exist with the same name.

In Git 2.0, Git will default to the more conservative 'simple'
behavior, which only pushes the current branch to the corresponding
remote branch that 'git pull' uses to update the current branch.

See 'git help config' and search for 'push.default' for further information.
(the 'simple' mode was introduced in Git 1.7.11. Use the similar mode
'current' instead of 'simple' if you sometimes use older versions of Git)

git@10.78.21.18's password:
No refs in common and none specified; doing nothing.
Perhaps you should specify a branch such as 'master'.
fatal: The remote end hung up unexpectedly
error: failed to push some refs to 'ssh://git@10.78.21.18/opt/git/project.git'
Я читал про элис, боб и еву, но не понимаю, откуда у винды должен появиться ключ и как его применить. В принципе, думаю, что вскоре перечитаю устройство - разберусь.

heaven__12
() автор топика
Ответ на: комментарий от heaven__12

Я читал про элис, боб и еву, но не понимаю, откуда у винды должен появиться ключ и как его применить.
Сгенерировал ключи

Читай внимательно то, что я выше написал.

Генерируется пара ключей: закрытый и открытый. _Закрытый_ кладёшь тому, кто будет _подключаться_. _Открытый_ добавляешь тому пользователю, _к которому будешь подключаться_.

Почитай, как настроить твой git-клиент на винде так, чтобы он использовал авторизацию по ключу.

tiandrey ★★★★★
()
Ответ на: комментарий от heaven__12

Git не любит додумывать за пользователя. Если ты создаёшь новую ветку, ты должен сказать, что пушишь именно её.

В данном случае тебе должно быть достаточно написать

git push master

tiandrey ★★★★★
()
Ответ на: комментарий от heaven__12

У меня всё получилось надо было в клиенте написать

git push origin master
По ssh, конечно, я сырой - подтянусь. спасибо.

heaven__12
() автор топика
Ответ на: комментарий от heaven__12

May the Force be with you.

// поставь галку «решено», если вопросов не осталось.

tiandrey ★★★★★
()

в настройки на клиенте пишешь через git config или ~/.gitconfig:

[core]
        autocrlf = false

для русских букв, в ~/.inputrc пишешь

# disable/enable 8bit input
set meta-flag on
set input-meta on
# set output-meta off
set output-meta on
 set convert-meta on
##set convert-meta off

закомментированное выберешь по вкусу.

да, и ставишь на клиенте нормальный Git — msysgit с bash или уже сразу msys2 и через него git (там вроде бы более свежий).

чтобы в винде был нормальный шелл. затем настраиваешь bash в ~/.inputrc и ~/.gitconfig.

в msys2 есть pacman как в арче, можно использовать его (например, pacman -Ss git; pacman -S чтонайдёт; pacman -Suy для обновления всех пакетов).

в целом, всё работает. даже commit для docx и odt показывает через нормальный git diff, текстом.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.