Соединение с gitosis сервером через туннель SSH

Поскольку все уже сказали это здесь: ответвление не мертво и соглашается на ответвление, может продолжиться очень хорошо.

Иногда, хотя Вы хотите уничтожить ответвление после слияния. Единственное надежно решение должно удалить ответвление. Оборотная сторона - то, что затем более трудно найти ответвление снова, если Вы хотели взглянуть на него, скажем, по историческим причинам. Так, многие люди разбрасывают "важную" ложь ответвлений и наличие соглашения о не изменении их. Мне жаль, что не было способа отметить мертвое/только для чтения ответвление, таким образом гарантируя, что никто не может согласиться на него до следующего приказа.

10
задан Matt Mencel 14 August 2009 в 04:18
поделиться

4 ответа

Продолжение:

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

Итак, сегодня я просто удалил и переустановил пакет gitosis на моем компьютере с CentOS5.

yum remove gitosis
rm -rf /var/lib/gitosis
yum install gitosis
sudo -H -u gitosis gitosis-init < /tmp/id_rsa.gitosis.pub  #the correct key

На моем Mac я SSH-туннель localhost: 22222 через межсетевой экран на gitosis-server: 22.

$ ssh -o ServerAliveInterval=3 -N -L 22222:gitosis-server:22 user@firewall.domain.com

На моем Mac я создал ~ / .ssh / config, который выглядит так ...

Host gitosis-server
Hostname localhost
IdentityFile ~/.ssh/id_rsa.gitosis
HostKeyAlias gitosis-server.domain.com
  Port 22222

Тогда ... следуя инструкциям на этом сайте ...

http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way

... все после ... "Здесь происходит какое-то классное волшебство. Запустите это на своем локальном компьютере:" ... просто работает ... только не забудьте заменить имя пользователя "git" на "гитозис".

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

Мэтт

3
ответ дан 4 December 2019 в 02:26
поделиться

Моя настройка для аналогичной ситуации (работает)

У меня есть аналогичная настройка для repo.or.cz (который по какой-то причине заблокирован нулевым маршрутом интернет-провайдером, который я использую, польским интернет-провайдером Telekomunikacja SA (tpnet)), и у меня это работает:

Я запускаю следующую команду, чтобы настроить туннель SSH перед попыткой подключения:

$ autossh -M 20000 -f -N -L 2222:repo.or.cz:22 user@gateway.example.com

(я использую autossh вместо ssh для повторного подключения, если я отключен, то есть для поддержания соединения). Убедитесь, что в агент аутентификации SSH добавлены соответствующие идентификаторы:

$ ssh-add -l
2048 d7:d3:69:f5:0f:f9:5e:aa:e0:0b:28:c2:03:42:09:66 /home/user/.ssh/id_dsa_gateway.example.com (DSA)
1024 11:a2:29:fe:37:12:a7:33:c4:23:b0:e1:82:92:e0:6a /home/user/.ssh/id_dsa_repo.or.cz (DSA)

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

У меня есть следующие настройки в моем ~ / .ssh / config :

Host repo.or.cz
        # NoHostAuthenticationForLocalhost yes
        HostName localhost
        Port 2222

У меня эта настройка работает без проблем.


Отладка вашей ситуации

Что касается отладки вашей ситуации?

Во-первых, я бы проверил, могу ли я войдите в шлюз, используя "ssh"user@firewall.domain.com", to check if SSH tunnel can be set up. If you are on Linux you can use for example netstat --tcp to check if there is connection established to gateway; on other operating systems and environments you can find similar utilities.

Check if you can connect correctly to gitosis. (If I remember correctly gitorious is using gitosis for managing access via SSH, so I used response from gitorious in example below)

$ ssh gitosis@gitosis-server
Need SSH_ORIGINAL_COMMAND
                             Connection to  closed.

If it doesn't do something similar to above (repo.or.cz returns "fatal: What do you think I am? A shell?", GitHub returns "Hi user! You've successfully authenticated, but GitHub does not provide shell access."), check where it fails with "ssh -v gitosis@gitosis-server":

$ ssh -v gitosis@gitosis-server
[...]
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering public key: /home/user/.ssh/id_dsa_gitosis-server
debug1: Remote: Forced command: gitosis-server user
[...]
debug1: Authentication succeeded (publickey)
2
ответ дан 4 December 2019 в 02:26
поделиться

Вам нужно будет вернуть несколько фрагментов информации для вашего ответа. К счастью, вы можете легко сделать это с помощью JSON, и jQuery автоматически обработает его за вас, если вы укажете тип ответа json. Объект, который вы добавляете в свою функцию обратного вызова ajax, будет содержать все необходимые вам фрагменты данных в виде различных свойств.

Я бы посоветовал выработать привычку возвращать код состояния «успех» или «сбой» при каждом вызове ajax. , и набор ошибок с ним. См. Этот замечательный пост в блоге для получения дополнительной информации о том, что я имею в виду.

Причина этого в том, что вызов ajax всегда будет в основном «успешным», если только сервер действительно не сможет обработать запрос и не вернет код состояния HTTP сбоя. Если результатом запроса является что-то вроде ошибки проверки, но сервер по-прежнему возвращает какой-то текстовый ответ, тогда вызов ajax по-прежнему считается успешным, даже если операция приложения не удалась.

Итак, если в вашем action, вместо того, чтобы возвращать ваши html-данные в результате действия, если вы вернули такой объект:

public class AjaxResponse
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="AjaxResponse"/> class.
        /// This creates an AjaxResponse that by default indicates SUCCESS.
        /// </summary>
        public AjaxResponse()
        {
            Success = true;
            Data = new List<object>();
        }

        /// <summary>
        /// Initializes a new instance of the <see cref="AjaxResponse"/> class.
        /// This creates an AjaxResponse that indicates FAILURE.
        /// </summary>
        /// <param name="exception">The exception.</param>
        public AjaxResponse(Exception exception)
            : this()
        {
            Success = false;
            Errors = new [] { exception.Message };
        }

        /// <summary>
        /// Initializes a new instance of the <see cref="AjaxResponse"/> class.
        /// This creates an AjaxResponse that indicates SUCCESS.
        /// </summary>
        /// <param name="data">The data.</param>
        public AjaxResponse(object data)
            : this()
        {
            Data = data;
        }

        /// <summary>
        /// Gets or sets a value indicating whether this <see cref="AjaxResponse"/> is success.
        /// </summary>
        /// <value><c>true</c> if success; otherwise, <c>false</c>.</value>
        public bool Success
        {
            get; set;
        }

        /// <summary>
        /// Gets or sets the data.
        /// </summary>
        /// <value>The data.</value>
        public object Data
        {
            get; set;
        }

        /// <summary>
        /// Gets or sets the errors.
        /// </summary>
        /// <value>The errors.</value>
        public string[] Errors
        {
            get; set;
        }
    }

Это преобразуется в объект javascript, который имеет свойства «.Success», «.Data» и «.Errors». этот объект, чтобы получить рекомендованный прямоугольники рамки для вашего ssh -v сообщит вам, так ли это в вашей ситуации.

Edit

Похоже, что сервер sshd не принимает вашу личность. Я не знаю, есть ли у вас доступ к удаленному серверу, но запуск сервера sshd в режиме отладки может помочь.

Выполнение чего-то подобного разрешает одно соединение с данным портом (так что это не не прерывает нормальную службу sshd ) и выводит отладочную информацию. Это может помочь в отладке, почему серверу не нравится ваша личность.

sshd -d -p 2022

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

но запуск сервера sshd в режиме отладки может помочь.

Выполнение чего-то подобного разрешает одно соединение с заданным портом (так что это не прерывает нормальную службу sshd ) и выводит отладочную информацию. Это может помочь в отладке, почему серверу не нравится ваша личность.

sshd -d -p 2022

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

но запуск сервера sshd в режиме отладки может помочь.

Выполнение чего-то подобного разрешает одно соединение с заданным портом (так что это не прерывает нормальную службу sshd ) и выводит отладочную информацию. Это может помочь в отладке, почему серверу не нравится ваша личность.

sshd -d -p 2022

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

2
ответ дан 4 December 2019 в 02:26
поделиться

Вы говорите, что можете успешно использовать ssh на localhost: 2222 . Чтобы проверить, что вы настроили ~ / .ssh / config правильно, можете ли вы использовать ssh только на gitosis-server ?

ssh gitosis-server
1
ответ дан 4 December 2019 в 02:26
поделиться
Другие вопросы по тегам:

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