qual é o comando SSH apropriado para fazer login no Github

2

Depois de seguir os roteiros padrão para configurar um ambiente do github, eu rapidamente encontro erros. Eu gosto de ver estes esclarecidos. Eu coloquei uma questão mais detalhada abaixo após o código garbl que o terminal cospe.

os passos que segui para criar um par de chaves SSH são os seguintes:

ssh-keygen -t rsa -C "[email protected]"

para testar a conexão

ssh [email protected]

a saída do teste é:

PTY allocation request failed on channel 0

Eu não sei o que isso significa mas, como eu entendo, o sinalizador -v gerará informações de depuração

 ssh -v [email protected]            
OpenSSH_5.6p1, OpenSSL 0.9.8r 8 Feb 2011
debug1: Reading configuration data /etc/ssh_config
debug1: Applying options for *
debug1: Connecting to github.com [204.232.175.90] port 22.
debug1: Connection established.
debug1: identity file /Users/redres/.ssh/id_rsa type 1
debug1: identity file /Users/redres/.ssh/id_rsa-cert type -1
debug1: identity file /Users/redres/.ssh/id_dsa type -1
debug1: identity file /Users/redres/.ssh/id_dsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.5p1 Debian-6+squeeze1+github12
debug1: match: OpenSSH_5.5p1 Debian-6+squeeze1+github12 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.6
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host 'github.com' is known and matches the RSA host key.
debug1: Found key in /Users/redres/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/redres/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug1: Authentication succeeded (publickey).
Authenticated to github.com ([204.232.175.90]:22).
debug1: channel 0: new [client-session]
debug1: Requesting [email protected]
debug1: Entering interactive session.
debug1: Remote: Forced command: gerve Richnl a7:d7:de:d3:80:a9:9f:be:02:88:74:50:0c:1e:5e:bc
debug1: Remote: Port forwarding disabled.
debug1: Remote: X11 forwarding disabled.
debug1: Remote: Agent forwarding disabled.
debug1: Remote: Pty allocation disabled.
debug1: Remote: Forced command: gerve Richnl a7:d7:de:d3:80:a9:9f:be:02:88:74:50:0c:1e:5e:bc
debug1: Remote: Port forwarding disabled.
debug1: Remote: X11 forwarding disabled.
debug1: Remote: Agent forwarding disabled.
debug1: Remote: Pty allocation disabled.
debug1: Sending environment.
debug1: Sending env LC_CTYPE = 
PTY allocation request failed on channel 0

que não me deu nada de útil, porque eu não entendo mais do que isso mas depois de usar o google eu usei o flag -vT com a seguinte saída

ssh -vT [email protected]
OpenSSH_5.6p1, OpenSSL 0.9.8r 8 Feb 2011
debug1: Reading configuration data /etc/ssh_config
debug1: Applying options for *
debug1: Connecting to github.com [204.232.175.90] port 22.
debug1: Connection established.
debug1: identity file /Users/redres/.ssh/id_rsa type 1
debug1: identity file /Users/redres/.ssh/id_rsa-cert type -1
debug1: identity file /Users/redres/.ssh/id_dsa type -1
debug1: identity file /Users/redres/.ssh/id_dsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.5p1 Debian-6+squeeze1+github12
debug1: match: OpenSSH_5.5p1 Debian-6+squeeze1+github12 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.6
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host 'github.com' is known and matches the RSA host key.
debug1: Found key in /Users/redres/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/redres/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug1: Authentication succeeded (publickey).
Authenticated to github.com ([204.232.175.90]:22).
debug1: channel 0: new [client-session]
debug1: Requesting [email protected]
debug1: Entering interactive session.
debug1: Remote: Forced command: gerve Richnl a7:d7:de:d3:80:a9:9f:be:02:88:74:50:0c:1e:5e:bc
debug1: Remote: Port forwarding disabled.
debug1: Remote: X11 forwarding disabled.
debug1: Remote: Agent forwarding disabled.
debug1: Remote: Pty allocation disabled.
debug1: Remote: Forced command: gerve Richnl a7:d7:de:d3:80:a9:9f:be:02:88:74:50:0c:1e:5e:bc
debug1: Remote: Port forwarding disabled.
debug1: Remote: X11 forwarding disabled.
debug1: Remote: Agent forwarding disabled.
debug1: Remote: Pty allocation disabled.
debug1: Sending environment.
debug1: Sending env LC_CTYPE = 
Hi Richnl! You've successfully authenticated, but GitHub does not provide shell access.
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: client_input_channel_req: channel 0 rtype [email protected] reply 0
debug1: channel 0: free: client-session, nchannels 1
Transferred: sent 2384, received 2936 bytes, in 0.3 seconds
Bytes per second: sent 7295.9, received 8985.2
debug1: Exit status 1

como eu posso filtrar todos os fóruns e o próprio git, você pode ignorar o "erro de acesso ao shell" porque você não precisa dele de qualquer maneira

O que eu gostaria de saber se esse é o resultado correto Alguém pode me explicar o que PYT é e a bandeira T porque eles desempenham um papel central nisso. O sinalizador -T também não é usado na documentação oficial.

Por favor, eu gosto de entender isso e não apenas colocar batidas de tecla idiotas

obrigado em adv

Outros passos envolvidos foram obtidos após o tutorial

    
por Richard 25.05.2013 / 12:18

1 resposta

4

Em sistemas Linux e similares, "PTYs" ou pseudo-TTYs são dispositivos especiais usados para executar programas de linha de comando interativos; Eles são como telas virtuais, exceto somente texto. Cada nova janela Xterm ou iTerm ou Konsole que você abrir tem seu próprio PTY. Programas escrevem texto para aquele PTY, e o terminal o desenha na tela. Para cada conexão SSH interativa, o servidor também usa um PTY.

No entanto, os servidores SSH do Github não fornecem serviços interativos - eles permitem somente o envio e a busca de repositórios Git, que não precisam nem tentam alocar um PTY; é apenas um fluxo simples de dados. Isso significa que o servidor pode ter a alocação de PTY desativada para a conta git@ .

Quando você executa ssh [email protected] , seu cliente SSH acha que você vai abrir uma conexão interativa, então ele pede ao servidor para alocar um PTY para ele. Como o servidor não permite a alocação de PTY, a mensagem de erro é impressa. A opção -T é usada para dizer ao seu cliente ssh para nunca solicitar um PTY no servidor.

Mas se você usa ssh [email protected] ou ssh -T [email protected] é irrelevante, já que você não obterá um shell interativo - o servidor está configurado para imprimir apenas uma mensagem de saudação e desconectar.

Em outras palavras, a única vez que alguma vez você se conecta ao Github manualmente é quando você está testando a conexão. O resto do tempo, a conexão será feita pelo seu git tools, que nunca usa um PTY, então tanto a mensagem de erro quanto a -T são irrelevantes.

$ ssh [email protected]
PTY allocation request failed
Hi grawity! You've successfully authenticated, but GitHub does not provide shell access.
$
    
por 25.05.2013 / 12:42