Após quatro anos, essa resposta mereceu uma atualização. Enquanto originalmente eu authorized_keys
me usava e provavelmente ainda o usaria em alguns casos selecionados, você também pode usar o sshd_config
arquivo de configuração do servidor central .
sshd_config
Você pode designar (para o seu caso de uso particular) um grupo, como proxy-only
ou Match
usuá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 man
pá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 Match
bloco começaria assim:
Match group proxy-only
Você pode Match
os seguintes critérios: User
, Group
, Host
, LocalAddress
, LocalPort
e Address
. Para corresponder a vários critérios, basta separar por vírgula os pares padrão-critério ( group proxy-only
acima).
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_keys
arquivos dos membros desse grupo.
A no-pty
configuração de authorized_keys
seria espelhada por uma PermitTTY no
configuraçã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 chroot
colocar 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 ( %u
produziria o nome do usuário e %%
um sinal de porcentagem). Eu achei ChrootDirectory
particularmente útil confinar meus sftp-only
usuá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 Match
bloco. Consulte a man
pá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 sshd
versã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-pty
si só, não impedirá que o usuário da chave execute comandos. Consulte superuser.com/q/1230979/195460 .Para qualquer usuário exclusivo de tunelamento, altere seu shell de login para / sbin / nologin. Dessa forma, seu usuário não poderá acessar um shell no servidor, mas ainda poderá executar túneis ssh configurados no cliente.
fonte
Sei que essa talvez não seja a resposta que você procura, mas você já pensou em usar o OpenVPN como alternativa?
fonte
Caso esteja pronto para desistir da autenticação de usuário / senha e usar chaves para efetuar login, você pode especificar os parâmetros s para cada chave pública.
Parâmetros notáveis são:
e
e finalmente
Com eles, você pode restringir o usuário desse par de chaves em particular o que ele pode fazer com a sessão SSH.
Seria assim:
fonte
Eu recomendo tentar Tunnelier . É muito mais fácil de configurar / gerenciar.
fonte