Existe uma maneira de redefinir tudo (ou apenas desativar as configurações de segurança) na linha de comando sem um usuário / senha, pois eu consegui me bloquear completamente Jenkins
?
linux
security
jenkins
command-line
ryanzec
fonte
fonte
sudo service jenkins restart
find / -name "config.xml"
no seu terminal.Uma outra maneira seria editar manualmente o arquivo de configuração para seu usuário (por exemplo, /var/lib/jenkins/users/username/config.xml) e atualizar o conteúdo de passwordHash :
Depois de fazer isso, basta reiniciar o Jenkins e fazer login usando esta senha:
fonte
<passwordHash>
tag xml é filha de<hudson.security.HudsonPrivateSecurityRealm_-Details>
. Veja o usuário administrador padrão para ter uma idéia da estrutura XML total.Encontrei o arquivo em questão localizado em / var / lib / jenkins chamado config.xml, modificando o problema.
fonte
/Applications/jenkins-2.19.3-0/apps/jenkins/jenkins_home/users/admin/config.xml
O
<passwordHash>
elemento inusers/<username>/config.xml
aceitará dados do formatoPortanto, se seu salt é
bar
e sua senha éfoo
, você pode produzir o SHA256 assim:Você deve obter
7f128793bc057556756f4195fb72cdc5bd8c5a74dee655a6bfb59b4a4c4f4349
como resultado. Pegue o hash e coloque-o com sal em<passwordHash>
:Reinicie o Jenkins e tente fazer login com a senha
foo
. Redefina sua senha para outra coisa. (Jenkins usa bcrypt por padrão, e uma rodada de SHA256 não é uma maneira segura de armazenar senhas. Você obterá um hash de bcrypt armazenado quando redefinir sua senha.)fonte
No El-Capitan, o config.xml não pode ser encontrado em
Está disponível em
depois disso, como mencionado anteriormente, abra o arquivo config.xml e faça as seguintes alterações
Substitua
<useSecurity>true</useSecurity>
por<useSecurity>false</useSecurity>
Remova
<authorizationStrategy>
e<securityRealm>
Salve-o e reinicie o jenkins ( serviço sudo jenkins restart )
fonte
A resposta sobre a modificação estava correta. No entanto, acho que deve ser mencionado que se
/var/lib/jenkins/config.xml
parece com isso se você ativou a "Estratégia de autorização de matriz baseada em projeto". Excluir/var/lib/jenkins/config.xml
e reiniciar o jenkins também funciona. Também excluí os usuários/var/lib/jenkins/users
para começar do zero.fonte
Para redefini-lo sem desativar a segurança se você estiver usando permissões de matriz (provavelmente facilmente adaptável a outros métodos de login):
config.xml
, definadisableSignup
comofalse
.config.xml
, duplique uma das<permission>hudson.model.Hudson.Administer:username</permission>
linhas e substituausername
pelo novo usuário.disableSignup
de volta paratrue
nosconfig.xml
.Limpeza opcional:
<permission>
linha temporáriaconfig.xml
.Nenhum título foi prejudicado durante esta resposta.
fonte
Para desativar a segurança do Jenkins em etapas simples no Linux, execute estes comandos:
Ele removerá
useSecurity
eauthorizationStrategy
alinhará o seuconfig.xml
arquivo de configuração raiz e reiniciará o seu Jenkins.Veja também: Desativar segurança no site da Jenkins
Após obter o acesso ao Jenkins, você pode reativar a segurança na página Configurar Segurança Global , escolhendo o Controle de Acesso / Região de Segurança . Depois disso, não esqueça de criar o usuário administrador .
fonte
Por acaso, você acidentalmente se bloqueia no Jenkins devido a um erro de permissão e não tem acesso no servidor para mudar para o usuário ou raiz do jenkins ... Você pode fazer um trabalho no Jenkins e adicioná-lo ao Shell Script:
Em seguida, clique em Compilar agora e reinicie o Jenkins (ou o servidor, se necessário!)
fonte
ProjectMatrixAuthorization
. Quando faço a alteração e reinicio o Jenkins, vejo uma exceção Java na Jenkins-UI. Para corrigir isso, também removi a linhaauthorizationStrategy
e estava tudo bem novamente. Jenkins o leu no início seguinte como uma etiqueta vazia.Podemos redefinir a senha enquanto mantemos a segurança ativada.
O arquivo config.xml em / var / lib / Jenkins / users / admin / age como o arquivo / etc / shadow de sistemas Linux ou UNIX ou o arquivo SAM no Windows, no sentido de armazenar o hash do arquivo senha da conta.
Se você precisar redefinir a senha sem fazer login, poderá editar este arquivo e substituir o hash antigo por um novo gerado a partir do bcrypt:
Isso produzirá seu hash, com o prefixo 2a, o prefixo correto para os hashes Jenkins.
Agora, edite o arquivo config.xml:
Depois de inserir o novo hash, redefina o Jenkins:
(se você estiver em um sistema com systemd):
Agora você pode fazer login e não deixou o sistema aberto por um segundo.
fonte
Copie a senha do arquivo initialAdminPassword e cole-a no Jenkins.
fonte
Para remover a segurança padrão do jenkins no sistema operacional Windows,
Você pode percorrer o arquivo Config.xml criado em /users/{UserName}/.jenkins.
Dentro deste arquivo, você pode alterar o código de
Para,
fonte
1 verifique primeiro o local se você instalar war ou Linux ou Windows com base nesse
por exemplo, se a guerra no Linux e para o usuário administrador
vá para esta tag após #jbcrypt:
altere essa senha usando qualquer site para gerador de hash bcrypt
certifique-se de começar com $ 2a, porque esse jenkens usa
fonte
Etapa 1: vá para o diretório cd .jenkins / secrets e você receberá um 'initialAdminPassword'.
Etapa 2: nano initialAdminPassword
você receberá uma senha
fonte
mudando o
<useSecurity>true</useSecurity>
que<useSecurity>false</useSecurity>
não será suficiente, você deve remover<authorizationStrategy>
e<securityRealm>
elementos também e reinicie o servidor Jenkins fazendosudo service jenkins restart
.lembre-se disso, definido
<usesecurity>
comofalse
somente pode causar um problema para você, pois essas instruções são mencionadas na documentação oficial aqui .fonte
Uma maneira fácil de resolver isso é usar o admin psw para fazer login com seu usuário administrador:
sudo su -
xclip -sel clip < /var/lib/jenkins/secrets/initialAdminPassword
ctrl + v
a caixa de entrada da senha.Instale o xclip se não o tiver:
$ sudo apt-get install xclip
fonte
Em caso de Jenkins sobre um recipiente gerido por uma Kubernetes POD é um pouco mais complexa, pois:
kubectl exec PODID --namespace=jenkins -it -- /bin/bash
você permitirá o acesso diretamente para o recipiente rodando Jenkins, mas você não terá acesso root ,sudo
,vi
e muitos comandos não estão disponíveis e, portanto, uma solução alternativa é preciso.Use
kubectl describe pod [...]
para encontrar o nó executando seu Pod e o ID do contêiner(docker://...)
SSH
no nódocker exec -ti -u root -- /bin/bash
para acessar o contêiner com privilégios de Raizapt-get update
sudo apt-get install vim
A segunda diferença é que o arquivo de configuração do Jenkins é colocado em um caminho diferente que corresponde ao ponto de montagem do volume persistente, ou seja
/var/jenkins_home
, esse local pode mudar no futuro, verifique em execuçãodf
.Em seguida, desative a segurança - altere true para false no
/var/jenkins_home/jenkins/config.xml
arquivo.Agora basta reiniciar o Jenkins, ação que fará com que o contêiner e o Pod morram, ele será criado novamente em alguns segundos com a configuração atualizada (e toda a chance, como vi, atualização apagada), graças ao volume persistente.
Toda a solução foi testada no Google Kubernetes Engine. ATUALIZAÇÃO Observe que você também pode executar
ps -aux
a senha em texto simples, mesmo sem acesso root.fonte
Muitas vezes você não terá permissão para editar o arquivo config.xml.
A coisa mais simples seria voltar atrás
config.xml
e excluir usando o comando sudo.Reinicie os jenkins usando o comando
sudo /etc/init.d/jenkins restart
Isso desativará toda a segurança no Jenkins e a opção de login desaparecerá
fonte
Usando o bcrypt, você pode resolver esse problema. Estendendo a resposta @Reem para alguém que está tentando automatizar o processo usando o bash e o python.
Eu mantive a senha codificada aqui, mas pode ser uma entrada do usuário, dependendo do requisito. Certifique-se também de acrescentar que,
sleep
caso contrário, qualquer outro comando que gere em torno do Jenkins falhará.fonte
Para simplesmente desabilitar a segurança e o assistente de inicialização, use a propriedade JAVA:
O bom disso é que você pode usá-lo em uma imagem do Docker, para que seu contêiner sempre seja iniciado imediatamente, sem a tela de login:
Observe que, conforme mencionado por outros, o Jenkins config.xml está na
/var/jenkins_home
imagem, mas o usosed
para modificá-lo a partir do Dockerfile falha, porque (presumivelmente) o config.xml não existe até o servidor iniciar.fonte
Eu tive um problema semelhante e, após a resposta do ArtB,
Descobri que meu usuário não tinha as configurações adequadas. então o que eu fiz:
Nota: modificar manualmente esses arquivos XML é arriscado. Faça por sua conta e risco. Como eu já estava trancada, não tinha muito a perder. AFAIK No pior caso, eu teria excluído o arquivo ~ / .jenkins / config.xml como mencionado anteriormente.
**> 1. ssh na máquina jenkins
debaixo
adicionar:
Agora, você pode ir para direções diferentes. Por exemplo, eu tinha integração com o github oauth, então eu poderia ter tentado substituir a autorizaçãoStrategy por algo como abaixo:
Nota :, funcionou no meu caso porque eu tinha um plugin específico do github oauth que já estava configurado. Portanto, é mais arriscado que a solução anterior.
fonte
Edite o arquivo $ JENKINS_HOME / config.xml e altere a configuração de segurança com este:
Depois disso, reinicie o Jenkins.
fonte
Para quem está usando o macOS, a nova versão apenas pode ser instalada pelo homebrew. portanto, para descansar, esta linha de comando deve estar usando:
fonte