NAT方式说明:

说明:使用Vmnet8虚拟交换机,此时虚拟机可以通过主机单向网络上的其他工作站,其他工作站不能访问虚拟机。

NAT设置下允许主机通过SSH访问VMware CentOS _vm centos

使用NAT方式,A1A2可以访问B,但B不可以访问A1A2。但AA1A2可以互访。

前期工作

1.首先设置虚拟机NAT,并确保能够联网,此处选择自定义,并选择VMnet8(NAT),如下图所示:


NAT设置下允许主机通过SSH访问VMware CentOS _vm centos_02


2.在主机环境下通过services.msc打开服务,并开启VMwareNATService和VMwareDHCPService之后打开NetworkConnetion查看IPv4是否设置为Automatic(DHCP)。


NAT设置下允许主机通过SSH访问VMware CentOS _vm centos_03


3,在虚拟机中通过火狐浏览器连接网络,可以上网。确定可以联网之后,在终端输入ifconfig查看当前虚拟机的ip地址:


NAT设置下允许主机通过SSH访问VMware CentOS _vm centos_04

当前环境


本机采用无线网络连接,ip地址为:192.168.1.29

虚拟机ip地址为:192.168.2.130

并不在同一个地址段,注意此处虚拟机的ip地址与主机不能在同一个网段,否则在一个局域网内无法ping通。


NAT设置下允许主机通过SSH访问VMware CentOS _vm centos_05

设置步骤

1.设置NAT连接,通过开始-VMware-VirtualNetworkEditor打开如下界面,子网IP只要与你的虚拟机地址在同一个网段即可


NAT设置下允许主机通过SSH访问VMware CentOS _vm centos_06


在上面的列表中,选中“VMnet8”,点击“NATSettings...”打开NAT设置对话框。如下图所示。


NAT设置下允许主机通过SSH访问VMware CentOS _vm centos_07


选择添加,按照如下内容添加:其中端口号22为ssh的端口号,虚拟机ip地址填写ifconfig下的地址。描述可以随便写


NAT设置下允许主机通过SSH访问VMware CentOS _vm centos_08


2.确定虚拟机中的设置是VMnet8(NAT),两者必须配套。

至此,NAT连接下,虚拟机向本机映射配置完成。


启动SSH


1.在虚拟机终端查询ssh的状态:

1
2
[root@localhostqcy]#servicesshdstatus
openssh-daemon(pid4083)isrunning...

2.如果SSH没有开启可以通过如下命令开启。

1
[root@localhostqcy]#servicesshdstart

3.查看SSH的配置信息,确保3是开启的。

1
2
[root@localhostqcy]#chkconfig--listsshd
sshd0:off1:off2:off3:on4:off5:off6:off

4.防火墙规则中必须设置允许SSH访问:

1
2
3
[root@localhostqcy]#iptables-F
[root@localhostqcy]#iptables-AINPUT-ptcp--dport22-jACCEPT
[root@localhostqcy]#iptables-AOUTPUT-ptcp--sport22-jACCEPT

第一行清除所有的规则,2.3行分别添加22号端口的读写访问

5.在主机中使用ping命令查看是否可以相互访问:


NAT设置下允许主机通过SSH访问VMware CentOS _vm centos_09


同样在虚拟机中也可以测试:

1
2
3
4
5
6
7
8
9
10
[root@localhostqcy]#ping-c4192.168.1.29
PING192.168.1.29(192.168.1.29)56(84)bytesofdata.
64bytesfrom192.168.1.29:icmp_seq=1ttl=128time=0.231ms
64bytesfrom192.168.1.29:icmp_seq=2ttl=128time=0.222ms
64bytesfrom192.168.1.29:icmp_seq=3ttl=128time=0.254ms
64bytesfrom192.168.1.29:icmp_seq=4ttl=128time=0.336ms
---192.168.1.29pingstatistics---
4packetstransmitted,4received,0%packetloss,time3000ms
rttmin/avg/max/mdev=0.222/0.260/0.336/0.049ms


6,这样就可以通过SSH和虚拟机的系统连接了,点击QuickConnect,在弹出框中输入虚拟机的ip地址以及虚拟机中的用户名,选择密码认证方式


NAT设置下允许主机通过SSH访问VMware CentOS _vm centos_10


第一次运行会有提示,选择yes进入,然后输入密码后即可进入:


NAT设置下允许主机通过SSH访问VMware CentOS _vm centos_11

NAT设置下允许主机通过SSH访问VMware CentOS _vm centos_12



如果失败:


首先要确保虚拟机和主机的联通,即ping命令可以互通,如果出现如下错误:

NAT设置下允许主机通过SSH访问VMware CentOS _vm centos_13


说明问题出在服务器端,即虚拟机一方。


1.在虚拟机中查看错误信息:

1
[root@localhostlog]#vi/var/log/secure

以下是secure文件的最后两行:

1
2
Apr2715:14:43localhostsshd[6865]:pam_unix(sshd:session):sessionclosedforuserqcy
Apr2715:15:04localhostsshd[6904]:refusedconnectfrom192.168.2.1(192.168.2.1)

说明问题在于虚拟机拒绝来自192.168.2.1的连接。


2.在虚拟机中查看hosts.allow文件,

1
[root@localhostetc]#vihosts.allow

注意在最后加入sshd:192.168.0.表示本机,当然可以直接加入sshd:ALL

1
2
3
4
5
6
7
8
9
10
11
#
#hosts.allowThisfilecontainsaccessruleswhichareusedto
#allowordenyconnectionstonetworkservicesthat
#eitherusethetcp_wrapperslibraryorthathavebeen
#startedthroughatcp_wrappers-enabledxinetd.
#
#See'man5hosts_options'and'man5hosts_access'
#forinformationonrulesyntax.
#See'mantcpd'forinformationontcp_wrappers
#
sshd:192.168.0.


3..在虚拟机中查看hosts.deny文件

1
[root@localhostetc]#vi/etc/hosts.deny

发现其中有一句:sshd:ALL,意为拒绝所有的的连接,可以单纯地注释掉这一行。但是如果只想指定ip地址的主机访问的话,可以按照下图中的最后一行设置,EXCEPT排除掉你用于登录的主机。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#
#hosts.denyThisfilecontainsaccessruleswhichareusedto
#denyconnectionstonetworkservicesthateitheruse
#thetcp_wrapperslibraryorthathavebeen
#startedthroughatcp_wrappers-enabledxinetd.
#
#Therulesinthisfilecanalsobesetupin
#/etc/hosts.allowwitha'deny'optioninstead.
#
#See'man5hosts_options'and'man5hosts_access'
#forinformationonrulesyntax.
#See'mantcpd'forinformationontcp_wrappers
#
sshd:ALLEXCEPT192.168.1.29/255.255.255.0192.168.2.0/255.255.255.0

4.问题得以解决!

注:以上步骤并不是每一个都是必须的,但是为了防止错误的发生,最好都做一次!