Удостоверьтесь git-upload-pack
, находится на пути от оболочки невхода в систему. (На моей машине это находится в /usr/bin
).
Для наблюдения, на что путь похож на удаленной машине от оболочки невхода в систему попробуйте это:
ssh you@remotemachine echo \$PATH
(Который работает в Bash, Zsh, и tcsh, и вероятно других оболочках также.)
, Если путь это отдает, не включает каталог, который имеет git-upload-pack
, необходимо зафиксировать его путем установки его в .bashrc
(для Bash), .zshenv
(для Zsh), .cshrc
(для tcsh) или эквивалентный для оболочки.
необходимо будет внести это изменение на удаленной машине.
, Если Вы не уверены, которые соединяют Вас каналом, должен добавить к Вашему удаленному PATH
, можно найти его с этой командой (необходимо выполнить это на удаленной машине):
which git-upload-pack
На моей машине, которая печатает /usr/bin/git-upload-pack
. Так в этом случае, /usr/bin
путь, необходимо удостовериться, находится в удаленной оболочке невхода в систему PATH
.
Как Johan, на которого указывают много раз его .bashrc, это необходимо:
-s .bash_profile .bashrc
линииЯ нашел и использовал (успешно) эту фиксацию:
# Fix it with symlinks in /usr/bin
$ cd /usr/bin/
$ sudo ln -s /[path/to/git]/bin/git* .
Благодаря Paul Johnston .
Для удара это должно быть помещено в .bashrc не .bash_profile (.bash_profile, также только для оболочек входа в систему).
Решение Matt не работало на меня на OS X, но Paul сделал.
короткая версия из ссылки Paul:
Созданный /usr/local/bin/ssh_session
со следующим текстом:
#!/bin/bash
export SSH_SESSION=1
if [ -z "$SSH_ORIGINAL_COMMAND" ] ; then
export SSH_LOGIN=1
exec login -fp "$USER"
else
export SSH_LOGIN=
[ -r /etc/profile ] && source /etc/profile
[ -r ~/.profile ] && source ~/.profile
eval exec "$SSH_ORIGINAL_COMMAND"
fi
Выполнитесь:
chmod +x /usr/local/bin/ssh_session
Добавляют следующее к /etc/sshd_config
:
ForceCommand/usr/local/bin/ssh_session
Я получил эти ошибки с версией MsysGit.
После следования всему совету я мог найти здесь и в другом месте, я закончил:
установка версии Cygwin Мерзавца
на сервере (Выигрывают XP с Cygwin SSHD), это наконец зафиксировало его.
Я все еще использую сторону клиента версии MsysGit
.. на самом деле это - единственный способ, которым это работает на меня, так как я получаю ошибки POSIX с получением по запросу Мерзавца Cygwin с того же самого sshd сервера
Я подозреваю, что некоторая работа все еще необходима эта сторона использования Мерзавца.. (ssh+ease получения по запросу/нажатия в Windows)
Для zsh вам нужно поместить его в этот файл: ~ /. zshenv
Например, в OS X с использованием пакета git-core из MacPorts:
$ echo 'export PATH = / opt / local / sbin: / opt / local / bin: $ PATH'> ~ / .zshenv
Вы также можете использовать параметр «-u», чтобы указать путь. Я считаю это полезным на машинах, где мой .bashrc не загружается в неинтерактивных сеансах. Например,
git clone -u /home/you/bin/git-upload-pack you@machine:code
Mac OS X и некоторые другие системы Unix по крайней мере имеют путь пользователя, скомпилированный в sshd по соображениям безопасности, поэтому те из нас, кто устанавливает git как / usr / local / git / {bin, lib, ...}, могут столкнуться с проблемами поскольку исполняемые файлы git не находятся в предварительно скомпилированном пути. Чтобы переопределить это, я предпочитаю отредактировать мой / etc / sshd_config, изменив:
#PermitUserEnvironment no
на
PermitUserEnvironment yes
, а затем при необходимости создать файлы ~ / .ssh / environment. У моих пользователей git в файле ~ / .ssh / environment есть следующее:
PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/git/bin
Обратите внимание, что расширение переменной не происходит при чтении файла ~ / .ssh / environment, поэтому:
PATH=$PATH:/usr/local/git/bin
не будет работать.