SSH: Efeitos da opção de login no-pty em authorized_keys

1

Estou confuso com o comportamento de restrict ou no-pty opções de login anexadas a uma chave em ~/.ssh/authorized_keys .

Para uma determinada chave, pretendia evitar qualquer interação exceto para iniciar um túnel SSH em uma porta local específica:

restrict,permitopen="localhost:80" ssh-rsa AAAAB3NzaC1yc2EAAA[...]3c7rmJT5/ [email protected]

O efeito real é que identificando com a chave privada correspondente eu posso criar um túnel, mas aparentemente também executar comandos arbitrários :

tunnel@a $ ssh -i tunnel_rsa [email protected]

PTY allocation request failed on channel 0
Welcome to Ubuntu 16.04.2 LTS (GNU/Linux 4.4.0-64-generic x86_64)

[...]

You have new mail.

ls .ssh/
authorized_keys
id_rsa
id_rsa.pub
known_hosts

Observe a mensagem PTY allocation request failed on channel 0 no início da sessão (que sugere que a opção de login tenha algum efeito) e o comando ls .ssh/ com sua saída.

Não há prompt, mas não é o que eu pretendia fazer. Alguém pode por favor lançar alguma luz sobre isso? Além disso, qual é o método preferido para restringir determinada chave a apenas criar um túnel?

atualização

com restrict o túnel não está funcionando:

$ curl localhost:8080
curl: (52) Empty reply from server

ou usando HTTPie:

$ http :8080
http: error: ConnectionError: ('Connection aborted.', BadStatusLine("''",))

com a seguinte saída do comando ssh -L ... :

channel 2: open failed: administratively prohibited: open failed

Funciona com a opção no-pty em vez de restricted , mas o problema original permanece.

    
por Tadeusz Łazurski 18.07.2017 / 17:11

1 resposta

1

Depois de algumas pesquisas e experiências, essa combinação de opções parece dar certo:

command="",restrict,port-forwarding,permitopen="localhost:80"

Deixe-me passar por cada um deles individualmente:

  • command=""

    não permite que qualquer comando seja executado usando esta chave

  • restrict

    Desative todas as opções, como alocação de TTY, encaminhamento de porta, encaminhamento de agente, user-rc e encaminhamento do X11 de uma só vez.

  • port-forwarding

    Permite o encaminhamento de portas TCP, mas veja abaixo.

  • permitopen="localhost:80"

    Limita o encaminhamento de porta TCP à porta local 80 . Essa é a única única coisa que essa chave deve permitir.

Eu consegui descobrir isso principalmente lendo capítulo Arquivos de configuração do cliente do OpenSSH WikiBook , portanto a maioria do crédito vai para seus autores (Lars Noodén et al.). A parte que faltava era port-forwarding - sem que o encaminhamento seja proibido, mesmo que permitopen sugira o contrário.

    
por 19.07.2017 / 10:08