将 SSH 堡垒服务器连接到数据库服务器

将 SSH 堡垒服务器连接到数据库服务器

我想要通过位于公共子网上的 Linux SSH 堡垒服务器连接到私有子网上的 Linux 数据库服务器。我还想创建到端口 3306 的隧道。

当我尝试从 Bastion 服务器创建 SSH 连接时,收到“权限被拒绝(公钥)。”消息。

ssh -L 10.0.0.10:22:10.0.1.10:22 [email protected]

这是失败处的调试输出:

> debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /root/.ssh/identity
debug1: Trying private key: /root/.ssh/id_rsa
debug1: Trying private key: /root/.ssh/id_dsa
debug1: No more authentication methods to try.
Permission denied (publickey).

正确的公钥已经在数据库服务器上,所以我认为我需要在某处输入私钥 RSA。我在哪里输入私钥?此外,在 3306 上创建隧道是否需要更改 sshd 配置?

答案1

client <-----> Bastion Server <-----> Database Server
                (10.0.1.10)             (10.0.0.10)

那么,尝试一下这个:

$ ssh -C -N -L 3306:10.0.0.10:3306 [email protected]

然后你可以通过执行以下命令连接到数据库服务器:

$ mysql -u <user> -p -h localhost

我应该在哪里输入私钥?

默认值为~/.ssh/,但您可以将其放置在任何您想要的位置并使用-i选项指定。

另外,在 3306 上创建隧道是否需要更改 sshd 配置?

确保该行AllowTcpForwarding已被注释掉或设置为yes

答案2

主要原因似乎与堡垒主机上的 ssh 密钥有关。如果您没有以 root 身份登录堡垒主机(您不应该这样做),那么您以 root 身份登录的用户可能没有主目录并试图使用 root 的主目录?如果您以 root 身份登录堡垒主机,您可能不应该这样做。

您是否在原始主机上使用 ssh-agent?查看堡垒主机上的 /etc/ssh/sshd_config。如果 AllowAgentForwarding 为“否”,请尝试将其更改为“是”并重新启动 sshd。如果您在原始主机上没有使用 ssh-agent,您可能需要考虑这样做,因为这将保留您的密钥并允许将其转发到远程 ssh 连接(例如堡垒主机)。

另一个选项是在 DB 机器上启用密码验证,这样当无法进行公钥验证时它不会失败。检查 DB 机器上的 /etc/ssh/sshd_config 中的 PasswordAuthentication,确保它未设置(默认为“是”)或设置为“是”。

运行 ssh 时,可以向其传递多个 -v 参数以提高调试级别。有时这有助于准确显示问题所在。

相关内容