Existem alguns problemas diferentes a serem resolvidos aqui:
-
Como permitir o acesso a apenas determinados hosts?
Isso pode ser feito dando ao usuário no host de origem uma chave privada SSH específica. Em seguida, você instala a chave pública correspondente somente nos hosts aos quais o usuário deve ter acesso. Certifique-se de que o usuário não saiba a senha da conta de destino ou que a autenticação de senha esteja desativada em
sshd_config
. O usuário deve apenas ser capaz de autenticar via chave ssh. -
Como restringir o usuário apenas a um comando específico?
Isso pode ser resolvido de maneira semelhante ao número 1 acima - no arquivo
~/.ssh/authorized_keys
do usuário no servidor de destino, ao adicionar a chave, você também pode especificar um comando que o usuário será forçado a executar. Eles não poderão executar qualquer coisa exceto este comando.
Um exemplo authorized_keys
entry que suporta isso seria assim, usando o comando de exemplo que você forneceu:
command="ps -ef | grep \"$SSH_ORIGINAL_COMMAND\" | grep -wv 'grep\|vi\|vim' | awk '{print $2}'",no-pty,no-port-forwarding,no-x11-forwarding,no-agent-forwarding ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDAkwY/8z8sADor5NmM0rZd3clWIcycSzP1gj1gjZCymuYxXRZX/YFnjphkuCWU7c4KK6AtS4Xv1OFjpqtZ6ucBEws+sJIS7hfdELWuTmmYeO3UKL1p9xt4lJRlv1F8WZkUpy5iUo6VqZbgwywzyiqZj5u100Rcbho4BDFjYbSWOw== jbossuser@source_host
NOTA: Tudo deve ser uma linha em authorized_keys
!
O usuário pode passar o nome do processo para o qual está tentando fazer um pedido na linha de comando ao emitir o comando ssh. Aqui está um exemplo disso em uso - neste exemplo, vou buscar o processo "crond" na listagem ps
:
jbossuser@source_host ~$ ssh -i .ssh/testkey jbossuser@target_host crond
1044
jbossuser@source_host ~$
Portanto, este comando retornou o PID do processo "crond", "1044".
-
acesso sudo para os usuários no host de origem
Você tem a sintaxe correta, mas o comando está errado - você não está dando acesso ao sudo para
ssh
, mas para o script que você quer que eles executem como o jbossuser.
Se usuários diferentes tiverem acesso a hosts diferentes, você poderá fornecer versões diferentes do script que apontam para uma chave privada SSH específica apenas para eles.