我正在尝试连接到运行 Ubuntu 的虚拟机。我找出了它的 IP 地址以及主机的 IP 地址,并通过 VirtualBox 管理器将其输入到网络设置中,如下所示:
此处的主机 IP 是运行 VM 的计算机的 IP,而客户 IP 是 VM 的 IP(使用 ip a 命令找到)。端口 22 是 ssh 的默认端口,因此我保留了原样。
我已经安装了 openssh-server,它根据以下命令显示其处于活动状态并正在运行:
sudo systemctl status ssh
此外,我还运行了以下命令:
sudo sysctl net.ipv4.ip_forward=1
启用端口转发并:
iptables -t nat -A PREROUTING -p tcp -d [PUBLIC_IP] --dport 22 -j DNAT --to-destination 10.0.2.15:22
iptables -t nat -A POSTROUTING ! -s [PUBLIC_IP] -j MASQUERADE
这是我在另一篇文章中发现的。
我已经做了所有我能找到和想到的方法,但是由于某种原因,当我从笔记本电脑运行以下命令(均不起作用)来连接到虚拟机时:
ssh matt@[PUBLIC_IP]
ssh -p 22 matt@[PUBLIC_IP]
ssh [email protected]
我总是得到同样的错误:
ssh: connect to host [PUBLIC_IP] port 22: Connection timed out
我重启了两台电脑,但还是不行。我对 Linux 完全陌生,我想在课堂上通过 ssh 连接到我的家庭服务器来访问笔记,继续玩耍和学习。
任何帮助都将非常有帮助!
以下是命令的输出:“ssh matt@[HOST_PUBLIC_IP] -VV”:
答案1
通过 ssh 连接到另一个节点(服务器)的基本方法要求您在远程节点上创建一个私钥。在您的情况下,您尚未将该密钥传递给ssh command
。
连接远程机器的步骤如下:
使用该工具在远程节点(服务器/机器)上创建公共和私有
ssh-keygen
。将私钥下载到另一个节点(服务器/机器)
制作钥匙所有者只读通过命令:
chmod 400 <path/to/private_key>
使用您的私钥
ssh command
:ssh -i <path/to/private_key> <username>@<remote_node_ip_address>