Limitar chave SSH apenas ao SCP

2

Problema:

Eu não tenho acesso root ao servidor (ou seja, não posso / não quero alterar nenhuma configuração de servidor em todo o sistema), e quero usar o scp com um arquivo de identidade alternativo (por exemplo, .ssh/id_rsa_for_scp ) para automatizar o download de alguns arquivos do servidor, mas eu não quero que a mesma chave seja usada para acessar o servidor através do ssh.

    
por Michael Richard 26.05.2017 / 00:44

1 resposta

9

Depois de copiar seu arquivo de chaves para o servidor:

ssh-copy-id -i ~/.ssh/id_rsa_for_scp [email protected]

(Para simplificar o exemplo, vamos assumir que a máquina do cliente ~ / .ssh / config já está configurada. Para mais detalhes sobre ~/.ssh/config run man ssh_config )

Host testmachine
    Hostname 192.168.1.1
    User legendaryuser
    BatchMode yes
    IdentitiesOnly yes
    IdentityFile ~/.ssh/id_rsa_for_scp

Você precisará editar o arquivo /home/legendaryuser/.ssh/authorized_keys do servidor.

De:

ssh-rsa AAAAAC3nZCXExxHUEBR...

Para: (esta versão permite download e upload)

command="if [[ \"$SSH_ORIGINAL_COMMAND\" =~ ^scp.? ]]; then $SSH_ORIGINAL_COMMAND ; else echo Access Denied; fi" ssh-rsa AAAAAC3nZCXExxHUEBR...

Se você quiser limitar o scp ao "modo somente download" e apenas aos arquivos de um diretório específico, faça:

command="if [[ \"$SSH_ORIGINAL_COMMAND\" =~ ^scp[[:space:]]-f[[:space:]]/full/path/to/dir/.? ]]; then $SSH_ORIGINAL_COMMAND ; else echo Access Denied; fi" ssh-rsa AAAAAC3nZCXExxHUEBR...

Por último, vamos adicionar mais algumas restrições à chave, apenas para garantir:

command="if [[ \"$SSH_ORIGINAL_COMMAND\" =~ ^scp[[:space:]]-f[[:space:]]/full/path/to/dir/.? ]]; then $SSH_ORIGINAL_COMMAND ; else echo ERRO Access Denied; fi",no-pty,no-port-forwarding,no-agent-forwarding,no-X11-forwarding ssh-rsa AAAAAC3nZCXExxHUEBR...

Você pode ver mais detalhes sobre o arquivo authorized_keys executando:

man sshd

Ps: Você também pode adicionar from=xxx.xxx.xxx.xxx ao limite do uso da chave de um endereço IP específico ou rede.

Pps: Desculpe pelo meu inglês, eu não sou um falante nativo.

    
por 26.05.2017 / 00:45