我在本地用ftp,连接我的虚拟机的linux系统服务器,就是一直报错误,一直显示正在等待欢迎信息,怎么解决啊

我在本地用ftp,连接我的虚拟机的linux系统服务器,就是一直报错误,一直显示正在等待欢迎信息,怎么解决啊,第1张

先确定下linux的ftp服务已开?

启动ftp服务方法:

使用root用户

输入命令: cd /etc/rcd/initd

进入目录后输入: /vsftpd start

ftp服务成功开启!

--------------------

另外linux系统默认ftp不能访问root用户,解决ftp远程访问linux下root用户的方法:通过vi /etc/vsftpdftpusers以及vi /etc/vsftpduser_list 用#把代码中root前注释掉

1 首先服务器要安装ftp软件,查看是否已经安装ftp软件下:

#which vsftpd

如果看到有vsftpd的目录说明服务器已经安装了ftp软件

2 查看ftp 服务器状态

#service vsftpd status

3 启动ftp服务器

#service vsftpd start

4 重启ftp服务器

#service vsftpd restart

5 查看服务有没有启动

#netstat -an | grep 21

tcp 0 0 0000:21 0000: LISTEN

如果看到以上信息,证明ftp服务已经开启。

6如果需要开启root用户的ftp权限要修改以下两个文件

#vi /etc/vsftpdftpusers中注释掉root

#vi /etc/vsftpduser_list中也注释掉root

然后重新启动ftp服务。

7 vsftpd 500 OOPS: cannot change directory

登陆报错:

C:\>ftp 1921680101

Connected to 1921680101

220 (vsFTPd 205)

User (1921680101:(none)): frank

331 Please specify the password

Password:

500 OOPS: cannot change directory:/home/frank

Login failed

ftp> ls

500 OOPS: child died

Connection closed by remote host

解决方法:

setsebool ftpd_disable_trans 1

service vsftpd restart

就OK了!

这是SELinux的设置命令,在不熟悉SELnux前,把SELinux关掉也可以的。

8 永久开启,即os重启后自动开启ftp服务

方法一:

cd /etc/xinetdd ,编辑ftp服务的配置文件gssftp的设置:

vi /etc/xinetdd/gssftp ,将 修改两项内容:

(a) server_args = -l –a 去掉-a 改为server_args = -l

(b) disable=yes改为disable=no

(c) 保存退出。

方法二:

(a) system-config-services , 进入图形界面的System services查看是否有 vsftpd项,如果没有转到2,保存后退出

  (b) 用redhat第三张盘 安装此服务(开始--删除/增加程序),200K左右

  (c) #setup

   此时能看到vsftpd项,此时选中此services项,保存后退出

这个直接推荐你看看这里:http://wwwlinuxprobecom/chapter-11html

文件传输协议(FTP,File Transfer Protocol),即能够让用户在互联网中上传、下载文件的文件协议,而FTP服务器就是支持FTP传输协议的主机,要想完成文件传输则需要FTP服务端和FTP客户端的配合才行。

通常用户使用FTP客户端软件向FTP服务器发起连接并发送FTP指令,服务器收到用户指令后将执行结果返回客户端。

FTP协议占用两个端口号:

21端口:命令控制,用于接收客户端执行的FTP命令。

20端口:数据传输,用于上传、下载文件数据。

FTP数据传输的类型:

主动模式:FTP服务端主动向FTP客户端发起连接请求。

被动模式:FTP服务端等待FTP客户端的连接请求。

112 安装vsftpd服务程序

Vsftpd即“Very Secure FTP Daemon”是一款运行在类Unix操作系统的FTP服务端程序,Vsftpd主打的是安全性、完全开源及免费、速率高、支持IPv6、虚拟用户功能等等其他FTP服务端软件不具备的功能。

安装vsftpd服务程序包:

[root@linuxprobe ~]# yum install vsftpd -y

Loaded plugins: langpacks, product-id, subscription-manager

…………………省略部分安装过程………………

---> Package vsftpdx86_64 0:302-9el7 will be installed

--> Finished Dependency Resolution

…………………省略部分安装过程…………………

Installed:

vsftpdx86_64 0:302-9el7

Complete!

清空默认的防火墙默认规则:

[root@linuxprobe ~]# iptables -F

保存清空后的防火墙规则表:

[root@linuxprobe ~]# service iptables save

Vsftpd的程序与配置文件:

主程序 /usr/sbin/vsftpd

用户禁止登陆列表 /etc/vsftpd/ftpusers

/etc/vsftpd/user_list

主配置文件 /etc/vsftpd/vsftpdconf

先来分析下vsftpd程序的主配置文件吧:

[root@linuxprobe ~]# cat /etc/vsftpd/vsftpdconf

主配置文件长达123行,但大部分是以#号开始的,这些都是注释信息,我们可以过滤掉它们。

备份vsftpd的主配置文件:

[root@linuxprobe ~]# mv /etc/vsftpd/vsftpdconf /etc/vsftpd/vsftpdconf_bak

过滤掉所有包含#号的行,并将过滤结果写回到vsftpdconf文件中:

[root@linuxprobe ~]# grep -v "#" /etc/vsftpd/vsftpdconf_bak > /etc/vsftpd/vsftpdconf

此时再分析下vsftpd程序的主配置文件吧:

[root@linuxprobe ~]# cat /etc/vsftpd/vsftpdconf

anonymous_enable=YES

local_enable=YES

write_enable=YES

local_umask=022

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=NO

listen_ipv6=YES

pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

vsftpd程序配置文件参数的作用:

参数 作用

listen=[YES|NO] 是否以独立运行的方式监听服务。

listen_address=IP地址 设置要监听的IP地址。

listen_port=21 设置FTP服务的监听端口。

download_enable=[YES|NO] 是否允许下载文件。

userlist_enable=[YES|NO]

userlist_deny=[YES|NO] 是否启用“禁止登陆用户名单”。

max_clients=0 最大客户端连接数,0为不限制。

max_per_ip=0 同一IP地址最大连接数,0位不限制。

anonymous_enable=[YES|NO] 是否允许匿名用户访问。

anon_upload_enable=[YES|NO] 是否允许匿名用户上传文件。

anon_umask=022 匿名用户上传文件的umask值。

anon_root=/var/ftp 匿名用户的FTP根目录。

anon_mkdir_write_enable=[YES|NO] 是否允许匿名用户创建目录。

anon_other_write_enable=[YES|NO] 是否开放匿名用户其他写入权限。

anon_max_rate=0 匿名用户最大传输速率(字节),0为不限制。

local_enable=[YES|NO] 是否允许本地用户登陆FTP。

local_umask=022 本地用户上传文件的umask值。

local_root=/var/ftp 本地用户的FTP根目录。

chroot_local_user=[YES|NO] 是否将用户权限禁锢在FTP目录,更加的安全。

local_max_rate=0 本地用户最大传输速率(字节),0为不限制。

113 Vsftpd的验证方式

vsftpd程序提供的FTP服务可选认证方式,分别为匿名访问、本地用户和虚拟用户:

匿名访问:任何人无需验证口令即可登入FTP服务端。

本地用户:使用FTP服务器中的用户、密码信息。

虚拟用户:创建独立的FTP帐号资料。

顾名思义匿名访问就是所有人均可随意登入FTP服务,这样自然会产生安全问题,一般用于存放公开的数据。

而本地用户与虚拟用户则需要用户提供帐号及口令后才能登入FTP服务,更加的安全,而虚拟用户则是最安全的。

下面的实验环节将使用两台红帽RHEL7系统的主机,读者需要提前配置网卡的IP地址等信息:

主机名称 操作系统 IP地址

FTP服务端 红帽RHEL7操作系统 1921681010

FTP客户端 红帽RHEL7操作系统 1921681020

1131 匿名访问模式

FTP匿名访问模式是比较不安全的服务模式,尤其在真实的工作环境中千万不要存放敏感的数据,以免泄露。

vsftpd程序默认已经允许匿名访问模式,我们要做的就是开启匿名用户的上传和写入权限,写入下面的参数:

[root@linuxprobe ~]# vim /etc/vsftpd/vsftpdconf

参数 作用

anonymous_enable=YES 允许匿名访问模式。

anon_umask=022 匿名用户上传文件的umask值。

anon_upload_enable=YES 允许匿名用户上传文件

anon_mkdir_write_enable=YES 允许匿名用户创建目录

anon_other_write_enable=YES 允许匿名用户修改目录名或删除目录

确认填写正确后保存并退出vsftpdconf文件,然后重启vsftpd服务程序并设置为开机自启动。

[root@linuxprobe ~]# systemctl restart vsftpd

[root@linuxprobe ~]# systemctl enable vsftpd

ln -s '/usr/lib/systemd/system/vsftpdservice' '/etc/systemd/system/multi-usertargetwants/vsftpdservice

因为在红帽RHCSA、RHCE或RHCA考试后都要重启您的实验机再执行判分脚本。

所以请读者在日常工作中也要记得将需要的服务加入到开机启动项中:"systemctl enable vsftpd"。

如果重启vsftpd服务程序时没有报错,此时便可以使用FTP客户机(1921681020)尝试登入FTP服务了。

ftp命令用于使用FTP服务,格式为:“ftp [参数] [FTP主机]”。

红帽RHEL7系统中ftp命令默认没有安装,请执行"yum install ftp -y"即可安装完毕。

在客户端尝试登入FTP服务:

[root@linuxprobe ~]# ftp 1921681010

Connected to 1921681010 (1921681010)

220 (vsFTPd 302)

Name (1921681010:root): anonymous

331 Please specify the password

Password:敲击回车

230 Login successful

Remote system type is UNIX

Using binary mode to transfer files

ftp> cd pub

250 Directory successfully changed

ftp> mkdir files

550 Permission denied

上面操作中已经将防火墙规则清空,在vsftpdconf文件中也已经允许匿名用户创建目录与写入权限,那怎么会被拒绝了呢?

这里建议读者先不要往下看,思考后用自己的方法解决下这个问题,长期这样你的Linux的排错能力一定会练出来的。

回想前面的参数细节,匿名访问模式的FTP根目录为/var/ftp:

[root@linuxprobe ~]# ls -ld /var/ftp/pub

drwxr-xr-x 3 root root 16 Jul 13 14:38 /var/ftp/pub

原来匿名用户的FTP根目录所有者/组都是root,所以匿名用户没有写入权限,那我们将所有者修改为ftp试试吧。

[root@linuxprobe ~]# chown ftp /var/ftp/pub

此时再用ftp命令尝试登入FTP服务并创建文件:

ftp> mkdir files

550 Create directory operation failed

可恶!又报错了!!虽然这次报错代码还是550,但前面提示权限拒绝,这次是操作失败,马上想到是SELinux服务在捣鬼。

查看所有与ftp相关的SELinux规则:

[root@linuxprobe ~]# getsebool -a | grep ftp

ftp_home_dir --> off

ftpd_anon_write --> off

ftpd_connect_all_unreserved --> off

ftpd_connect_db --> off

ftpd_full_access --> off

ftpd_use_cifs --> off

ftpd_use_fusefs --> off

ftpd_use_nfs --> off

ftpd_use_passive_mode --> off

httpd_can_connect_ftp --> off

httpd_enable_ftp_server --> off

sftpd_anon_write --> off

sftpd_enable_homedirs --> off

sftpd_full_access --> off

sftpd_write_ssh_home --> off

tftp_anon_write --> off

tftp_home_dir --> off

设置SELinux服务对ftp服务的访问规则策略为允许。

[root@linuxprobe ~]# setsebool -P ftpd_full_access=on

此时再来创建文件或目录就没有问题了:

[root@linuxprobe ~]# ftp 1921681010

Connected to 1921681010 (1921681010)

220 (vsFTPd 302)

Name (1921681010:root): anonymous

331 Please specify the password

Password:敲击回车

230 Login successful

Remote system type is UNIX

Using binary mode to transfer files

ftp> cd pub

250 Directory successfully changed

ftp> mkdir files

257 "/pub/files" created

ftp> rename files database

350 Ready for RNTO

250 Rename successful

ftp> rmdir database

250 Remove directory operation successful

ftp> exit

221 Goodbye

请注意:当您完成本实验后请还原虚拟机快照再进行下一个实验,否则可能导致配置文件冲突而报错。

1132 本地用户模式

既然要使用本地用户模式,而本地用户模式确实要比匿名访问模式更加的安全,所以本实验中会关闭匿名访问模式。

vsftpd服务程序默认已经允许本地用户模式,我们要做的是添加设置本地用户模式权限的参数:

[root@linuxprobe ~]# vim /etc/vsftpd/vsftpdconf

参数 作用

anonymous_enable=NO 禁止匿名访问模式。

local_enable=YES 允许本地用户模式。

write_enable=YES 设置可写入权限。

local_umask=022 本地用户模式创建文件的umask值。

userlist_deny=YES 参数值为YES即禁止名单中的用户,参数值为NO则代表仅允许名单中的用户。

userlist_enable=YES 允许“禁止登陆名单”,名单文件为ftpusers与user_list。

确认填写正确后保存并退出vsftpdconf文件,然后重启vsftpd服务程序并设置为开机自启动。

[root@linuxprobe ~]# systemctl restart vsftpd

[root@linuxprobe ~]# systemctl enable vsftpd

ln -s '/usr/lib/systemd/system/vsftpdservice' '/etc/systemd/system/multi-usertargetwants/vsftpdservice

因为在红帽RHCSA、RHCE或RHCA考试后都要重启您的实验机再执行判分脚本。

所以请读者在日常工作中也要记得将需要的服务加入到开机启动项中:”systemctl enable vsftpd“。

如果重启vsftpd服务程序时没有报错,此时便可以使用FTP客户机(1921681020)尝试登入FTP服务了~

我们先来看下ftpusers或user_list文件中禁止登陆用户名单:

root

bin

daemon

adm

lp

sync

shutdown

halt

mail

news

uucp

operator

games

nobody

vsftpd服务为了让FTP服务更加的安全,默认禁止以root身份登入,那么创建个普通用户吧:

[root@linuxprobe ~]# useradd linuxprobe

为linuxprobe用户设置密码:

[root@linuxprobe ~]# passwd linuxprobe

Changing password for user linuxprobe

New password:

Retype new password:

passwd: all authentication tokens updated successfully

在客户端尝试登入FTP服务:

[root@linuxprobe ~]# ftp 1921681010

Connected to 1921681010 (1921681010)

220 (vsFTPd 302)

Name (1921681010:root): linuxprobe

331 Please specify the password

Password:输入用户的本地密码

230 Login successful

Remote system type is UNIX

Using binary mode to transfer files

ftp> mkdir files

550 Create directory operation failed

有了上面配置匿名访问模式的经验,这次再遇到了“操作被拒绝”,应该马上想到SELinux了吧。

查看所有与ftp相关的SELinux规则:

[root@linuxprobe ~]# getsebool -a | grep ftp

ftp_home_dir --> off

ftpd_anon_write --> off

ftpd_connect_all_unreserved --> off

ftpd_connect_db --> off

ftpd_full_access --> off

ftpd_use_cifs --> off

ftpd_use_fusefs --> off

ftpd_use_nfs --> off

ftpd_use_passive_mode --> off

httpd_can_connect_ftp --> off

httpd_enable_ftp_server --> off

sftpd_anon_write --> off

sftpd_enable_homedirs --> off

sftpd_full_access --> off

sftpd_write_ssh_home --> off

tftp_anon_write --> off

tftp_home_dir --> off

设置SELinux对FTP服务的规则为允许:

[root@linuxprobe ~]# setsebool -P ftpd_full_access=on

此时再来创建文件或目录就没有问题了:

[root@linuxprobe ~]# ftp 1921681010

Connected to 1921681010 (1921681010)

220 (vsFTPd 302)

Name (1921681010:root): linuxprobe

331 Please specify the password

Password:输入用户本地密码

230 Login successful

Remote system type is UNIX

Using binary mode to transfer files

ftp> mkdir files

257 "/home/linuxprobe/files" created

ftp> rename files database

350 Ready for RNTO

250 Rename successful

ftp> rmdir database

250 Remove directory operation successful

ftp> exit

221 Goodbye

1要将系统第一块网卡的IP地址设置为19216801

子网掩码设置为2552552550,则实际命令为#ifconfig

eth0

19216801

netmask

2552552550。

2

使用命令#vi

/etc/sysconfig/network-script/ifcfg-eth0打开该文件,按i键进入编辑模式,下面解释一下该文件中各项的含义,以方便更改。

DEVICE=eth0

该项代表要更改的网卡ID,第一块网卡为eth0,第二块为eth1,以此类推

ONBOOT=yes

该项表明系统启动时是否启用该设置,一般设置为yes,即启动时就启用该设置

BOOTPROTO=static

该项显示的是网卡IP的获得方式,如果使用的是由DHCP服务器自动获取,则此项的值应为dynamic,并且下面三项不存在;如果是手动设置的IP,则此项的值为static且有下面三项。

IPADDR=19216801

该项为手动设置的网卡IP,当BOOTPROTO=dynamic时该项不存在

NETMASK=2552552550

该项为手动设置的网卡的子网掩码,并且需要与手动设置的IP正确对应,当BOOTPROTO=dynamic时该项不存在

GATEWAY=1921680254

该项为手动设置的网卡的默认网关,当BOOTPROTO=dynamic时该项不存在

当更改完毕后,按键盘的ESC键退出vi的编辑模式,用键盘输入:x后回车,即可保存对该文件的更改并且退出vi编辑器。

然后重启网卡,使设置生效。

#service

network

restart

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 我在本地用ftp,连接我的虚拟机的linux系统服务器,就是一直报错误,一直显示正在等待欢迎信息,怎么解决啊

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情