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 ...