Não é possível usar o SSH usando uma chave privada por meio do script Bash

4

Para começar, peço desculpas se este é um problema dolorosamente óbvio / trivial, ainda estou aprendendo os meandros do linux / unix.

Eu trabalho com alguns servidores que exigem acesso via ssh e chave privada para fazer login. Então, o comando é algo assim:

ssh -i /path/to/key.pem [email protected]

Eu criei um script bash que me permite apenas usar minha própria chamada, access , e apenas tem uma instrução de chave básica para os argumentos a seguir para controlar em qual servidor eu me conecto. Por exemplo, access server1 emitiria o comando ssh apropriado para efetuar login no server1.

O problema

A chamada ssh simplesmente desliga e eu fico com um terminal vazio que não aceita SIGINT ( Ctrl + C ) e devo saia do terminal e abra-o novamente para usá-lo.

Tanto quanto eu posso dizer, isso pode ser uma coisa de permissões para a chave privada. Suas permissões são atualmente 600 . Alterá-lo para 644 me dá um erro de que as permissões são muito abertas e sai da tentativa ssh . Algum conselho?

    
por Andrew 20.11.2015 / 21:02

2 respostas

6
  1. Existe ssh_config , feito para isso, onde você pode especificar seus aliases e chaves de hosts e armazená-los sem criar tais scripts de hara-kiri como bash para fazer isso. Basicamente é armazenado em seu ~/.ssh/config neste formato:

    Host host1
      Hostname 000.000.000.000
      User user
      IdentityFile /path/to/key.pem
    

    e então você pode simplesmente ligar

    ssh host1
    

    para ir para 000.000.000.000

  2. Se você realmente quer ser eficaz e tem atalhos ainda mais curtos, bash alias é mais adequado do que os scripts bash.

    alias access="ssh -i /path/to/key.pem [email protected]"
    
  3. Se você realmente quiser usar o script bash, precisará forçar o ssh a alocar seu TTY no servidor remoto usando a opção -tt :

    ssh -tti /path/to/key.pem [email protected]
    

Para mais dicas, você pode navegar pela página de manual de ssh e ssh_config .

    
por 20.11.2015 / 21:12
0

Eu geralmente disponibilizo a senha auth em servidores (via console, supondo que você esteja usando virtualização), então ssh-copy-id soandso@server para ativar uma autenticação baseada em chave. Observe que, na maioria dos casos, você está usando uma chave pública (em sua máquina) para autenticar em uma chave privada (no servidor remoto).

As permissões padrão da chave do pub devem ser 644 , no entanto, sua chave privada deve ser 700 de acordo com o que eu sei. Tem certeza de que seu problema não é das permissões da chave do pub?

Eu recomendaria verificar duas coisas: primeiro, tente a string de conexão ssh que você fez acima, e adicione -v ou -vvv como sua opção. Isso deve lhe dar uma boa ideia de onde isso está acontecendo. Segundo, dê uma olhada no arquivo de configuração sshd ( /etc/ssh/sshd_config ) no servidor e verifique se o protocolo de conexão que você está tentando usar está ativado. Isso pode ser tão simples quanto garantir que essas duas linhas estejam definidas como sim:

RSAAuthentication yes PubkeyAuthentication yes

Boa sorte!

    
por 20.11.2015 / 21:23