我正在尝试使用 GitLab 设置 LDAP 身份验证(在 VM 上的 Ubuntu 14.04 amd64 上安装了 7.12.2 版,Omnibus 设置)。我已将 gitlab.rb 文件编辑为如下所示:
gitlab_rails['ldap_enabled'] = true
gitlab_rails['ldap_servers'] = YAML.load <<-'EOS' # remember to close this block with 'EOS' below
main: # 'main' is the GitLab 'provider ID' of this LDAP server
label: 'LDAP'
host: '********'
port: 389
uid: 'sAMAccountName'
method: 'plain' # "tls" or "ssl" or "plain"
bind_dn: 'CN=********,OU=********,OU=********,DC=********,DC=***'
password: '********'
active_directory: true
allow_username_or_email_login: false
block_auto_created_users: false
base: 'DC=********,DC=***'
user_filter: ''
EOS
Run Code Online (Sandbox Code Playgroud)
这会导致可怕的“无法从 Ldapmain 授权您,因为“凭据无效”。错误。我试过,用户名(在 bind_dn 变量中):“johnsmith@example.com”(基于用户名的电子邮件)、“John …
我正在尝试通过 jumpbox 进行 SSH,但 SSH 似乎有意检查 jumpbox 的主机密钥,即使我告诉它不要使用普通-o StrictHostKeyChecking=no -o UserKnownHostsFile=no
命令行选项。
如果我直接通过 SSH 连接到 jumpbox,我可以让 SSH 按预期忽略错误:
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i ~/.ssh/id_jumpuser_rsa jumpuser@jumpbox
Run Code Online (Sandbox Code Playgroud)
但是,如果我添加代理跳转选项,我突然收到错误消息。错误不是来自 jumpbox 在 jumpbox 上的任何 .ssh 目录中没有 known_hosts 文件,我也没有以 jumpuser 身份登录:
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i ~/.ssh/id_jumpuser_rsa -J jumpuser@jumpbox jumpuser@10.10.0.5
Run Code Online (Sandbox Code Playgroud)
错误信息:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is …
Run Code Online (Sandbox Code Playgroud) 我使用 Packer 构建 VirtualBox 镜像,使用 Ansible 配置器来设置镜像。构建器步骤创建一个临时用户(ssh_username
和ssh_password
)。Ansible 供应器使用此临时用户运行。当然,我想在设置我们更安全的仅公钥用户后摆脱这个用户。因此,我添加了第二个 Ansible 配置步骤,以安全用户身份连接并删除不安全用户。或者至少这是计划。但是,Ansible via packer 无法使用这种方法实际连接到 VM。
这是 packer.json 文件的相关部分:
"provisioners": [
{
"type": "ansible",
"playbook_file": "playbooks/image/image.yml",
"groups": [
"{{user `ansible_group`}}"
],
"user": "vagrant",
"extra_arguments": [
"--vault-password-file", "scripts/get-vault-password.sh",
"-e", "global_configuration_user={{user `configuration_user`}}",
"-e", "global_deployment_user={{user `deployment_user`}}",
"-e", "ansible_ssh_pass=vagrant",
"-vvvvv"
]
},
{
"type": "ansible",
"playbook_file": "playbooks/image/removeVagrant.yml",
"groups": [
"{{user `ansible_group`}}"
],
"user": "{{user `configuration_user`}}",
"extra_arguments": [
"--vault-password-file", "scripts/get-vault-password.sh",
"-e", "global_configuration_user={{user `configuration_user`}}",
"-e", "global_deployment_user={{user `deployment_user`}}",
"-e", "ansible_ssh_private_key_file=~/.ssh/id_{{user `configuration_user`}}_rsa",
"-vvvvv"
]
}
], …
Run Code Online (Sandbox Code Playgroud) 首次创建 VM 时,它会获得一个用于运行配置的安装用户。我想在最后一步删除该用户,因为它不一定安全而且没有必要。但是,Packer 以该用户身份运行所有配置程序。我尝试过使用 Ansible,但它似乎仍然以某种身份使用该用户,因此 Ansible 剧本实际上无法在不失败的情况下删除它(也就是说有程序仍在以给定用户身份运行)。我不是在胡言乱语,而是问是否有人对如何实现这个目标有任何想法,这应该很简单,但事实证明并非如此。
ansible ×2
packer ×2
ssh ×2
bastion ×1
gitlab ×1
hostkey ×1
ldap ×1
private-key ×1
ubuntu ×1
ubuntu-14.04 ×1