AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-109833

Itai Ganot's questions

Martin Hope
Itai Ganot
Asked: 2020-03-09 07:08:48 +0800 CST

使用 Consul 动态库存作为 Ansible 的库存,想设置特定的 ssh 用户,是怎么做的?

  • 2

我的设置:

网络中的每个物理服务器都安装了 consul-client,我使用 我编辑的consul_dynamic_inventory脚本管理这些服务器,以允许我使用基于 os 主要版本和其他内容的特定分组选项。

例子:

(base) ➜  ansible git:(master) ✗ ansible centos6 -m ping -e ansible_ssh_user=root
Sunday 08 March 2020  16:55:10 +0200 (0:00:00.101)       0:00:00.102 **********
agent-c6-06.node.company.consul | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}
agent-c6-01.node.company.consul | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}
agent-c6-05.node.company.consul | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}

上面的示例是可能的,因为我将/etc/ansible/ansible.cfg“inventory”指令配置为指向该 consul_dynamic_inventory 脚本,因此我不必显式地将“-i inventory_file”添加到命令中。

我的问题:

我想将“ansible_ssh_user=root”添加到默认值,这样我就不必在运行 ansible 时提供该开关。

通常,为了将它添加到所有主机,我会在清单文件中添加:

[all:vars]
ansible_ssh_user=root

但是由于我的库存实际上是一个脚本,我不确定在哪里添加它,因为将它添加到脚本中显然会破坏它的运行。

我尝试在ansible.cfg文件的以下部分添加它:

[defaults]
[inventory]
[ssh_connection]

但无济于事。

我的问题:

添加它的正确位置在哪里?

ansible consul
  • 1 个回答
  • 1163 Views
Martin Hope
Itai Ganot
Asked: 2018-12-31 09:03:49 +0800 CST

如何将 AWS S3 整个存储桶自动归档到 S3 Glacier?

  • 1

我需要将大约 200 个 AWS S3 存储桶存档到 S3 Glacier,我想自动执行此操作,但我找不到如何使用 aws-cli 完成此操作。

我发现的唯一方法是通过AWS UI ...手动进入每个存储桶并在其中标记每个目录->右键单击并选择“更改存储类型”并选择Glacier。

有人对这个有经验么?

amazon-web-services
  • 3 个回答
  • 1855 Views
Martin Hope
Itai Ganot
Asked: 2017-12-05 07:12:39 +0800 CST

AWS Cli 不包括特定的命令开关,即使文档显示它应该,知道如何解决它吗?

  • 1

AWS 在 5 天前宣布,他们现在支持跨不同区域的 VPC 对等互连。

资料来源: https ://aws.amazon.com/about-aws/whats-new/2017/11/announcing-support-for-inter-region-vpc-peering/

关于帮助您实现对等连接的 AWS Cli 命令,请查看此链接: http ://docs.aws.amazon.com/cli/latest/reference/ec2/create-vpc-peering-connection.html

您将看到该命令已被扩展,现在可以获得一个新开关“[--peer-region value]”,但在将我的 aws-cli 升级到最新版本后,该开关不包含在其中。

这些是我拥有的开关:

NAME
       describe-vpc-peering-connections -

DESCRIPTION
       Describes one or more of your VPC peering connections.

       See also: AWS API Documentation

SYNOPSIS
            describe-vpc-peering-connections
          [--filters <value>]
          [--dry-run | --no-dry-run]
          [--vpc-peering-connection-ids <value>]
          [--cli-input-json <value>]
          [--generate-cli-skeleton <value>]

我安装的 AWS Cli 版本是:

aws-cli/1.14.2 Python/2.7.10 Darwin/16.4.0 botocore/1.8.6

Python 3.6 aws-cli 也缺少此开关。

会不会是官方的 AWS 文档已经更新但 AWS Cli 没有?

还有其他人碰到这个问题吗?

amazon-web-services
  • 1 个回答
  • 43 Views
Martin Hope
Itai Ganot
Asked: 2017-12-04 08:34:10 +0800 CST

将一个区域的 VPC 之间的流量路由到另一个区域的 VPC

  • 2

为了允许俄勒冈州 (us-west-2) 的 VPC 中的实例与爱尔兰 (eu-west-1) 的另一个 VPC 上的实例联系,我在两个区域都安装了 OpenSwan 网关机器,并在两个区域之间建立了 IPSEC 隧道两个运行正常的区域。

Details:
Oregon VPC CIDR: 172.31.0.0/16
Ireland VPC CIDR: 172.91.0.0/16

在爱尔兰,我使用了我编写的 CloudFormation 模板来创建一个新堆栈,其中包括创建一个新的隔离 VPC,CloudFormation 正在运行的任务之一是在默认爱尔兰 VPC 和新创建的(隔离) VPC。

The new isolated VPC CIDR: 172.52.0.0/16.

目前,如果我从位于俄勒冈州 (172.31.xx) 的默认 VPC 中的实例向位于爱尔兰默认 VPC (172.91.xx) 中的实例运行 ping 命令,它就像一个魅力。

接下来,我希望新隔离 VPC (172.52.xx) 中的机器能够访问俄勒冈州 (172.31.xx) 的默认 VPC 中的实例。

与俄勒冈州默认 VPC 关联的路由表配置为路由流量:

to: 172.52.0.0/16 GW: Interface of the OpenSwan server in Oregon.
to: 172.91.0.0/16 GW: Interface of the OpenSwan server in Oregon.

与爱尔兰的默认 VPC 关联的路由表配置为路由流量:

to: 172.31.0.0/16 GW: Interface of the OpenSwan server in Ireland.
to: 172.52.0.0/16 GW: The peering connection ID (between 172.52.x.x and 172.91.x.x)

附加到 OpenSwan 实例 @ Oregon 的安全组:

Allows all traffic to 172.52.x.x/16, 172.91.x.x/16, 172.31.x.x/16.
Allows UDP 500 and 4500 to the EIP of the OpenSwan instance in Ireland.

附加到 OpenSwan 实例 @ Ireland 的安全组:

Allows all traffic to 172.52.x.x/16, 172.91.x.x/16, 172.31.x.x/16.
Allows UDP 500 and 4500 to the EIP of the OpenSwan instance in Oregon.

ipsec.conf:

version 2.0     # conforms to second version of ipsec.conf specification

# basic configuration
config setup
        protostack=netkey
        nat_traversal=yes
        virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v4:172.91.0.0/16,%v4:172.52.0.0/16,%v4:25.0.0.0/8,%v4:172.31.0.0/16,%v4:172.59.0.0/20,%v6:fd00::/8,%v6:fe80::/10
        oe=off

include /etc/ipsec.d/*.conf

我能够从每台 OpenSwan 机器(俄勒冈/爱尔兰)ping 驻留在俄勒冈州默认 VPC 中的实例,反之亦然,但我无法从驻留在 172.52.xx/16 子网中的实例 ping 该实例.

你认为我错过了哪条路线?我需要允许爱尔兰的隔离 VPC 中的实例访问俄勒冈州的默认 VPC。

amazon-ec2
  • 2 个回答
  • 873 Views
Martin Hope
Itai Ganot
Asked: 2017-10-26 23:08:48 +0800 CST

当我使用 uniq -u 时,我没有得到任何输出,但为什么呢?

  • 0

当我运行以下命令时,我希望获得 ASG 成员实例的 IP 地址:

current_servers=$(aws ec2 describe-instances --instance-ids $(aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names "${asgname}" --region $region | grep InstanceId | awk -F: '{print $2}' | tr -d '\"|,' | tr -d '\n') --region $region | grep "PrivateIpAddress" | grep -v '\[' | awk -F: '{print $2}' | uniq -u | tr -d '\"|,' )

出于某种原因,我没有输出。

但是,如果我将uniq -u命令更改为 just uniq,那么我会得到正确的输出。

来自 uniq 的人:

-u, --unique
              only print unique lines

如果没有 uniq 命令,则输出为:

 172.51.39.73
 172.51.39.73
 172.51.39.73

因此,似乎(由 uniq 的人)如果我只想获得一次输出,我必须使用uniq -u.

任何人都知道为什么该命令会这样吗?如果我使用“-u”开关,那不会给我任何输出?

linux
  • 1 个回答
  • 59 Views
Martin Hope
Itai Ganot
Asked: 2017-10-25 02:28:31 +0800 CST

如何使用 CloudFormation 管理 VPC 与 Route53 托管区域的关联?

  • 2

我编写了一个 CloudFormation 模板,它创建了一个 vpc、子网、路由、asg 和实例。

我希望 CloudFormation 处理新创建的 vpc 与现有 Route53 托管区域的关联,但我在 CloudFormation 中找不到如何做到这一点。

使用 aws cli,这可以通过运行(在 user_data 脚本中)来实现:

aws route53 associate-vpc-with-hosted-zone --hosted-zone-id AAZZZ123AA --vpc VPCRegion=us-west-2,VPCId=$vpcid

但我希望 CloudFormation 管理这些关联,因此当堆栈被删除时,vpc 关联也将被删除。

我在网上找不到如何使用 CloudFormation 实现它,那么有人知道它是否可以实现吗?

amazon-web-services
  • 1 个回答
  • 1847 Views
Martin Hope
Itai Ganot
Asked: 2017-10-19 01:47:32 +0800 CST

我不确定应该从捆绑证书生成哪些文件,有人知道吗?

  • -1

我购买了一个新的通配符证书并获得了一个包含以下文件的 zip 文件:

star.domain.com.crt
star.domain.com.ca-bundle
star.domain.com.p7b

需要证书的服务提供商希望我以以下格式向他发送新证书:

Private key
Public key (CSR)
Intermediate certificate

我不确定如何从我从 SSL 提供程序获得的文件中生成这些文件。

我已经运行了一些 openssl 命令来尝试生成所需的文件,但我不确定生成的文件是否符合我需要发送证书的服务。

编辑:我运行了以下命令来创建 .pem 文件:

openssl pkcs7 -in star.domain.com.p7b -text -out star.domain.com.pem -print_certs

这是创建pem的正确方法吗?

有人愿意帮助我吗?

ssl-certificate
  • 2 个回答
  • 95 Views
Martin Hope
Itai Ganot
Asked: 2017-10-17 23:29:43 +0800 CST

如何扩展安全组映射以便在 CloudFormation 模板中为每个区域添加另一个级别?

  • 0

我编写了一个 CloudFormation 模板,该模板创建了一个 AutoScaling 组,该组依次启动每个环境的服务器。

直到今天,该公司一直在 us-west-2 区域工作,SecurityGroups 映射如下所示:

"SecurityGroupMap" : {
    "DEV"  : { "sg" : "sg-d111acbe" },
    "Load"  : { "sg" : "sg-d111acbe" },
    "Staging"   : { "sg" : "sg-d123acbe" },
    "Prod-US" : { "sg" : "sg-d145acbe" }
},

现在有了新的动力,我的老板希望我们能够开始在另一个地区构建 CloudFormation 模板。

由于它是另一个区域,因此我需要提前手动创建所需的 SecurityGroups 并在模板中更新它们的 ID。

我想知道,如果这样的写作方法可行:

"SecurityGroupMap" : {
    "RegionMap": {
        "us-east-1" : { "DEV" : "sg-1", "Load" : "sg-2", "Staging" : "sg-3", "Prod-US" : "sg-4" },
        "us-east-2" : { "DEV" : "sg-1", "Load" : "sg-2", "Staging" : "sg-3", "Prod-US" : "sg-4" },
        "us-west-1" : { "DEV" : "sg-1", "Load" : "sg-2", "Staging" : "sg-3", "Prod-US" : "sg-4" },
        "us-west-2" : { "DEV" : "sg-d143acbe", "Load" : "sg-d143acbe", "Staging" : "sg-d143acbe", "Prod-US" : "sg-d143acbe" },
        "eu-west-1" : { "DEV" : "sg-1", "Load" : "sg-2", "Staging" : "sg-3", "Prod-US" : "sg-4" },
        "eu-central-1" : { "DEV" : "sg-1", "Load" : "sg-2", "Staging" : "sg-3", "Prod-US" : "sg-4" },
        "eu-west-2" : { "DEV" : "sg-1", "Load" : "sg-2", "Staging" : "sg-3", "Prod-US" : "sg-4" }
    },

如果是这样,[ { "Fn::FindInMap" : } ]遗嘱会是什么样子?

amazon-cloudformation
  • 1 个回答
  • 209 Views
Martin Hope
Itai Ganot
Asked: 2017-10-17 03:45:37 +0800 CST

如何将 AWS 证书分解为公钥/私钥和中间证书?[复制]

  • 1
这个问题在这里已经有了答案:
从 aws 证书管理器下载 SSL 证书 4 个答案
4年前关闭。

我已经在 AWS 中颁发了一个通配符证书以安装在公司的网站上(存储在 CloudFront 发行版中)。

该公司使用客户支持服务,当您浏览 support.company.com 时,它会将您带到该服务站点。

直到今天,对支持站点的访问都是通过 HTTP 协议完成的,我们希望将其更改为 HTTPS。

为此,我需要将新证书上传到该客户支持服务提供商站点,它们需要私钥、公钥和中间证书。

我已经运行以下命令来获取证书:

aws iam get-server-certificate --server-certificate-name wild_company.com_10072019

但是输出显示了“CertificateChain”——所有证书都显示在一行中,另一个“CertificateBody”也显示在一行中。

CertificateBody 更容易通过“--- Begin certificate ---”和“---END certificate---”来区分,它们只出现一次,但在 CertificateChain 中有很多开始/结束标记,我没有确定如何将其转换为公钥/私钥和中间证书。

知道怎么做吗?

amazon-web-services
  • 1 个回答
  • 126 Views
Martin Hope
Itai Ganot
Asked: 2017-10-17 00:54:11 +0800 CST

使用 ssl 进行 CloudFront 重定向在访问 https://company.com 时会出现“无效证书”错误,但为什么呢?

  • 2

我已经使用 [本指南] 配置了 AWS CloudFront 重定向(使用 SSL)。1

我已经用 Alias 配置了一个指向 company.com 的 A 记录。到 CloudFront 域名。

当我访问 CloudFront 域名时,该站点已成功加载并显示为安全。

但是当我访问该站点时,https://company.com我收到一个证书错误,表明该证书无效。

我购买的证书是用于*.company.com.

在 chrome 中,我收到以下错误:

Your connection is not private

Attackers might be trying to steal your information from angelsense.com (for example, passwords, messages, or credit cards). 
Learn more
NET::ERR_CERT_COMMON_NAME_INVALID

Automatically send some system information and page content to Google to help detect dangerous apps and sites. Privacy policy

如何修复?

ssl-certificate
  • 1 个回答
  • 2061 Views
Martin Hope
Itai Ganot
Asked: 2017-10-16 22:52:09 +0800 CST

会话关闭时如何从 known_hosts 中自动删除关键行?

  • 1

我正在使用 AWS CloudFormation 自动化整个环境,在测试期间,我需要经常杀死和重新创建服务器。

服务器配置为从专用池设置​​其 IP 地址,这意味着在我第一次连接到它们时,我必须接受主机密钥检查(是/否问题),然后当我删除服务器并重新创建时它,我每次都必须从 known_hosts 文件中删除服务器的密钥。

我的问题是:

关闭会话时是否可以自动从 known_hosts 中删除密钥?有没有我错过的设置?

linux
  • 3 个回答
  • 1933 Views
Martin Hope
Itai Ganot
Asked: 2017-07-20 05:34:16 +0800 CST

无法连接到 vpn 网络中的成员服务器,反之亦然,但为什么?

  • 1

我在 AWS 中为 OpenVPN 概念验证创建了一个测试 VPC。

在这个 VPC 中,我使用了来自 AWS Marketplace 的 linux 成员服务器和 OpenVPN 服务器 AMI,安装并配置了它。

作为客户端,我可以ssh使用它的 3 个 ip 中的每一个连接到 VPN 网络并进入 OpenVPN 服务器,但问题是我无法ssh进入 VPC 主子网中的成员服务器。

OpenVPN 服务器和成员服务器之间的网络已完全建立。

详情如下:

VPC CIDR: 172.16.0.0/16
VPC Main Subnet CIDR: 172.16.200.0/24 
VPN CIDR: 172.16.201.0/24

OVPN server: 
Main Subnet interface: 172.16.200.66
VPN Server interface: 172.16.201.1
VPN Client interface: 172.16.201.129

Member server:
Main Subnet interface: 172.16.200.71

My Client IP: 172.16.201.131-134 (disconnected a few times)

我已经像这样配置了 OpenVPN 服务器: 并且:在此处输入图像描述 在此处输入图像描述

此外,我尝试过使用 NAT,但无济于事。

当我tcpdump在尝试ssh从客户端机器到成员服务器时从 OVPN 服务器运行时:

openvpnas@openvpnas2:~$ sudo tcpdump -i as0t1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on as0t1, link-type RAW (Raw IP), capture size 262144 bytes
11:21:52.668974 IP 172.16.201.131.59009 > 172.16.200.71.ssh: Flags [SEW], seq 2266158529, win 65535, options [mss 1252,nop,wscale 5,nop,nop,TS val 758529356 ecr 0,sackOK,eol], length 0
11:21:53.681875 IP 172.16.201.131.59009 > 172.16.200.71.ssh: Flags [S], seq 2266158529, win 65535, options [mss 1252,nop,wscale 5,nop,nop,TS val 758530357 ecr 0,sackOK,eol], length 0

我可以看到 OVPN 服务器正在尝试将数据包转发到成员服务器,但是在成员服务器tcpdump的接口上运行时,我看到没有数据包到达。

OVPN服务器上的路由:

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.16.200.1    0.0.0.0         UG    0      0        0 eth0
172.16.200.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
172.16.201.0    0.0.0.0         255.255.255.128 U     0      0        0 as0t0
172.16.201.128  0.0.0.0         255.255.255.128 U     0      0        0 as0t1

成员服务器上的路由:

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.16.200.1    0.0.0.0         UG    0      0        0 eth0
172.16.200.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
172.16.201.0    172.16.200.66   255.255.255.0   UG    0      0        0 eth0

客户端(我的笔记本电脑)上的路由,其中​​一些是我手动添加的:

netstat -nr | grep tun
172.16.200/24      172.16.201.134     UGSc            4        4   utun2
172.16.201/24      172.16.200.66      UGSc            1        2   utun2
172.16.201.134     172.16.201.134     UH              3        4   utun2

OVPN 服务器上的网络接口:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 02:fb:99:4a:67:04 brd ff:ff:ff:ff:ff:ff
    inet 172.16.200.66/24 brd 172.16.200.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::fb:99ff:fe4a:6704/64 scope link
       valid_lft forever preferred_lft forever
3: pr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
    link/ether 36:ce:f1:ac:59:42 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::34ce:f1ff:feac:5942/64 scope link
       valid_lft forever preferred_lft forever
21: as0t0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 200
    link/none
    inet 172.16.201.1/25 brd 172.16.201.127 scope global as0t0
       valid_lft forever preferred_lft forever
22: as0t1: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 200
    link/none
    inet 172.16.201.129/25 brd 172.16.201.255 scope global as0t1
       valid_lft forever preferred_lft forever

成员服务器上的网络接口:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 02:c5:62:3b:ef:02 brd ff:ff:ff:ff:ff:ff
    inet 172.16.200.71/24 brd 172.16.200.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::c5:62ff:fe3b:ef02/64 scope link
       valid_lft forever preferred_lft forever

还有几点:

ping从我的客户端到成员服务器:

$ ping 172.16.200.71
PING 172.16.200.71 (172.16.200.71): 56 data bytes
Request timeout for icmp_seq 0

ping从我的客户端到 OVPN 服务器(使用 VPC 主子网):

$ ping 172.16.200.66
PING 172.16.200.66 (172.16.200.66): 56 data bytes
64 bytes from 172.16.200.66: icmp_seq=0 ttl=64 time=87.657 ms

ping从我的客户端到 OVPN vpn ip 也可以。

此 VPC 在 AWS 中的路由表: 在此处输入图像描述

这些是我的问题:

  1. 我应该在 VPC 中创建一个“172.16.201.0”子网(vpn 子网)吗?(我有,但它没有解决问题......这只是我尝试过的事情之一)。

  2. 好像我错过了一些东西,也许在 AWS 的配置中,你能试着找出我的问题吗?

linux
  • 1 个回答
  • 234 Views
Martin Hope
Itai Ganot
Asked: 2017-03-06 02:40:13 +0800 CST

Proxmox:是否可以创建逻辑容器并将虚拟机放置在它们下面以获得更好的可见性?

  • 1

我的 Proxmox 服务器中有大约 50 台服务器,它们在 8 个 Proxmox 主机的集群上运行。

我想创建一个名为“Product 1”的逻辑容器,并将所有相关的虚拟机放在这个逻辑容器下。

那可能吗?我在网上找不到答案。

linux proxmox
  • 1 个回答
  • 41 Views
Martin Hope
Itai Ganot
Asked: 2017-02-21 05:14:36 +0800 CST

Ubuntu:无法更改 root(所有用户)打开文件的数量限制,可能是什么原因?

  • 2

我有一个 Ubuntu 16.04 服务器。

当我以 root 身份运行时,ulimit -n我得到 1024。

当我以我的用户身份运行它时,我得到 65535。

但我想确保包括 root 在内的所有用户都将打开文件限制设置为 65535。

问题是我已经做了我所知道的一切来改变它,但对于 root 来说它仍然显示 1024。

以下是我做过的事情:

root@sensu:/etc/security/limits.d# cat 90-nofiles.conf
* soft     nproc          65535
* hard     nproc          65535
* soft     nofile         65535
* hard     nofile         65535

root@sensu:/etc/security# grep nofile limits.conf
#        - nofile - max number of open files
*   soft     nofile         65535
*   hard     nofile         65535

root@sensu:/etc/security# grep file-max  /etc/sysctl.conf
fs.file-max = 65536

我当然跑了sysctl -p。

有问题的进程是redis:

root@sensu:/proc# grep "open files" /proc/1487/limits
Max open files            4096                 4096                 files

查看 redis 初始化文件:

root@sensu:/proc# grep ulimit /etc/init.d/redis-server
    ulimit -n 100001

正如您在示例中看到的,没有理由将此限制设为 1024,但仍然......它是 1024。

可能是什么原因?我缺少的那个设置在哪里?

linux limits ubuntu-16.04
  • 1 个回答
  • 2312 Views
Martin Hope
Itai Ganot
Asked: 2016-08-04 06:02:51 +0800 CST

詹金斯:试图添加一个愚蠢的奴隶,但缺少选项,知道如何添加它吗?

  • 11

我已经在服务器上安装了 Jenkins 2.x,现在我正在尝试添加“Dumb slave”,但缺少该选项。

在这个 Jenkins 官方教程中,它说在创建新节点时应该出现该选项,但我唯一的选择是:

永久代理

截屏: 在此处输入图像描述

而且我找不到添加此功能的方法。

有谁知道怎么添加?

jenkins centos6
  • 1 个回答
  • 12737 Views
Martin Hope
Itai Ganot
Asked: 2016-06-15 00:28:08 +0800 CST

如何配置 pam sshd 以允许不同用户/组的不同规则?

  • 2

我正在我工作的公司的出站服务器上配置谷歌双重身份验证。

以下是相关配置 /etc/ssh/sshd_config:

ubuntu@stage-itai-1:~$ egrep -v '^#' /etc/ssh/sshd_config  | sed '/^\s*$/d'
Port 22
Protocol 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
UsePrivilegeSeparation yes
KeyRegenerationInterval 3600
ServerKeyBits 1024
SyslogFacility AUTH
LogLevel INFO
LoginGraceTime 120
PermitRootLogin without-password
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication yes
PasswordAuthentication no
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
UsePAM yes
Match Group gauth
    AuthenticationMethods publickey,keyboard-interactive

/etc/pam.d/sshd:

ubuntu@stage-itai-1:~$ egrep -v '^#' /etc/pam.d/sshd  | sed '/^\s*$/d'
auth required pam_google_authenticator.so nullok
account    required     pam_nologin.so
@include common-account
session [success=ok ignore=ignore module_unknown=ignore default=bad]        pam_selinux.so close
session    required     pam_loginuid.so
session    optional     pam_keyinit.so force revoke
@include common-session
session    optional     pam_motd.so  motd=/run/motd.dynamic noupdate
session    optional     pam_motd.so # [1]
session    optional     pam_mail.so standard noenv # [1]
session    required     pam_limits.so
session    required     pam_env.so # [1]
session    required     pam_env.so user_readenv=1 envfile=/etc/default/locale
session [success=ok ignore=ignore module_unknown=ignore default=bad]        pam_selinux.so open
@include common-password

作为“gauth”组成员的用户应该被强制提供公钥和谷歌验证码,这是预期的和有效的。

不是“gauth”组成员的用户应该被强制提供公钥,但实际上他们可以在不提供公钥或密码的情况下连接到机器。

机器上有一个称为“救援”的特殊用户,该用户应该被强制只提供密码,其目的是永远不会被锁定在机器之外,但实际上用户可以在没有密码的情况下连接密码。

我的问题是,我如何执行我的“假定”规则,这意味着:

  • “gauth”组的用户必须同时提供公钥和 Google OTP
  • 不是“gauth”组成员的用户只能通过提供公钥登录。
  • 用户“rescue”应该只能通过提供密码(或同时提供公钥)登录。

怎么做到呢?

编辑#1:

按照 FaCe 的回答,我的配置/etc/ssh/sshd_config如下:

对于整个文件,我已将 PasswordAuthentication 改回“是”,将“ChallengeResponseAuthentication”改回“否”,然后在文件底部添加以下行:

Match Group guath
    PasswordAuthentication no
    ChallengeResponseAuthentication yes
    AuthenticationMethods publickey,keyboard-interactive
Match User rescue
    PasswordAuthentication yes
    ChallengeResponseAuthentication no
    AuthenticationMethods password

重置 ssh 服务后我无法登录,无论我使用哪个用户,我都会收到以下错误:

ssh_exchange_identification: Connection closed by remote host

并且没有任何内容显示在/var/log/auth.log.

任何人都可以对此事有所了解吗?

authentication ssh pam google-authenticator
  • 2 个回答
  • 5907 Views
Martin Hope
Itai Ganot
Asked: 2016-06-02 03:26:29 +0800 CST

Ansible:是否可以在播放剧本而不是调试时“cat文件”并将其输出导出到屏幕?

  • 26

我写了一本为每个用户安装和配置 Google Authenticator 的剧本。

我想要剧本的最后一步到catgoogle_authenticator 配置文件。

使用“调试”模块,我可以让数据显示在屏幕上,但只能作为调试消息:

TASK: [debug var=details.stdout_lines] ****************************************
ok: [localhost] => {
    "details.stdout_lines": [
        "ZKMFTE2ADYA2OYCH",
        "\"RATE_LIMIT 3 30",
        "\" DISALLOW_REUSE",
        "\" TOTP_AUTH",
        "12920994",
        "88224784",
        "69464205",
        "38144121",
        "45634120"
    ]
}

我在网上读到我可以做这样的事情:

  - name: Print to screen google authenticator details
    command: /bin/cat {{ google_authenticator_secret_file_location }}
    register: details
    tags: google_2fa_user

  - debug: msg="{{ details.stdout_lines }}"

但是当我运行它时出现错误:

TASK: [Print to screen google authenticator details] **************************
changed: [localhost]

TASK: [debug msg="{{details.stdout_lines}}"] **********************************
fatal: [localhost] => Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/ansible/runner/__init__.py", line 532, in _executor
    exec_rc = self._executor_internal(host, new_stdin)
  File "/usr/lib/python2.7/dist-packages/ansible/runner/__init__.py", line 629, in _executor_internal
    return self._executor_internal_inner(host, self.module_name, self.module_args, inject, port, complex_args=complex_args)
  File "/usr/lib/python2.7/dist-packages/ansible/runner/__init__.py", line 815, in _executor_internal_inner
    result = handler.run(conn, tmp, module_name, module_args, inject, complex_args)
  File "/usr/lib/python2.7/dist-packages/ansible/runner/action_plugins/debug.py", line 41, in run
    kv = utils.parse_kv(module_args)
  File "/usr/lib/python2.7/dist-packages/ansible/utils/__init__.py", line 526, in parse_kv
    vargs = [x.decode('utf-8') for x in shlex.split(args, posix=True)]
  File "/usr/lib/python2.7/shlex.py", line 279, in split
    return list(lex)
  File "/usr/lib/python2.7/shlex.py", line 269, in next
    token = self.get_token()
  File "/usr/lib/python2.7/shlex.py", line 96, in get_token
    raw = self.read_token()
  File "/usr/lib/python2.7/shlex.py", line 172, in read_token
    raise ValueError, "No closing quotation"
ValueError: No closing quotation


FATAL: all hosts have already failed -- aborting

PLAY RECAP ********************************************************************

错误说:“没有结束引号”,尽管它被引用了。也试过:

 - debug: msg= "{{ details.stdout_lines }}"

知道可能是什么问题吗?

debug ansible ansible-playbook
  • 4 个回答
  • 65852 Views
Martin Hope
Itai Ganot
Asked: 2016-04-27 01:09:35 +0800 CST

如何在 Ansible 剧本中创建一个本地事实,该事实将跳过以前运行中已经完成的步骤?

  • 0

我写了一本从 git 三个 repo 克隆并从源代码编译它们的剧本。

每当我配置使用此剧本的机器时,都会克隆存储库,无论存储库的本地副本是否已更新。

我希望 git clone 仅在第一次发生,其余时间在我运行剧本时,我希望 Ansible 跳过这一步。

我已经阅读了 Ansible 文档上的“本地事实”,但我很难理解它应该如何实现。

这是我写的剧本:

---
  - name: Install required packages
    apt:  name={{item}} state=installed
    with_items:
         - "librdkafka-dev"
         - "libyajl-dev"
         - "librdkafka1"
         - "cmake"
    sudo: yes
    tags: kafkacat

  - name: Git clone kafkacat
    git:  repo=git://github.com/company/kafkacat.git
          dest={{ kafkacat_installdir }} accept_hostkey=yes force=yes
    tags: kafkacat

  - name: Git clone librdkafka
    git:  repo=git://github.com/company/librdkafka.git
          dest={{ kafkacat_installdir }}/librdkafka force=yes version={{ librdkafka_git_version }}
    tags: kafkacat

  - name: Git clone yajl
    git:  repo=git://github.com/company/yajl
          dest={{ kafkacat_installdir }}/yajl force=yes version={{ yajl_git_version }}
    tags: kafkacat

  - name: librdkafka compilation (configure)
    command: chdir={{ kafkacat_installdir }}/librdkafka {{ kafkacat_installdir }}/librdkafka/configure 
    tags: kafkacat

  - name: librdkafka compilation (make)
    command: chdir={{ kafkacat_installdir }}/librdkafka make
    tags: kafkacat

  - name: librdkafka compilation (make install)
    command: chdir={{ kafkacat_installdir }}/librdkafka make DESTDIR={{ kafkacat_installdir }}/tmp-bootstrap install
    tags: kafkacat

  - name: yajl compilation (configure)
    command: chdir={{ kafkacat_installdir }}/yajl {{ kafkacat_installdir }}/yajl/configure 
    tags: kafkacat

  - name: yajl compilation (make)
    command: chdir={{ kafkacat_installdir }}/yajl make
    tags: kafkacat

  - name: yajl compilation (make install)
    command: chdir={{ kafkacat_installdir }}/yajl make DESTDIR={{ kafkacat_installdir }}/tmp-bootstrap install
    tags: kafkacat

  - name: Set vagrant user & group as the owner of the folder
    file: path={{ kafkacat_installdir }} owner={{ kafkacat_owner }} group={{ kafkacat_group }} state=directory recurse=yes
    sudo: yes
    tags: kafkacat

  - name: kafkacat compilation (configure)
    command: chdir={{ kafkacat_installdir }} {{ kafkacat_installdir }}/configure --enable-json --enable-static
    environment: env
    tags: kafkacat
    #- debug: var=env

  - name: kafkacat compilation (make)
    command: chdir={{ kafkacat_installdir }} make
    environment: env
    tags: kafkacat
    #- debug: var=env

  - name: kafkacat compilation (make install)
    command: chdir={{ kafkacat_installdir }} make install
    sudo: yes
    tags: kafkacat

非常感谢您的帮助。

ansible ansible-playbook github
  • 1 个回答
  • 501 Views
Martin Hope
Itai Ganot
Asked: 2016-04-26 07:13:59 +0800 CST

通过ansible playbook导出环境值的正确方法是什么?

  • 2

我写了一个 ansible playbook,它应该安装一个名为 kafkacat 的工具。

剧本中的大多数任务都有效,除了一项(最重要的一项)。

我正在从源代码编译该工具,并且我已经使用我在 ansible 中构建的步骤成功地手动安装了它。

剧本的相关部分是:

- name: Install kafkacat (configure)
    command: chdir={{ kafkacat_installdir }} {{ kafkacat_installdir }}/configure --enable-json --enable-static
    sudo: yes

  - name: Install kafkacat (make)
    command: chdir={{ kafkacat_installdir }} make
    environment:
      CPPFLAGS: ' -Itmp-bootstrap/usr/local/include'
      STATIC_LIB_yajl: ' tmp-bootstrap/usr/local/lib/libyajl_s.a'
      STATIC_LIB_rdkafka: ' tmp-bootstrap/usr/local/lib/librdkafka.a'
      LIBS: ' -lpthread -lrt '
    sudo: yes

  - name: Install kafkacat (make install)
    command: chdir={{ kafkacat_installdir }} make install
    sudo: yes

“制作”过程需要知道我在任务中指定的导出,但由于某种原因,这些值似乎没有正确导出并且导致剧本失败:

failed: [kafka-1] => {"changed": true, "cmd": ["make"], "delta": "0:00:00.422669", "end": "2016-04-25 15:10:16.085697", "rc": 2, "start": "2016-04-25 15:10:15.663028", "warnings": []}
stderr: /usr/bin/ld: cannot find -lyajl
/usr/bin/ld: cannot find -lyajl
collect2: error: ld returned 1 exit status
make: *** [kafkacat] Error 1
stdout: gcc -MD -MP  -Itmp-bootstrap/usr/local/include -g -O2 -Wall -Wfloat-equal -Wpointer-arith -g -O2 -Wall -Wfloat-equal -Wpointer-arith  -c kafkacat.c -o kafkacat.o
gcc -MD -MP  -Itmp-bootstrap/usr/local/include -g -O2 -Wall -Wfloat-equal -Wpointer-arith -g -O2 -Wall -Wfloat-equal -Wpointer-arith  -c format.c -o format.o
gcc -MD -MP  -Itmp-bootstrap/usr/local/include -g -O2 -Wall -Wfloat-equal -Wpointer-arith -g -O2 -Wall -Wfloat-equal -Wpointer-arith  -c json.c -o json.o

找不到 -lyajl 的原因是导出不起作用。

我也试过做这样的事情:

  - name: Install kafkacat (configure)
    command: chdir={{ kafkacat_installdir }} CPFLAGS='CPPFLAGS= -Itmp-bootstrap/usr/local/include' STATIC_LIB_yajl='tmp-bootstrap/usr/local/lib/libyajl_s.a' STATIC_LIB_rdkafka='tmp-bootstrap/usr/local/lib/librdkafka.a' LIBS=' -lpthread -lrt' {{ kafkacat_installdir }}/configure --enable-json --enable-static

非常感谢您的帮助,并在此先感谢您,

ansible kafka
  • 2 个回答
  • 219 Views
Martin Hope
Itai Ganot
Asked: 2016-04-25 08:58:25 +0800 CST

如何从不同的文件夹运行 ./configure?

  • 1

我正在编写一个 ansible 剧本,它应该从源代码编译一些工具并安装它。

在检查我的剧本时,我尝试手动运行相关命令来检查它们的输出。

所以,在我的 ansible 剧本中,我配置了这个:

- name: Configure kafkacat
      command: . {{ install_dest }}/configure arg1
        args:
          enable_json: "--enable-json"
      sudo: yes

但是在运行playbook之前,我手动运行了: . /tmp/kafkacat/configure --enable-json应该相当于./configure在当前目录下运行,但是命令失败,报错。

那么怎么做呢?提前致谢

bash configuration
  • 2 个回答
  • 1231 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve