ssh autenticação do público para git dentro de um script bash?

1

Atualmente tenho um script bash em execução no meu servidor Linux que uma vez por semana passa pelos meus repositórios, executa algumas tarefas e faz o backup remotamente.

Hoje também comecei a fazer backup de alguns repositórios remotos. Meu plano era poder, dentro do script bash de backup, executar algo como (cd $ dir & git pull origem mestre 2 > > $ LOGFILE) dentro de um loop for. O problema que pareço ter é que estou tentando extrair algumas coisas do github e isso requer que meu arquivo de chave privada seja desbloqueado antes de prosseguir. Existe alguma maneira que eu possa fornecer essa senha de antemão para que eu não receba um prompt interativo para a senha?

    
por enriquein 24.09.2010 / 04:31

2 respostas

1

Use o encaminhamento de agentes SSH . Você terá que usar um agente em sua máquina inicial; você também terá que ter o encaminhamento de agentes ativado em seu cliente e em seu servidor Linux.

Assumindo o OpenSSH ao redor:

test -z "$SSH_AUTH_SOCK" && eval "$(ssh-agent)"
ssh-add -f /path/to/your/key-accepted-by-GitHub
ssh-add -f /path/to/your/key-accepted-by-your-user-on-the-linux-box
ssh -A userName@theLinuxBox /path/to/the/script

O sshd no seu servidor ("yourLinuxBox") terá que permitir o encaminhamento do agente ( AllowAgentForwarding em seu arquivo sshd_config; normalmente é padronizado como "yes" se não estiver presente).

Com seu agente local segurando a chave GitHub e com o agente encaminhado através de sua conexão SSH para a caixa Linux, qualquer uso normal de ssh na caixa do Linux que precisa da chave (por exemplo git puxar ) poderá usar.

Ou, você pode usar uma entrada em .ssh/config para especificar os bits da "primeira perna" para abreviar os dois últimos comandos como ssh backup-server /path/to/the/script (você ainda precisará garantir que a chave do GitHub foi adicionada a seu agente local):

Host backup-server
    HostName     theLinuxBox # name or IP
    User         userName    # username on remote system
    IdentityFile /path/to/key-accepted-by-your-user-on-the-linux-box
    ForwardAgent yes

Observação : não ative o encaminhamento de agentes para servidores não confiáveis (a raiz no servidor pode usar seu acesso local para usar as chaves armazenadas em seu agente local).

    
por 24.09.2010 / 08:26
1

Acho melhor fazer o backup como um usuário diferente, já que sua chave privada também permite acesso a outros lugares também. Dê a este usuário uma chave ssh privada sem uma senha e use este usuário em seus scripts. No servidor git remoto, você pode limitar as permissões de outros usuários de modo que somente seus repositórios git possam ser obtidos.

    
por 24.09.2010 / 07:51

Tags