25

我忘记了 SonarQube 的管理员密码。谷歌搜索并发现crypted_password应该将值更新为8b1254c1c684c5dc904f3f174cea1cacbde4ad84将密码重置为admin. 但我仍然无法登录。有什么建议吗?

4

9 回答 9

32

只是对此的更新,新链接在这里: http

://docs.sonarqube.org/display/SONAR/Authentication 正如链接上所说,您可以这样做:

如果您丢失了 SonarQube 实例的管理员密码,您可以通过执行以下查询来重置它:

update users 
set crypted_password = '88c991e39bb88b94178123a849606905ebf440f5', salt= '6522f3c5007ae910ad690bb1bdbf264a34884c6d' 
where login = 'admin'

这会将密码重置为管理员。

于 2014-12-17T09:54:02.267 回答
15

您需要连接到声纳数据库并从那里更改管理员密码。对于 postgresql:

psql -h mysonar.dc9wocad9da.us-west-1.rds.amazonaws.com -p 5432 -U sonaruser sonardb

然后运行查询:

update users set crypted_password = '88c991e39bb88b94178123a849606905ebf440f5', salt='6522f3c5007ae910ad690bb1bdbf264a34884c6d' where login = 'admin';

您的新管理员通行证是:

user: admin
pass admin

登录后不要忘记更改管理员密码。

来源:https ://docs.sonarqube.org/display/SONAR/Authentication

于 2017-07-20T15:09:53.787 回答
14

我不确定你从哪里得到的信息。这是重置密码重新创建管理员用户的官方文档

于 2013-08-13T13:02:42.590 回答
4

我想分享我如何恢复托管在 AWS EC2 上的 Bitnami SonarQube 的管理员用户密码,但我认为它对于任何其他情况也同样有效。

就我而言,我没有管理员密码,也没有数据库密码。这是我重置管理员密码所采取的步骤列表。

  1. SSH 到 EC2 实例
  2. 查找sonar.properties文件。就我而言,它位于/opt/bitnami/apps/sonarqube/sonarqube/conf/
  3. DATABASE部分中,我找到了属性sonar.jdbc.usernamesonar.jdbc.password在我的情况下是纯文本的 mysql 凭据。
  4. 使用凭据连接到 mysql
mysql -uSONARQUBE_USER -p -D bitnami_sonarqube
  1. 在部分的文档页面上Reinstating Admin Access,您会找到查询,该查询允许您从数据库级别将管理员用户密码重置为默认密码,即简单的admin.
update users set crypted_password = '$2a$12$uCkkXmhW5ThVK8mpBvnXOOJRLd64LJeHTeCkSuB3lfaR2N0AYBaSi', salt=null, hash_method='BCRYPT' where login = 'admin'
  1. 在浏览器中转到 SonarQube 并尝试使用凭据登录admin/admin
  2. 登录成功后不要忘记修改密码。
于 2020-01-23T13:23:44.813 回答
2

当您丢失管理员用户密码时,密码重置与 postgres DB 用户表更新一起工作正常。您可以使用以下加密值和盐为声纳数据库中的任何用户重置密码。

登录到声纳数据库:

psql -U sonar_user -W
sonar_db=# select * from users;

检查表登录列并选择要重置密码的用户。如果您没有声纳管理控制台访问权限。

update users set crypted_password = '88c991e39bb88b94178123a849606905ebf440f5', salt='6522f3c5007ae910ad690bb1bdbf264a34884c6d' where login = 'sonara_user_name';

然后密码将是管理员。登录系统后,请务必将密码重置为您自己的密码。

于 2020-05-20T11:17:48.260 回答
1

官方文档: https ://docs.sonarqube.org/latest/instance-administration/security/#header-3

update users set crypted_password='100000$t2h8AtNs1AlCHuLobDjHQTn9XppwTIx88UjqUm4s8RsfTuXQHSd/fpFexAnewwPsO6jGFQUv/24DnO55hY6Xew==', salt='k9x9eN127/3e/hf38iNiKwVfaVk=', hash_method='PBKDF2', reset_password='true', user_local='true' where login='admin';
于 2021-11-15T16:02:25.533 回答
0

如果你在 Docker 中运行了 Sonarqube,并且你已经挂载了一个用于数据持久性的卷,那么你可以在启动容器之前删除e7文件夹和sonar.mv.db数据库文件。

这会将您的 Sonarqube 实例重置为全新安装。

运行Community Edition v8.9的 docker 容器示例

docker container run -e SONARQUBE_HOME=/opt/sonarqube/data -e SQ_DATA_DIR=/opt/sonarqube/data -e PWD=/opt/sonarqube/data -v c:/src/data/sonarqube/:/opt/sonarqube/data -dp 9000:9000 --name sonarqube sonarqube:8.9-community

其中c:/src/data/sonarqube/是本地文件夹(绑定到容器 /opt/sonarqube/data),其中包含可删除的e7文件夹和sonar.mv.db文件。

请注意:按照这些说明,您将丢失所有项目和令牌,但您将获得对全新安装的 Sonarqube 的管理员访问权限。

于 2021-11-08T09:19:05.543 回答
0

如何生成 sonarqube 密码哈希?

private static final class Sha1Function implements HashFunction {
@Override
public AuthenticationResult checkCredentials(UserDto user, String password) {
  if (user.getCryptedPassword() == null) {
    return new AuthenticationResult(false, "null password in DB");
  }
  if (user.getSalt() == null) {
    return new AuthenticationResult(false, "null salt");
  }
  if (!user.getCryptedPassword().equals(hash(user.getSalt(), password))) {
    return new AuthenticationResult(false, "wrong password");
  }
  return new AuthenticationResult(true, "");
}

private static String hash(String salt, String password) {
  return DigestUtils.sha1Hex("--" + salt + "--" + password + "--");
}

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import hashlib


def hash(salt, password):
    """calc sonar crypted_password
    """

    return hashlib.new(
        'sha1',
        bytes(f"--{salt}--{password}--", 'utf-8')
    ).hexdigest()



if __name__ == '__main__':
    # admin: admin

    password = 'admin'
    salt = '6522f3c5007ae910ad690bb1bdbf264a34884c6d'
    crypted_password = '88c991e39bb88b94178123a849606905ebf440f5'

    if crypted_password == hash(salt, password):
        print(f"{password} -> sonarqube hash algorithm-> {crypted_password}")
于 2019-01-27T07:47:37.047 回答
0

撰写此答案时的官方文档目前指出:

恢复管理员访问权限

如果您更改然后丢失了管理员密码,您可以使用以下查询重置它:

update users set crypted_password='100000$t2h8AtNs1AlCHuLobDjHQTn9XppwTIx88UjqUm4s8RsfTuXQHSd/fpFexAnewwPsO6jGFQUv/24DnO55hY6Xew==', salt='k9x9eN127/3e/hf38iNiKwVfaVk=', hash_method='PBKDF2', reset_password='true', user_local='true' where login='admin';

如果您删除了 admin 并随后锁定了具有全局管理权限的其他用户,则需要使用以下查询将 admin 重新授予用户:

INSERT INTO user_roles(uuid, user_uuid, role) 
VALUES ('random-uuid',
(select uuid from users where login='mylogin'), 
'admin');

它在我的 sonarqube 实例版本 8.9.7 上就像一个魅力

此外,如果您使用的是 kubernetes,您可以使用以下命令轻松启动 psql 容器:

kubectl run --restart=Never --image=governmentpaas/psql --command=true psql -- sleep infinity
kubectl exec -it psql -- sh

然后使用以下命令连接到数据库

psql -h yourhostname --user sonarqubeuser -d sonarqubedb
于 2022-02-11T15:19:21.953 回答