我在网上搜索解决方案,但没有一个解决方案对我有用!我正在尝试创建一个堡垒服务器,该服务器具有一个公共 AWS EC2 实例,它将连接到一个私有 EC2 实例。
以下是我的~/.ssh/config
文件:
Host bastion
Hostname <instanceIP>
User ec2-user
IdentityFile <keypairPath>
ProxyCommand none
Host private
Hostname <privateIP>
User ec2-user
IdentityFile <keypairPath>
ProxyCommand ssh bastion -W %h:%p
当我尝试运行时ssh bastion
收到此错误:
ssh: Could not resolve hostname bastion: Name or service not known
我可以ssh -F config bastion
使用 root 身份进行连接(但不能使用本地用户身份进行连接),但我不想每次都输入该参数,因为我已经看到这-F
不是必需的。
我也无法ssh -F config private
以 root 身份连接。错误信息如下:
ssh: Could not resolve hostname bastion: Name or service not known
ssh_exchange_identification: Connection closed by remote host
/.ssh/config
我将文件的最后一行改为
ProxyCommand ssh -F config bastion -W %h:%p
但这又带来了这个错误:
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
Killed by signal 1
我的配置文件哪里错了,我怎样才能使用本地配置文件进行 ssh 而不是 root?
答案1
我可以用 root 身份连接 ssh -F config bastion(但不能用本地用户连接),
听起来很像
~/.ssh/
目录或文件的权限或所有权~/.ssh/config
不正确,例如,该文件由 root 而不是尝试连接的实际用户拥有,或者用户无法读取该文件;或者你把文件放在了错误的用户那里
~/.ssh
(注意远程控制忽略 $HOME 并始终通过 UID 确定主目录)。
(最后一条注释表示你不能在正常情况下和在须藤,但无论如何您都不需要这么做。)