我们有堡垒服务器 B。我们需要使用私钥从 A 通过 B 到 C 的 SSH。
什么是更好的选择:
将私有 SSH 密钥放在服务器B上。我们了解到在生产环境中这样做是个坏主意。
从这里:
永远不要将您的 SSH 私钥放在堡垒实例上。相反,使用 SSH 代理转发首先连接到堡垒,然后从那里连接到私有子网中的其他实例。这使您可以将 SSH 私钥保存在您的计算机上。
使用SSH 代理转发。为了设置代理转发,我需要允许 TCP 转发。设置代理转发时,会在转发主机上创建一个套接字文件,这是密钥可以转发到目的地的机制。在 AWS 的堡垒设置中:
TCP 转发:将此值设置为 true 将启用 TCP 转发(SSH 隧道)。这可能非常有用,但也存在安全风险,因此我们建议您保留默认(禁用)设置,除非需要
也从这里:
SSH 代理转发被认为是有害的
什么是更好的?第二个链接的替代方法:ProxyCommand,我知道它有助于解决套接字文件问题,但我仍然认为我必须启用 TCP 转发,所以它足够安全吗?
在我当前的环境中,我的所有 Linux 服务器只能通过启用 MFA 的堡垒主机访问。
我已经设法让 Ansible 通过堡垒成功地与服务器通信,唯一的问题是它为每个主机建立了一个到堡垒的新连接,这意味着我必须输入与服务器一样多的 MFA 密钥。艰难时期。:(
我试过在我的 ssh 配置中搞乱这样的东西,试图让多路复用工作:
Host bastion
ControlMaster auto
ControlPath ~/.ssh/ansible-%r@%h:%p
ControlPersist 5m
Run Code Online (Sandbox Code Playgroud)
不幸的是,它似乎并没有这样做。任何人都知道如何阻止 Ansible 通过我的堡垒主机为它接触的每个主机重新建立连接?
谢谢!
我无法在我的 macbook 上使用我的用户通过 ssh 连接到我的数据中心节点之一。这是最近出现的问题,从几周前开始就非常有用了。
奇怪的是,这只会影响我计算机上的用户,但我能够从以下位置建立连接:
在我的计算机上使用我的用户名和相同的密钥,我可以:
我对这个错误感到很困惑。你能帮我定位问题吗?
查看日志,与网关的连接已建立,但无法连接到节点。在客户端:
? ~ ? ssh -v -J gatekeeper@gateway ubuntu@node -i ~/.ssh/id_rsa
OpenSSH_7.3p1, LibreSSL 2.4.1
[...]
debug1: Authentication succeeded (publickey).
Authenticated to gateway ([35.156.248.245]:22).
debug1: channel_connect_stdio_fwd node:22
debug1: channel 0: new [stdio-forward]
debug1: getpeername failed: Bad file descriptor
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: pledge: network
debug1: client_input_global_request: rtype keepalive@openssh.com want_reply 1
debug1: client_input_global_request: rtype keepalive@openssh.com …Run Code Online (Sandbox Code Playgroud) 我正在尝试通过 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) 我有一些测试服务器在 Openstack 上的堡垒后面运行。测试堆栈经常被删除和创建。创建堆栈后,我运行一组 Ansible 脚本来安装和配置服务器。我的过程几乎完全自动化,但是ssh-keyscan当远程主机在堡垒主机后面时,我似乎无法开始工作。
这就是我在我的 ~/.ssh/config
Host bastion
HostName 1.2.3.4
User myuser
IdentityFile ~/.ssh/private_key.pem
Host remote-host1
HostName 192.168.0.123
User myuser
IdentityFile ~/.ssh/private_key.pem
ProxyCommand ssh -W %h:%p bastion
Run Code Online (Sandbox Code Playgroud)
如果我尝试跑步,ssh-keyscan remote-host1我会得到
getaddrinfo remote-host1: Name or service not known
Run Code Online (Sandbox Code Playgroud)
运行ssh remote-host1有效,但会提示
The authenticity of host '192.168.0.123 (<no hostip for proxy command>)' can't be established.
ECDSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)?
Run Code Online (Sandbox Code Playgroud)
我试图避免。
我知道有一个 SSH 选项-o StrictHostKeyChecking=no,可以使用ssh_args …
我有一个带有私有 IP 的私有 kubernetes 集群。为了访问它,我设置了一个带有鱿鱼代理的堡垒主机。它看起来像这样:
My host -> bastion -> private cloud
Run Code Online (Sandbox Code Playgroud)
常规 kubectl 命令可以按预期抛出代理:
$ HTTPS_PROXY=socks5://127.0.0.1:1080 kubectl get pods
No resources found.
Run Code Online (Sandbox Code Playgroud)
问题是当尝试 ssh 到 pod 时:
$ HTTPS_PROXY=socks5://127.0.0.1:1080 kubectl exec -it "some-pod" -- /bin/bash
error: error sending request: Post https://<master-ip>/api/v1/namespaces/ns/pods/some-pod/exec?command=%2Fbin%2Fbash&container=xxx&container=xxx&stdin=true&stdout=true&tty=true: EOF
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我有以下情况:
DevMachine (D) need to connect to a gateway/bastion server (G)
and then be able to talk to another server serving RabbitMQ (R) traffic on port 5672.
我尝试使用 ssh 隧道连接到网关:ssh -L 5672:localhost:5672 G接下来我希望网关实例让我连接到R5672。我该如何实现这一点?我觉得我在这里错过了一步。
我想要的是:D ->G -> R。我得到的是D ->G. 如果我有一个本地运行的rabbitmq实例G——这可以工作,但我想要的是本质上用作GVPN。
谢谢!
我有一个 Windows 本地桌面并安装了 Putty。现在我想知道 - 在 AWS 设置中,我们是否可以使用 Linux Bastion 主机通过代理转发连接到私有子网中的 Windows Ec2 实例?
我有一台我管理的服务器。它可以通过端口 22 访问许多机器。我想将它用作某些用户的堡垒主机。问题是我希望我服务器上的每个用户都有自己的 IP/地址白名单,它可以通过 SSH 连接到。
例如,假设我的机器 M 可以访问服务器 S1、S2、S3、... S8。我在机器 M 上有 3 个用户,A、B 和 C。我希望 A 只能通过 SSH 连接到 S2,B 只能通过 SSH 连接到 S1、S5 和 S6,而 C 能够通过 SSH 连接到 S2 、S3、S4、S5 和 S8。
我该如何实现?