Eu tenho um servidor remoto. Eu já posso ssh com sucesso nesse servidor remoto - minha chave está no authorized_keys
servidor remoto.
Agora eu quero extrair do GitHub diretamente para esse servidor remoto. Mas estou recebendo permission denied (publickey)
quando tento ssh -T [email protected]
no servidor remoto.
Devo copiar id_rsa.pub
diretamente da minha máquina local para o servidor remoto ou isso é perigoso?
Se essa é a resposta, qual é a melhor maneira de fazer isso?
Ou devo gerar uma nova chave pública no servidor remoto e adicioná-la à minha conta do github?
ATUALIZAR:
Aqui está a saída de um ssh detalhado:
~$ ssh -Tv [email protected]
OpenSSH_6.0p1 Debian-4+deb7u2, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to github.com [192.30.252.131] port 22.
debug1: Connection established.
debug1: identity file /home/richard/.ssh/id_rsa type -1
debug1: identity file /home/richard/.ssh/id_rsa-cert type -1
debug1: identity file /home/richard/.ssh/id_dsa type -1
debug1: identity file /home/richard/.ssh/id_dsa-cert type -1
debug1: identity file /home/richard/.ssh/id_ecdsa type -1
debug1: identity file /home/richard/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version libssh-0.6.0
debug1: no match: libssh-0.6.0
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.0p1 Debian-4+deb7u2
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-sha1 none
debug1: kex: client->server aes128-ctr hmac-sha1 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: RSA 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
debug1: Host 'github.com' is known and matches the RSA host key.
debug1: Found key in /home/richard/.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: Trying private key: /home/richard/.ssh/id_rsa
debug1: Trying private key: /home/richard/.ssh/id_dsa
debug1: Trying private key: /home/richard/.ssh/id_ecdsa
debug1: No more authentication
Permission denied (publickey)
a máquina remota.Respostas:
o
id_rsa.pub
pode ser copiado em qualquer lugar sem nenhum perigo real. Esta é a sua chave pública e destina-se a coisas como esta. É metade do par de chaves, e compartilhá-lo com os lugares aos quais você deseja acessar é como você permite que a chave privada funcione.Para permitir o login remoto, sua chave pública precisa estar listada em
authorized_keys
(authorized_keys2
em alguns sistemas). Uma chave em cada linha, neste formato:Para conseguir isso, depois de copiá-lo, basta anexá-lo ao
authorized_keys
arquivo assim:cat id_rsa.pub >> ~/.ssh/authorized_keys
A maioria dos sistemas sãos se recusará covardemente a permitir que você use o logon baseado em chave se a
.ssh
pasta tiver permissões muito frouxas. A pasta deve estar700
, portanto, se você ainda estiver tendo problemas:chmod 700 ~/.ssh
Além disso, os arquivos na
.ssh
pasta devem ser 600:chmod 600 ~/.ssh
Editar 1:
O arquivo em si
id_rsa.pub
não é necessário no servidor remoto. Somente o conteúdo, como parte deauthorized_keys
. Eu recomendo executarssh -vT [email protected]
para habilitar o log detalhado, para que você possa ver exatamente de quais permissões ele reclama.Edição 2:
Isso significa que nenhuma das chaves oferecidas corresponde ao que o servidor remoto possui no arquivo. O que você quer ver é algo como isto:
Coisas a verificar:
authorized_keys
authorized_keys
paraauthorized_keys2
fonte
~/.ssh/authorized_keys
servidor remoto - eu a adicionei usandocat ~/.ssh/id_rsa.pub | ssh me@server "cat >> ~/.ssh/authorized_keys"
. Então sshed para o controle remoto e correu~$ chmod 700 ~/.ssh
e$ chmod 600 ~/.ssh/authorized_keys
mas ainda obterPermission denied (publickey)
quando tento ssh para github. Também devo copiar todo oid_rsa.pub
arquivo para a máquina remota?ssh
comando descrito em sua pergunta com a-v
opção para ver exatamente de quais permissões o ssh está reclamando.check that one of the private keys...
- o que devo fazer aqui?De acordo com o rastreamento de depuração, nenhum desses arquivos de chave realmente existe no sistema local e o ssh não ofereceu nenhuma chave ao servidor remoto. Verifique se a chave que você deseja usar realmente existe no host em que você está executando o ssh e se o arquivo tem o nome correto. Se você quiser usar um arquivo de chave que não seja um dos arquivos padrão, precisará especificá-lo na linha de comando ssh:
fonte
authorized_keys
. Isso é suficiente ou eu preciso copiar o arquivo de chave por lá também?authorized_keys
é para chaves públicas que serão aceitas para conexões de entrada . Você precisa de uma cópia do arquivo de chave privada para fazer uma conexão de saída com outro host. Então, sim, um desses arquivos principais (id_rsa, etc.) deve estar presente no host em que você está executando o ssh.O servidor precisa da sua chave privada para se autenticar no Github. Sua chave pública, como o próprio nome sugere, é considerada pública, portanto, não pode ser suficiente para autenticar.
Se você não precisar usar o Github no servidor remoto sem ter se conectado através do ssh, use o encaminhamento do ssh-agent. Um guia para isso está disponível no Github: https://developer.github.com/guides/using-ssh-agent-forwarding/ .
Caso contrário, você deve gerar uma nova chave e vinculá-la à sua conta.
fonte
Você pode colocar o comando diretamente.
se você já possui a chave ssh, ela será exibida. Caso contrário, dá erro. Você precisa adicionar uma nova chave.
fonte