Após quatro anos, esta resposta mereceu uma atualização. Embora eu usei originalmente o authorized_keys e provavelmente o usaria ainda em alguns casos selecionados, você também pode usar o arquivo de configuração central do servidor sshd_config .
sshd_config
Você pode designar (para seu caso de uso específico) um grupo, como proxy-only ou Match usuários individuais. Em código%. Isso é feito após as configurações globais e revoga, repete ou refina algumas das configurações dadas nas configurações globais.
Observação: algumas das sintaxes / diretivas usadas em sshd_config estão documentados na página sshd_config(5) de man . Em especial, leia a seção PATTERNS de ssh_config(5) .
Para um grupo, isso significa que seu bloco ssh_config(5) começaria assim:
Match group proxy-only
Você pode Match dos seguintes critérios: Match , User , Group , Host , LocalAddress e LocalPort . Para corresponder a vários critérios, simplesmente separe os pares de padrões de critérios ( Address acima).
Dentro de tal bloco, que é tradicionalmente indentado de acordo com a brevidade (mas não precisa), você pode declarar as configurações que deseja aplicar ao grupo de usuários sem precisar editar cada arquivo group proxy-only para membros de esse grupo.
A configuração authorized_keys de no-pty seria espelhada por uma configuração authorized_keys e PermitTTY no se tornaria command="/sbin/nologin" .
Além disso, você também pode definir mais configurações para satisfazer a paranóia de um administrador, como ForceCommand /sbin/nologin - inserir o usuário em sua pasta pessoal e acabar com algo assim:
Match group proxy-only
# AllowTcpForwarding no
ChrootDirectory %h
ForceCommand /sbin/nologin
# GatewayPorts yes
# KbdInteractiveAuthentication no
# PasswordAuthentication no
# PubkeyAuthentication yes
# PermitRootLogin no
PermitTTY no
(verifique se você precisa ou quer as linhas comentadas e descomente conforme necessário)
O chroot é um token que é substituído pelo diretório hoe do usuário ( %h renderia o nome de usuário e %u um sinal de porcentagem). Eu achei %% particularmente útil para confinar meus ChrootDirectory usuários:
Match group sftp-only
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory %h
ForceCommand internal-sftp
PasswordAuthentication no
Por favor, lembre-se que apenas algumas certas diretivas podem ser usadas em um bloco sftp-only . Consulte a página Match man para obter detalhes (pesquise sshd_config(5) ) .
authorized_keys
NB: a parte abaixo desta observação foi minha resposta original. Enquanto isso - mas também depende dos recursos da sua versão exata de Match - eu usaria o método descrito acima na maioria dos casos.
Sim, você pode, com a granulação fina, atribuir chaves públicas. Além do nologin, como recomendado pelo ajdecon, sugiro definir o seguinte na frente da entrada de chave em sshd :
no-pty ssh-rsa ...
O no pty informa ao servidor que nenhum pseudo-terminal deve ser alocado para aquela chave.
Você também pode forçar a execução de algo como nologin para uma chave específica, colocando o seguinte:
command="/sbin/nologin",no-pty ssh-rsa ...