还记得在两个月前,我在VMware虚拟机下面安装了一个FreeBSD系统,装完之后就没有再理过它了。今天忽然想摆弄一下这个FreeBSD,看下是个怎么样的系统。
说实在的,初次使用还真的不习惯,因为FreeBSD跟其他的类似ubuntu或者是Centos不一样,命令提示符都变了,只有一个“#”。我在想,怎么知道当前的用户是谁呢?难道真的要用who命令来看吗?先不讨论用户的问题,因为还没有研究到那个地方。由于虚拟机下面操作这个系统,必须将鼠标限制在虚拟机的窗体里面,必须要按住“Alt+Ctrl”才能将鼠标释放出来主机。于是我决定在主机上直接用PuTTY连接到FreeBSD,直接用PuTTY这个终端操作系统。
我这里的环境是:家庭宽带adsl拨号上网,有个TP-LINK路由器,连接了三台主机,形成一个简单的家庭局域网,网段是192.168.1.0。我的VMware是在其中一台主机上。FreeBSD的联网方式是NAT(其实也可以是Bridge的,这与在学校里不一样)。
首先,要连接到系统,必须知道虚拟机的IP地址,我先在虚拟机登陆到系统中,用“ifconfig”命令查看IP地址。但是很奇怪,显示的结果中我一直都看不到ipv4的地址。我怀疑是否系统并没有获得IP地址,于是我试着ping一下“www.baidu.com”,结果没有反应。我觉得应该是没有IP地址。百度了一下FreeBSD下IP地址的设置方法,原来是我没有设置系统的“DHCP”自动获取IP地址功能。找到原因,接下来就是解决问题了:
在命令行下输入命令: # ee /etc/rc.conf
可以看到一个类似文本编辑器的界面,这时候,我们在第一行加上以下语句:
ifconfig_le0="DHCP"
以上的le0是网卡的名称。可以通过ifconfig -a来查看有效网卡的名称。
修改完成之后按“Esc+Enter”,系统提示两个选择(A、save to change.B、no save.),选择save to change,将修改的内容保存。
保存配置之后需要在在命令行输入 “sh /etc/rc”才使得修改正式生效。
此时,输入“ifconfig”,就可以看到安装着FreeBSD的虚拟机获得了一个正常的ipv4地址了。当然,在FreeBSD下也可以手工设置IP地址,在这里就不详细说了,请自行百度谷歌。
接下来,我就尝试用PuTTY连接,输入IP地址,点击连接之后,出现了以下错误:
根据我的经验,我当时反应可能就是虚拟机那边没有开启sshd服务,或者是sshd服务出现了问题。于是,我输入“service sshd restart”命令打算重新启动sshd服务。但是此命令报错了,好像在FreeBSD里面没有“restart”指令,要用“onerestart”,于是我就试着输入“service sshd onerestart”,命令行提示sshd命令已经启动了。于是我再次尝试连接,效果不错,已经出现了登陆界面了,如下所示(由于此系统并没有新建其他用户,所以只能以root登陆做尝试):
输入密码之后,本以为就能正常连接了,但是居然报出拒绝访问的错误,如下所示:
没办法,这个错误真的从没见过,只好寻求百度谷歌的帮忙了。原来,FreeBSD在默认的情况下是使用keyboard-interactive authentication,即键盘交互认证模式,也就是说用户必须自己通过键盘输入密码到系统的登陆界面才能通过认证。如果是通过远程登录的方式进行验证,则不予通过。如果需要远程ssh到系统,就要采用password authentication方式,即密码认证。这就需要修改ssh配置文件/etc/ssh/sshd_config了(默认情况下,此文件内的所有内容都是注释掉的):
将#PasswordAuthentication no这句,去掉注释号,再把”no“改成”yes“;
将#PermitRootLogin = no这句,去掉注释号,再把“no”改成“yes”;
最后,重启sshd服务“service sshd onerestart”。
经过上述的步骤之后,再一次尝试连接,再输入账户和密码之后,终于连接成功了(FreeBSD的欢迎语真多啊!!):
到这里,基本上就解决了PuTTY连接FreeBSD主机的常出现的问题了。不过,对于上述的远程登录配置的,网上许多教程都说不安全,其实我并不太理解。FreeBSD的远程登录跟ubuntu或者是Centos的有什么区别呢?还是不太懂,需要继续学习。
挑灯夜战,终于写完了这篇博文。对FreeBSD还是有很多不懂的地方,希望大家多多指教!!