(svn+ssh) удар получения для загрузки моего ПУТИ по SSH

Удостоверьтесь, что Вы не установили полномочия файла на 'chmod 777', поскольку некоторые руководства сделают, чтобы Вы сделали. Пройдите и посмотрите на что-либо, Ваша учетная запись веб-сервера или группа могут записать в и гарантировать, что они - только области, Вы ожидаете быть динамично обновленными (изображения, вложения, и т.д.).

6
задан 9 April 2010 в 23:31
6 ответов

Как это происходит, .bashrc и .bash_profile только выполняются, если Вы находитесь в интерактивной оболочке. Когда Вы входите в систему через ssh, Вы не находитесь в интерактивной оболочке, поэтому Ваше пользовательское PATH определения никогда не выполняются. Можно связать сценарий к неинтерактивному использованию летних горных пастбищ BASH_ENV. Проверьте также .ssh/environment который дает Вам другую альтернативу. Лучший способ знать об этом путем выполнения man ssh.

Удачи!

3
ответ дан 3 December 2019 в 00:20
  • 1
    Извините, но я отметил это .ssh/environment didn' t работают на меня. Какие-либо подсказки того, что записать там? Кроме того, у меня создалось впечатление, что .bashrc включен в неинтерактивные оболочки. Иначе, как мой ПУТЬ дан правильно через ssh? (повторите $PATH)? –  Eli Bendersky 9 April 2010 в 11:20

Можно попытаться запустить команду через удар с помощью команды-l, таким образом, это действует как оболочка входа в систему

ssh user@server "bash -l -c 'which svnserve'"

Как отмечено в комментариях я уехал выше, необходимо будет выйти из всего $, таким образом, на переменных подробно остановятся сервер и не локально. Например:

ssh user@server "bash -l -c 'echo \$PATH'"

обновление:

Относительно Вас вопрос на том, почему .ssh/environment не вступает в силу, я полагаю, что конфигурация по умолчанию для SSHd состояла бы в том, чтобы проигнорировать пользовательские среды. Необходимо конкретно включить его в/etc/ssh/sshd_config (или подобный) и добавить:

PermitUserEnvironment yes

обновление 2:

Если бы у Вас нет доступа к/etc/ssh/sshd_config, возможное (но не идеальный), решение состояло бы в том, чтобы использовать аутентификацию с открытым ключом для запуска svnserve на входе в систему.

См. http://svnbook.red-bean.com/en/1.4/svn.serverconfig.svnserve.html#svn.serverconfig.svnserve.sshtricks

Обратите внимание, что это будет влиять на Вашу способность обычно входить в систему через SSH. Для этого необходимо обойти аутентификацию с открытым ключом:

svn -o PubkeyAuthentication=no user@server
4
ответ дан 3 December 2019 в 00:20
  • 1
    Спасибо, это имеет смысл. К сожалению, это все еще doesn' t разрешают мою исходную проблему, которая работает svnserve через SSH. по некоторым причинам ssh, игнорирует мой .ssh/environemnt файл и любую попытку, которую я пробую –  Eli Bendersky 9 April 2010 в 11:57
  • 2
    Ответ @Eli, обновленный для обращения к проблеме .ssh/environment –  Shawn Chin 9 April 2010 в 15:58
  • 3
    Oopps.. просто уведомления, что @Dennis уже указал на Вас тот путь. Извинения за повторение. –  Shawn Chin 9 April 2010 в 15:59
  • 4
    Спасибо. К сожалению, так как это - общий сервер, у меня нет доступа к/etc/ssh/sshd_config. Но от тестов я работал, это появляется эта переменная действительно isn' t набор, потому что ssh игнорирует мой файл среды наверняка –  Eli Bendersky 9 April 2010 в 16:01

Можно выполнить огибающую команду:

ssh servername "env PATH=$REMOTEPATH which svnserve"
1
ответ дан 3 December 2019 в 00:20
  • 1
    после добавления точки с запятой прежде which, это говорит: which: no svnserve in (/usr/bin:/bin) –  Eli Bendersky 9 April 2010 в 12:09
  • 2
    @Eli: никакая точка с запятой - который является аргументом ENV –  Charles Stewart 9 April 2010 в 21:01

У меня есть та же проблема с HostMonster, из-за недавнего изменения, которое они внесли. Я нашел workraound в старом почтовом потоке по http://svn.haxx.se/dev/archive-2007-02/0204.shtml:

На Вашей рабочей станции:

  • править ~/.subversion/config: найдите [туннелирует], и добавьте строку ssh = ~/svnssh
  • создайте ~/svnssh как в ссылке:

    #!/bin/sh
    /usr/bin/ssh $1 /<ur_bluhost_home_path>/sshsvnserve -t

  • chmod +x ~/svnssh

На Вашей учетной записи bleuhost:

  • создать ~/sshsvnserve, то же содержание как ссылка:

    #!/bin/sh
    /<ur_bluehost_home_path>/bin/svnserve $*

  • chmod +x ~/sshsvnserve

Именно. Конфигурация [туннели] изменение изменяет команду, выполненную svn при обработке svn+ssh пространства имен, и используйте ~/svnssh сценарий вместо этого. Сценарий вызывает ssh и передает в полном пути sshsvnserve на Вашей учетной записи bluehost. И sshsvnserve перенаправляет все к полному пути svnserve, поскольку u устанавливают его. Работавший для меня, никакой $PATH не требуется.

1
ответ дан 3 December 2019 в 00:20

Установите переменную BASH_ENV кому: '~/.bashrc'.

ssh servername "BASH_ENV='~/.bashrc' which svnserve"

От man bash:

Когда удар вызывается как интерактивная оболочка входа в систему, или как непредавание земле ‐ активная оболочка с - опция входа в систему, это сначала читает и выполняет com ‐ NAND из файла/etc/profile, если тот файл существует. После чтения того файла это ищет ~/.bash_profile, ~/.bash_login и ~/.profile, в том порядке, и читает и выполняет команды от первой, которая существует и читаема.

и

Когда интерактивная оболочка, которая не является оболочкой входа в систему, запускается, удар читает и выполняет команды от/etc/bash.bashrc и ~/.bashrc, если эти файлы существуют.

и

То, когда удар запускается нев интерактивном режиме, для выполнения сценария оболочки, например, он ищет переменный BASH_ENV в среде, разворачивает ее значение, если это появляется там и использует расширенное значение в качестве названия файла, чтобы читать и выполниться.

От man ssh:

Кроме того, ssh читает ~/.ssh/environment и добавляет строки формата “VARNAME=value” к среде, если файл существует, и пользователям разрешают изменить их среду. Для получения дополнительной информации посмотрите опцию PermitUserEnvironment в sshd_config (5).

От man sshd_config:

PermitUserEnvironment
Указывает, обрабатываются ли ~/.ssh/environment и среда = опции в ~/.ssh/authorized_keys sshd (8). Значение по умолчанию является "нет". Включение обработки среды может позволить пользователям обойти ограничения доступа в некоторых конфигурациях с помощью механизмов, таких как LD_PRELOAD.

0
ответ дан 3 December 2019 в 00:20
  • 1
    @Dennis, да, это - как я ожидал бы. Однако в моем случае я ясно вижу, что .bashrc не загружается. Кроме того, ~/.ssh/environment проигнорирован. Я могу прийти к заключению, что Bluehost (мой поставщик сервера) настроил его этот путь, который очень неудачен. P.S. строка с BASH_ENV doesn' t работают на меня –  Eli Bendersky 9 April 2010 в 14:03

Мне удалось заставить ssh запускать команды, используя удаленный путь, запустив:

ssh dist@d6 "bash --login -c 'env'"

Это загружает удаленный .profile и т. Д. Здесь env можно заменить любой командой, которую вы когда-либо использовали например.

У меня есть авторизованные ключи, поэтому мне не нужен пароль для запуска команды или ssh.

0
ответ дан 3 December 2019 в 00:20

Теги

Похожие вопросы