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.首先輸入命令:
ftp [-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個參數調換順序即可,如下實例
scp remote_username@remote_ip:/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命令