我想通过位于公共子网上的Linux SSH Bastion服务器连接到专用子网上的Linux数据库服务器。 我也想创build一个通往3306端口的隧道。
当我尝试从Bastion服务器创buildSSH连接时,我收到“Permission Denied(publickey)”。 信息。
ssh -L 10.0.0.10:22:10.0.1.10:22 [email protected]
以下是debugging输出失败的地方:
> 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).
正确的公钥已经在数据库服务器上,所以我想我需要在某个地方input私有的RSA密钥。 我在哪里input私钥? 还有什么需要在3306上创build隧道的sshdconfiguration更改?
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
我在哪里input私钥?
默认是~/.ssh/ ,但你可以放在任何你想要的地方,并用-i选项指定。
还有什么需要在3306上创build隧道的sshdconfiguration更改?
确保AllowTcpForwarding行被注释掉或设置为yes 。
主要原因似乎与堡垒主机上的ssh密钥相关。 如果你没有以root身份login到堡垒主机(你不应该这样做),那么你login的用户可能没有主目录,并试图使用root的主目录? 如果你以root身份login到堡垒主机,你可能不应该这样做。
你在源主机上使用ssh-agent吗? 看看堡垒主机上的/ etc / ssh / sshd_config。 如果AllowAgentForwarding是“否”,请尝试将其更改为“是”并重新启动sshd。 如果你在源主机上没有使用ssh-agent,你可能需要考虑这样做,因为这样可以保存你的密钥,并允许将它转发到远程的ssh连接(比如在堡垒主机上)。
另一种select是在数据库机器上启用密码validation,以便在不能进行公钥validation时不会失败。 检查数据库计算机上的/ etc / ssh / sshd_config以获取PasswordAuthentication,并确保未设置(默认为“yes”)或设置为“yes”。
运行ssh时,可以传递多个-v参数来提高debugging级别。 有时这有助于确切地显示问题所在。