Sou um novo usuário do Jenkins. Estou tentando executar um script de shell como parte da etapa de construção no Jenkins. Este script possui um scp
comando que transfere um .tar
arquivo para um servidor remoto.
Quando executo este script, ele funciona bem e fornece a saída desejada, mas quando é executado através do Jenkins, recebo um erro:
Host key verification failed.
lost connection
Até o scp
comando, o script é executado com êxito e depois pula a scp
etapa.
Não consigo nem SSH ou SCP através do Jenkins para o servidor remoto.
Por favor, informe o que pode ser feito aqui? Quais são os plug-ins necessários para instalação ssh
e scp
?
Responder1
A chave hosts precisa ser adicionada ao arquivo "known_hosts" do cliente, no seu caso o usuário, sob cuja conta o servidor Jenkins é executado. Então o que você precisa fazer é:
- Habilite o login ssh para o usuário jenkins
- faça login como jenkins
- ssh para o servidor remoto
- responda à pergunta "a identidade dos servidores deve ser adicionada .." com sim ..
Então você terminou. Depois, o script poderá fazer scp com o pubkey do usuário.
Responder2
Resumindo, você precisa adicionar a chave ssh do usuário Jenkins ao servidor onde você está tentando fazer login, como esse usuário.
Detalhes:
Faça login no servidor jenkins e então:
sudo passwd jenkins
digite a senha que deseja fornecer ao usuário jenkins duas vezes e, em seguida:
su jenkins
cd
ssh-keygen
Pressione enter para todas as opções. Em seguida, copie as novas chaves ssh para o servidor para o qual deseja copiar:
scp .ssh/id_rsa.pub user@newserver:/home/user/jenkins_key
Se você for solicitado, pressione 'sim' para continuar.
Em seguida, faça login nesse servidor como esse usuário e:
ssh user@server
e digite a senha, então
cd .ssh
ls -lah
se não houver 'authorized_keys' então:
cd .ssh
touch authorized_keys
Se o arquivo 'authorized_keys' estiver lá, ignore a etapa acima, então:
cd
cat jenkins_key >> .ssh/authorized_keys
rm -rf ./jenkins_key
sair / sair do servidor e voltar ao servidor jenkins:
ssh user@newserver
Você deve fazer login diretamente, sem avisos ou inserir sua senha
Agora execute o trabalho scp novamente no Jenkins
Responder3
Consegui uma solução para o problema. 1. Criei um novo par de chaves shh no usuário jenkins. 2. Adicionada a chave .pub ao servidor remoto. Ao fazer o ssh no servidor Jenkins, a chave privada recém-gerada é usada. Agora tanto o ssh quanto o scp funcionam como parte da etapa de construção. Obrigado
Responder4
Plug-in do Agente SSH
Este plugin permite que você forneça credenciais SSH para compilações por meio de um agente ssh no Jenkins. https://plugins.jenkins.io/ssh-agent/
Se você vir esse erro novamente, execute este comando uma vez no trabalho do Jenkins:
ssh -o StrictHostKeyChecking=no user@host hostname
Depois disso, você pode simplesmente executar o ssh no trabalho do Jenkins:
ssh user@host hostname