无法 SSH 到 GCP 服务器

无法 SSH 到 GCP 服务器

我无法通过 ssh 连接到我的 GCP 实例。当我联系支持人员时,他们说 sshguard 阻止了请求,并要求我添加 -

#! /bin/bash 
sudo apt-get remove --auto-remove sshguard 
sudo apt-get purge --auto-remove sshguard

在键启动脚本下的自定义元数据中。

我重启了好几次,但还是不行。当我尝试 ssh 到该实例时,它显示端口 22 上的连接被拒绝。我怀疑 ssh 没有运行,所以我还尝试添加

sudo service ssh start

在启动脚本中,但不起作用。
我已经检查了防火墙规则,并且我正在运行 ubuntu-14.04,我也尝试了 gclod shell 和 web ssh,但没有任何效果。

答案1

首先,我们必须确保 OpenSSH 守护程序正在运行,并且能够响应连接。也就是说,实例上的本地防火墙不会拒绝 SSH 连接,或者 SSH 守护程序不受 TCP Wrapper 或 SSH Guard 控制。

您可以在 Cloud Shell 中使用 net cat(nc 命令)、telnet 或 nmap 在端口 22 上测试 SSH 守护进程的响应。您可能必须在 Cloud Shell 会话中安装软件包。这是 NetCat 工具安装的示例:

sudo apt-get install -y netcat
nc <instance IP> 22

如果 OpenSSH 正在运行且没有被阻止,您应该会得到一个显示守护进程的 OpenSSH 版本的响应。

为了检查本地防火墙,可以使用以下命令在启动脚本中停止 iptables:

Service iptables stop

如果 SSH 由 TCP Wrapper 控制,则将在 /etc/hosts.allow 和 /etc/hosts.deny 文件中添加条目。您可以在启动脚本中将这些文件保存为备份,然后刷新它们:

cp -p /etc/hosts.allow /etc/hosts.allow.bak`date +%Y%m%d_%H%M`
cp -p /etc/hosts.deny /etc/hosts.deny.bak`date +%Y%m%d_%H%M`
> /etc/hosts.allow
> /etc/hosts.deny

您尝试在启动脚本上启动 SSh 守护程序,这没问题,但请注意,启动脚本中不能使用 sudo 命令,因为它使用 root 凭据运行。在启动脚本中,所有使用 sudo 发出的命令都会被拒绝。

然后您可以设置以下启动脚本并重新启动实例:

#! /bin/bash 
apt-get remove --auto-remove sshguard 
apt-get purge --auto-remove sshguard
service iptables stop
cp -p /etc/hosts.allow /etc/hosts.allow.bak`date +%Y%m%d_%H%M`
cp -p /etc/hosts.deny /etc/hosts.deny.bak`date +%Y%m%d_%H%M`
> /etc/hosts.allow
> /etc/hosts.deny

相关内容