3

Это мой первый раз с Git, и я пытаюсь установить его на своей коробке. Я добавил свой ключ в свой профиль в веб-интерфейсе Github. Когда я пытаюсь подключиться ...:

max@linux-vwzy:~> ssh git@github.com
The authenticity of host 'github.com (207.97.227.239)' can't be established.
RSA key fingerprint is xx
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,207.97.227.239' (RSA) to the list of known hosts.
PTY allocation request failed on channel 0

max@linux-vwzy:~> ssh-add ~/.ssh/id_rsa
Identity added: /home/max/.ssh/id_rsa (/home/max/.ssh/id_rsa)

max@linux-vwzy:~> ssh git@github.com
PTY allocation request failed on channel 0

Я должен получить какое-то приветственное сообщение, однако, нет.

1 ответ1

8

Когда вы запускаете ssh git@github.com в обычной терминальной среде, ваш SSH-клиент (процесс ssh на вашем локальном компьютере) запросит psuedo-терминал (pty) с сервера.

GitHub всегда отрицал распределение pty.

Более старые версии (до 5.6) ssh OpenSSH будут «переходить» в режим no-pty, если сервер отклонит свой запрос выделения pty.

Более новые версии (5.6 - 5.8) ssh прерывания OpenSSH, если сервер отклоняет свой запрос на выделение pty.

Последние версии (5.9 и более поздние) ssh OpenSSH будут выполнять первое действие (продолжить), если pty-распределение было выполнено автоматически, и последнее действие (прервать), если был явный запрос для pty (задано -t или равно RequestTTY yes/force).

Вы можете указать ssh (старый или новый), чтобы он не запрашивал pty-распределение, используя опцию -T :

ssh -T git@github.com

Затем вы должны увидеть сообщение GitHub:

Привет, <имя пользователя>! Вы успешно прошли аутентификацию, но GitHub не предоставляет доступ к оболочке.


Из объявления о выпуске OpenSSH 5.6:

  • Убить канал, когда pty запросы на выделение не будут выполнены. Исправлено зависание клиента, если сервер отказывает в распределении pty (bz # 1698)

bz#1698 кажется, является ссылкой на отчет, зарегистрированный в «Portable OpenSSH» Bugzilla.


Из сообщения о регистрации OpenSSH clientloop.c rev 1.234:

улучшите наше поведение при неудачном выделении TTY: если мы находимся в RequestTTY = автоматический режим (по умолчанию), то при ошибке выделения TTY не относимся к фатальным, а просто возвращаем локальный TTY в готовый режим и продолжаем. Это более изящно на устройствах, которые никогда не выделяют TTY.

Если RequestTTY установлен в "yes" или "force", то неудача в выделении TTY является фатальной.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .