Efetua login automaticamente em uma sessão ssh-agent em um shell não-usuário

0

Minha equipe compartilha uma conta de usuário por meio de um shell não-usuário em alguns sistemas por motivos além do nosso controle. Todos nós movemos nossas chaves privadas protegidas por senha para o diretório share'd users ~ / .ssh. Normalmente, fazemos login e abrimos uma sessão ssh-agent , em seguida, ssh-add nossas senhas protegidas por frase-senha, como abaixo. Nenhum de nós gosta desse fluxo de trabalho e estamos tentando facilitar isso.

Existe uma maneira de sermos solicitados automaticamente para a nossa senha quando abrimos o shell do usuário compartilhado?

sudo -u shared /bin/bash
# new shell opens
eval 'ssh-agent -s'
ssh-add ~/.ssh/my_username_rsa
# enter passphrase and continue...
    
por Aage Torleif 09.08.2016 / 20:33

2 respostas

0

Portanto, a chave a ser adicionada deve depender do usuário que iniciou a sessão do sudo? a variável de ambiente SUDO_USER pode ser o que você precisa?

Coloque algo como o seguinte no arquivo de inicialização do shell do usuário shared (diga .bash_login para o Bash. Embora você precise iniciar o shell como um shell de login com sudo -i ):

eval $(ssh-agent -s)
ssh-add ~/.ssh/${SUDO_USER}_rsa

ou até mesmo

if [ "$SUDO_USER" = userthis ] ; then 
    echo do something for this user
elif...
fi

É claro que desvantagem dessa conta compartilhada é que todos vocês efetivamente terão as chaves um do outro, já que as chaves são salvas sob um único ID de usuário e não há nada para separar usuários diferentes da conta compartilhada.

Não tenho certeza se seria possível iniciar um ssh-agent antes do sudo em sua conta normal e usá-lo no shell sudoed. Suponho que pelo menos seria necessário corrigir as permissões do soquete do agente e, mesmo assim, outros usuários da mesma conta poderiam usar as chaves no agente, embora talvez não copiá-las.

    
por 09.08.2016 / 21:31
0

Eu gostaria, como você:

eval $(ssh-agent -s)
ssh -A shared@localhost

Então você não precisa colocar seus arquivos de chave privada em um diretório no usuário compartilhado.

    
por 28.08.2016 / 20:07