Какие команды мерзавец использует при передаче через ssh?

Проблема с split --filter это, вывод может быть перепутан, таким образом, Вы получаете половину строки от процесса 1 сопровождаемый наполовину строка от процесса 2.

Параллель GNU гарантирует, что не будет никакой путаницы.

Поэтому предположите, что Вы хотите сделать:

 A | B | C

Но это, B является ужасно медленным, и таким образом Вы хотите параллелизировать это. Затем можно сделать:

A | parallel --pipe B | C

Параллель GNU разделениями по умолчанию на \n и размере блока 1 МБ. Это может быть скорректировано с - недавний и - блок.

Можно найти больше о Параллели GNU в: http://www.gnu.org/s/parallel/

Можно установить Параллель GNU всего за 10 секунд с:

wget -O - pi.dk/3 | sh 

Посмотрите вводное видео на http://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

5
02.07.2014, 02:04
2 ответа

Git включает в себя команду git-shell , подходящую для использования в качестве оболочки для входа в систему только для Git'а. Он принимает точно следующие команды:

git receive-pack
. gite-загрузка-пак
git-загрузка-архив
git-receive-pack
git-upload-pack
git-upload-archive
cvs-сервер (используется для эмуляции CVS-сервера, и не требуется для Git-протокола)

Так что это единственные команды, которые вам нужно разрешить. Каждая версия Git'а, к которой у меня есть доступ, использует только дефисные версии.

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


Вы можете проверить, что Git запускает для какой-либо конкретной команды, установив GIT_SSH в шимпель, который повторяет аргументы. Создайте скрипт ssh.sh:

#!/bin/bash
echo "$@" >&2

Затем запустите:

GIT_SSH="./ssh.sh" git push

и вы увидите удалённую команду, которую он пытался выполнить.

.
9
27.01.2020, 20:35

Если вы не хотите использовать учетную запись пользователя для чего-либо еще, вы можете просто запустить chshдля пользователя и выбрать/usr/bin/git-shell(или где он расположен )в качестве оболочки входа для пользователя.

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

Создайте файл, например, в домашнем каталоге (целевого хоста )с именем git-ssh-remote-command, содержащий:

#!/bin/sh
exec git-shell -c "$SSH_ORIGINAL_COMMAND"

Запустите chmod a+rx /path/to/git-ssh-remote-command, чтобы сделать его исполняемым, а затем используйте его в файле .ssh/authorized_keysдля ключа, который вы хотите ограничить доступом только для git -, например:

restrict,command="/path/to/git-ssh-remote-command" ssh-dss 1478912c844...

С помощью скрипта это ограничит ключ для выполнения только команд, разрешенных оболочкой git -.

ПРИМЕЧАНИЕ.:По умолчанию оболочка git -не позволяет использовать дополнительные команды, необходимые, например, для. git -лфс; см. man git-shellдля получения инструкций, как это сделать, если это необходимо.

1
27.01.2020, 20:35

Теги

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