Após quatro anos, essa resposta mereceu uma atualização. Enquanto originalmente eu authorized_keysme usava e provavelmente ainda o usaria em alguns casos selecionados, você também pode usar o sshd_configarquivo de configuração do servidor central .
sshd_config
Você pode designar (para o seu caso de uso particular) um grupo, como proxy-onlyou Matchusuários individuais. In sshd_config. Isso é feito após as configurações globais e revoga, repete ou refina algumas das configurações fornecidas nas configurações globais.
Nota: algumas das sintaxes / diretivas usadas em sshd_config(5)estão documentadas na manpágina para ssh_config(5). Em particular, certifique-se de ler a seção PADRÕES de ssh_config(5).
Para um grupo, isso significa que seu Matchbloco começaria assim:
Match group proxy-only
Você pode Matchos seguintes critérios: User, Group, Host, LocalAddress, LocalPorte Address. Para corresponder a vários critérios, basta separar por vírgula os pares padrão-critério ( group proxy-onlyacima).
Dentro desse bloco, que é tradicionalmente recuado de maneira apropriada, por questões de brevidade (mas não é necessário), você pode declarar as configurações que deseja aplicar ao grupo de usuários sem precisar editar todos os authorized_keysarquivos dos membros desse grupo.
A no-ptyconfiguração de authorized_keysseria espelhada por uma PermitTTY noconfiguração e command="/sbin/nologin"se tornaria ForceCommand /sbin/nologin.
Além disso, você também pode definir mais configurações para satisfazer a paranóia de um administrador, como chrootcolocar o usuário em sua pasta pessoal e acabar com algo assim:
Match group proxy-only
PermitTTY no
ForceCommand /sbin/nologin
ChrootDirectory %h
# Optionally enable these by un-commenting the needed line
# AllowTcpForwarding no
# GatewayPorts yes
# KbdInteractiveAuthentication no
# PasswordAuthentication no
# PubkeyAuthentication yes
# PermitRootLogin no
(verifique se você precisa ou deseja as linhas comentadas e descomente conforme necessário)
O %hé um token que é substituído pelo diretório inicial do usuário ( %uproduziria o nome do usuário e %%um sinal de porcentagem). Eu achei ChrootDirectoryparticularmente útil confinar meus sftp-onlyusuários:
Match group sftp-only
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory %h
ForceCommand internal-sftp
PasswordAuthentication no
Lembre-se de que apenas determinadas diretivas podem ser usadas em um Matchbloco. Consulte a manpágina sshd_config(5)para detalhes (pesquise Match).
Keys_ autorizado
Nota: a parte abaixo desta observação foi minha resposta original. Enquanto isso - mas também depende dos recursos da sua sshdversão exata -, eu usaria o método descrito acima na maioria dos casos.
Sim, você pode, da maneira mais refinada possível, atribuir chaves públicas. Além de nologin, como recomendado por ajdecon, sugiro definir o seguinte na frente da entrada de chave em authorized_keys:
no-pty ssh-rsa ...
O no pty informa ao lado do servidor que nenhum pseudo-terminal deve ser alocado para essa chave.
Você também pode forçar a execução de algo como nologin para uma chave específica, acrescentando isto:
command="/sbin/nologin",no-pty ssh-rsa ...
no-ptysi só, não impedirá que o usuário da chave execute comandos. Consulte superuser.com/q/1230979/195460 .