1.ftp服务器的搭建
ftp的作用:文件的上传和下载,不允许操作目录,如果想操作目录只能用tar打包。
(1)服务器端:
①.输入”sudo apt-get install vsftpd“命令安装vsftpd服务
②.判断vsftpd是否安装成功:在终端窗口输入”sudo service vsftpd restart“命令重启vsftpd服务器,此时若vsftpd处于运行状态,则安装成功。
③.新建/home/test 作为用户的主目录。在终端窗口输入”sudo mkdir /home/test” 命令,输入“sudo ls /home/”,若有一个test目录,则用户目录创建成功。(新建test用户并设置密码:在终端输入”sudo useradd -d /home/test -s /bin/bash test”命令,新建用户,输入“sudo passwd test”设置test用户的密码)。
④.修改配置文件/etc/vsftpd.conf,在终端中输入“sudo vi /etc/vsftpd.conf”命令,打开vsftpd文件,进入插入操作向文件中追加以下代码:
userlist_deny=NO
userlist_enable=YES
userlist_file=/etc/allow_users
seccomp_sandbox=NO
local_enable=YES
然后保存退出即可。
⑤.新建/etc/allow_users文件,在终端输入“sudo vim /etc/allow_users”命令,输入test,保存并退出即完成该文件的创建。(注:要查看/etc/ftpusers中的内容,在终端输入”sudo vim /etc/ftpusers”命令,打开这个文件后,查看是否有test这个用户名,若有,则删除test。因为/etc/ftpusers 记录的是不能访问FTP服务器的清单。)
⑥.重启服务
(以上部分可以参考视频:https://www.bilibili.com/video/av33660709?p=35)
(2)客户端:
①.实名用户登录:
a.首先输入命令:
[-dignv][主机名称或IP地址]
参数:
- -d 详细显示指令执行过程,便于排错或分析程序执行的情形。
- -i 关闭互动模式,不询问任何问题。
- -g 关闭本地主机文件名称支持特殊字符的扩充特性。
- -n 不使用自动登陆。
- -v 显示指令执行过程。
(也可以直接输入ftp再输入 open IP地址)
b.输入用户名(server)
c.输入密码(server)
d.文件的上传
put:上传指定文件put filename [newname]
send:上传指定文件send filename [newname]
(filename为上传的本地文件名,newname为上传至FTP服务器上时使用的名字,如果不指定newname,文件将以原名上传。)
e.文件的下载
get:下载指定文件get filename [newname]
(filename为下载的FTP服务器上的文件名,newname为保存在本都计算机上时使用的名字,如果不指定newname,文件将以原名保存。)
get命令下载的文件将保存在本地计算机的工作目录下。该目录是启动FTP时在盘符C:后显示的目录。如果想修改本地计算机的工作目录,可以使用 lcd 命令。比如:lcd d:\ 表示将工作目录设定为D盘的根目录。
②.匿名用户登录
a.首先输入命令:ftp serverIP
b.输入用户名(server):anonymous
c.输入密码(server):直接回车跳过密码的输入
注意:不允许匿名用户在任意目录直接切换,只能在指定的目录范围内工作。需要在ftp服务器上创建一个匿名用户的目录——匿名用户的根目录。(这部分参考视频:https://www.bilibili.com/video/av33660709?p=37)
d.文件的上传:
put:上传指定文件put filename [newname]
send:上传指定文件send filename [newname]
(filename为上传的本地文件名,newname为上传至FTP服务器上时使用的名字,如果不指定newname,文件将以原名上传。)
e.文件的下载:
get:下载指定文件get filename [newname]
③.ftp实例合集
- ftp> ascii # 设定以ASCII方式传送文件(缺省值)
- ftp> bell # 每完成一次文件传送,报警提示.
- ftp> binary # 设定以二进制方式传送文件.
- ftp> bye # 终止主机FTP进程,并退出FTP管理方式.
- ftp> case # 当为ON时,用MGET命令拷贝的文件名到本地机器中,全部转换为小写字母.
- ftp> cd # 同UNIX的CD命令.
- ftp> cdup # 返回上一级目录.
- ftp> chmod # 改变远端主机的文件权限.
- ftp> close # 终止远端的FTP进程,返回到FTP命令状态, 所有的宏定义都被删除.
- ftp> delete # 删除远端主机中的文件.
- ftp> dir [remote-directory] [local-file] # 列出当前远端主机目录中的文件.如果有本地文件,就将结果写至本地文件.
- ftp> get [remote-file] [local-file] # 从远端主机中传送至本地主机中.
- ftp> help [command] # 输出命令的解释.
- ftp> lcd # 改变当前本地主机的工作目录,如果缺省,就转到当前用户的HOME目录.
- ftp> ls [remote-directory] [local-file] # 同DIR.
- ftp> macdef # 定义宏命令.
- ftp> mdelete [remote-files] # 删除一批文件.
- ftp> mget [remote-files] # 从远端主机接收一批文件至本地主机.
- ftp> mkdir directory-name # 在远端主机中建立目录.
- ftp> mput local-files # 将本地主机中一批文件传送至远端主机.
- ftp> open host [port] # 重新建立一个新的连接.
- ftp> prompt # 交互提示模式.
- ftp> put local-file [remote-file] # 将本地一个文件传送至远端主机中.
- ftp> pwd # 列出当前远端主机目录.
- ftp> quit # 同BYE.
- ftp> recv remote-file [local-file] # 同GET.
- ftp> rename [from] [to] # 改变远端主机中的文件名.
- ftp> rmdir directory-name # 删除远端主机中的目录.
- ftp> send local-file [remote-file] # 同PUT.
- ftp> status # 显示当前FTP的状态.
- ftp> system # 显示远端主机系统类型.
- ftp> user user-name [password] [account] # 重新以别的用户名登录远端主机.
- ftp> ? [command] # 同HELP. [command]指定需要帮助的命令名称。如果没有指定 command,ftp 将显示全部命令的列表。
- ftp> ! # 从 ftp 子系统退出到外壳。
关闭FTP连接:
ftp> bye
ftp> exit
ftp> quit
下载文件:
ftp> get readme.txt # 下载 readme.txt 文件
ftp> mget *.txt # 下载
上传文件:
ftp> put /path/readme.txt # 上传 readme.txt 文件
ftp> mput *.txt # 可以上传多个文件
2.SSH
(1)服务器端:
①.安装SSH:sudo apt-get install openssh-server
可以使用sudo aptitude show openssh-server命令查看SSH是否安装
(这部分参考视频:https://www.bilibili.com/video/av33660709?p=41)
(2)客户端:
①.远程登录:ssh Username@IP,其中,Username是用户名,IP是远程服务器地址。
ssh命令 是openssh套件中的客户端连接工具,可以给予ssh加密协议实现安全的远程登录服务器。
语法:
ssh(选项)(参数)
选项:
- -1:强制使用ssh协议版本1;
- -2:强制使用ssh协议版本2;
- -4:强制使用IPv4地址;
- -6:强制使用IPv6地址;
- -A:开启认证代理连接转发功能;
- -a:关闭认证代理连接转发功能;
- -b:使用本机指定地址作为对应连接的源ip地址;
- -C:请求压缩所有数据;
- -F:指定ssh指令的配置文件;
- -f:后台执行ssh指令;
- -g:允许远程主机连接主机的转发端口;
- -i:指定身份文件;
- -l:指定连接远程服务器登录用户名;
- -N:不执行远程指令;
- -o:指定配置选项;
- -p:指定远程服务器上的端口;
- -q:静默模式;
- -X:开启X11转发功能;
- -x:关闭X11转发功能;
- -y:开启信任X11转发功能。
参数:
远程主机:指定要连接的远程ssh服务器;
指令:要在远程ssh服务器上执行的指令。
实例:
# ssh 用户名@远程服务器地址
ssh user1@172.24.210.101
②.退出登录:logout
3.SCP
Linux scp命令用于Linux之间复制文件和目录。scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。
语法:
scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
[-l limit] [-o ssh_option] [-P port] [-S program]
[[user@]host1:]file1 [...] [[user@]host2:]file2
简易写法:
scp [可选参数] file_source file_target
参数说明:
- -1: 强制scp命令使用协议ssh1
- -2: 强制scp命令使用协议ssh2
- -4: 强制scp命令只使用IPv4寻址
- -6: 强制scp命令只使用IPv6寻址
- -B: 使用批处理模式(传输过程中不询问传输口令或短语)
- -C: 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
- -p:保留原文件的修改时间,访问时间和访问权限。
- -q: 不显示传输进度条。
- -r: 递归复制整个目录。
- -v:详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
- -c cipher: 以cipher将数据传输进行加密,这个选项将直接传递给ssh。
- -F ssh_config: 指定一个替代的ssh配置文件,此参数直接传递给ssh。
- -i identity_file: 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
- -l limit: 限定用户所能使用的带宽,以Kbit/s为单位。
- -o ssh_option: 如果习惯于使用ssh_config(5)中的参数传递方式,
- -P port:注意是大写的P, port是指定数据传输用到的端口号
- -S program: 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。
实例:
1、从本地复制到远程
命令格式:
scp local_file remote_username@remote_ip:remote_folder
或者
scp local_file remote_username@remote_ip:remote_file
或者
scp local_file remote_ip:remote_folder
或者
scp local_file remote_ip:remote_file
第1,2个指定了用户名,命令执行后需要再输入密码,第1个仅指定了远程的目录,文件名字不变,第2个指定了文件名,第3,4个没有指定用户名,命令执行后需要输入用户名和密码,第3个仅指定了远程的目录,文件名字不变,第4个指定了文件名;第2个和第4个会保存在根目录下。
复制目录命令格式:
scp -r local_folder remote_username@remote_ip:remote_folder
或者
scp -r local_folder remote_ip:remote_folder
或者
scp -r remote_username@remote_ip:local_floder remote_floder
第1个和第3个指定了用户名,命令执行后需要再输入密码;第2个没有指定用户名,命令执行后需要输入用户名和密码;
2、从远程复制到本地
从远程复制到本地,只要将从本地复制到远程的命令的后2个参数调换顺序即可,如下实例
:/home/root/others/music /home/space/music/1.mp3
scp -r remote_username:/home/root/others/ /home/space/music/
说明:
1.如果远程服务器防火墙有为scp命令设置了指定的端口,我们需要使用 -p 参数来设置命令的端口号,命令格式如下:
#scp命令使用端口号 4588
scp -p 4588 remote@www.w3cschool.cc:/usr/local/sin.sh /home/administrator
2.使用scp命令要确保使用的用户具有可读取远程服务器相应文件的权限,否则scp命令是无法起作用的。
4.RSH
1.安装rsh和rsh-server,命令如下:
sudo apt-get install rsh-client rsh-server xinetd
2.配置hosts文件,并在里面添加红框和蓝框(红框充当服务机,蓝框充当客户机)的配置:
如果配置文件的权限不够可以使用sudo su命令切换到root用户。
3.配置/etc/xinetd.d/rsh、/etc/xinetd.d/rlogin、/etc/xinetd.d/rexec文件并重启服务:
/etc/xinetd.d/rsh
/etc/xinetd.d/rlogin
/etc/xinetd.d/rexec
重启服务:
sudo /etc/init.d/xinetd restart
以上步骤需要在客户机和服务机都配置
4.在服务机配置.rhosts文件:
切换到root用户,并在/root目录下创建.rhosts文件,加入如下内容:
此文件用于root用户之间的rsh连接
普通用户的rsh连接还需要配置/etc/hosts.equiv文件
5.在文件/etc/securetty文件添加rsh rlogin rexec
6.重启服务
sudo /etc/init.d/xinetd restart
7.在服务机上连接rsh服务
Linux rsh命令用于远程登入的Shell。rsh(remote shell)提供用户环境,也就是Shell,以便指令能够在指定的远端主机上执行。
语法:
rsh [-dn][-l <用户名称>][主机名称或IP地址][执行指令]
参数说明:
- -d 使用Socket层级的排错功能。
- -l<用户名称> 指定要登入远端主机的用户名称。
- -n 把输入的指令号向代号为/dev/null的特殊外围设备。
实例:
开启rsh服务:
# chkconfig --list //检测rlogin服务是否开启
# chkconfig rsh on //开启rsh服务
# chkconfig -list //检测开启的服务
Ubuntu开启rsh服务:
# sysv-rc-conf --list //检测rlogin服务是否开启
# sysv-rc-conf rsh on //开启rsh服务
# sysv-rc-conf -list //检测开启的服务
远程命令执行:
# rsh -l hnlinux 192.168.1.88 /bin/ls //远程执行ls命令