SSH:在私有网络中如何在不使用 ssh 公钥的情况下从源机器访问远程机器

Cod*_*tor 6 linux ssh amazon-ec2 amazon-web-services

我有 AWS 代码构建设置,想要访问 EC2 ubuntu 实例,它们都在同一个 VPC 和私有子网中。想要使用 SSH 从代码构建到实例执行命令但出现以下错误,同时尝试在远程实例上执行命令:

$ ssh -o 'PubkeyAuthentication no' ubuntu@X.X.X.X uname
Host key verification failed.
Run Code Online (Sandbox Code Playgroud)

我还尝试创建 .pem 文件并将公钥粘贴到新的 pem 文件中,更改其权限并使用它。但没有成功。

$ssh -i "remote-instance.pem" ubuntu@X.X.X.X uname
Host key verification failed.
Run Code Online (Sandbox Code Playgroud)

是否可以通过某些选项实现相同的目标?

MLu*_*MLu 11

正如您第一次ssh访问远程主机时所知道的那样,它会询问您是否要将远程主机密钥存储到~/.ssh/known_hosts. 您访问远程主机每次事后ssh验证收到的主机密钥~/.ssh/known_hosts

然而当 sshCodeBuild或其他一些非交互式设置中运行时,它无法询问是否接受远程密钥(因为在非交互式会话中没有人可以询问)并且为了安全起见,它无法通过主机密钥验证失败的

您有两种解决方法:

  1. 更安全是将 Ubuntu 服务器的主机密钥提供给您的 CodeBuild,并将其存储到一个可以验证它的known_hosts文件中ssh。确保它位于正确的路径中,并具有正确的所有权和权限。

  2. 不太安全的是禁用检查:

    ssh -o StrictHostKeyChecking=no {your-ubuntu-server}
    
    Run Code Online (Sandbox Code Playgroud)

希望有帮助:)