1. 程式人生 > >Ubuntu16.04搭建ftp/tftp/nfs/ssh伺服器

Ubuntu16.04搭建ftp/tftp/nfs/ssh伺服器

目前的方向是嵌入式方向,和板子打交道時必備的。這時候就需要燒寫各種映象。經常使用tftp和nfs服務,最近對ssh服務比較好奇,後續會繼續補充。

目錄

FTP服務

FTP服務介紹

FTP是File Transfer Protocol(檔案傳輸協議)的英文簡稱。用於Internet上的控制檔案的雙向傳輸,同時它也是一個應用程式。基於不同的作業系統有不同的FTP應用程式,而所有這些應用程式都遵守同一種協議以傳輸檔案。在FTP的使用當中,使用者經常遇到兩個概念:”下載”(download)和”上傳”(upload).”下載”檔案就是從遠端主機拷貝檔案至自己的計算機上;”上傳”就是將檔案從自己的計算機中拷貝至遠端主機上。用Internet語言來說,使用者可以通過客戶機程式向(從)遠端主機上傳(下載)檔案。——

百科詞條

FTP伺服器

簡單地說,支援FTP協議的伺服器就是FTP伺服器。
與大多數Internet服務一樣,FTP也是一個客戶機/伺服器系統。使用者通過一個支援FTP協議的客戶機程式,連線到在遠端主機上的FTP伺服器程式。使用者通過客戶機程式向伺服器發出命令,伺服器程式執行使用者所發出的命令,並將執行結果返回到客戶機上。比如,使用者發出一條命令,要求伺服器向用戶傳送某一個檔案的一份拷貝,伺服器會響應這條命令,將指定檔案送至使用者的機器上。客戶機代表使用者接收到這個檔案,將其存放在使用者目錄中。——百科詞條

匿名FTP服務

使用FTP時必須首先登入,在遠端主機上獲得相應的許可權後,方可下載或上傳檔案。也就是說,要想同哪一臺計算機傳送檔案,就必須具有那一臺計算機的適當授權。也就是說,需要有使用者ID和口令,否則便無法傳送檔案。這種情況違背了Internet的開放性,Internet上FTP主機非常多,不可能要求每個使用者在每一臺主機上都擁有賬號。匿名FTP就是為解決這個問題而產生的。
匿名FTP,使用者可通過它連線到遠端主機上,並從其下載檔案,而無需成為其註冊使用者。系統管理員建立一個特殊的使用者ID,名為anonymous,Internet上的任何人在任何地方都可使用該使用者ID。
通過FTP程式連線匿名FTP主機的方式同連線普通FTP主機的方式差不多,只是在要求提供使用者標識ID時必須輸入anonymous,該使用者ID的口令可以是任意的字串。習慣上,用自己的E-mail地址作為口令,使系統維護程式能夠記錄下來誰在存取這些檔案。
值得注意的是,匿名FTP不適用於所有Internet主機,它只適用於那些提供了這項服務的主機


當遠端主機提供匿名FTP服務時,會指定某些目錄向公眾開放,允許匿名存取。系統中的其餘目錄則處於隱匿狀態。作為一種安全措施,大多數匿名FTP主機都允許使用者從其下載檔案,而不允許使用者向其上傳檔案。也就是說,使用者可將匿名FTP主機上的所有檔案全部拷貝到自己的機器上,但不能將自己機器上的任何一個檔案拷貝至匿名FTP主機上。即使有些匿名FTP主機確實允許使用者上傳檔案,使用者也只能將檔案上傳至某一指定上傳目錄中。隨後,系統管理員會去檢查這些檔案,他會將這些檔案移至另一個公共下載目錄中,供其他使用者下載,利用這種方式,遠端主機的使用者得到了保護,避免了有人上傳有問題的檔案,如帶病毒的檔案。——
百科詞條

FTP使用方式

TCP/IP協議中,FTP標準命令TCP埠號為21,Port方式資料埠為20。需要進行遠端檔案傳輸的計算機必須安裝和執行FTP客戶程式。在windows作業系統的安裝過程中,通常都安裝tcp/ip協議軟體,其中就包含ftp客戶程式。也可以在位址列中輸入如下格式的URL地址:ftp://使用者名稱:口令@ftp伺服器域名:埠號/路徑/路徑

安裝FTP服務

步驟1:安裝 apt-get install vsftpd
步驟2:配置

cd /etc/vsftpd.conf
local_enable = yes  #允許本地登入
write_enable = yes  #允許上傳檔案

tftp服務

tftp服務介紹

TFTP(Trivial File Transfer Protocol,簡單檔案傳輸協議)是TCP/IP協議族中的一個用來在客戶機伺服器之間進行簡單檔案傳輸的協議,提供不復雜、開銷不大的檔案傳輸服務,埠號為69。
TFTP是一個傳輸檔案的簡單協議,基於UDP協議而實現。此協議設計的時候是進行小檔案傳輸的。因此它不具備通常的FTP的許多功能,它只能從檔案伺服器上獲得或寫入檔案,不能列出目錄,不進行認證,它傳輸8為資料。——百度百科

安裝tftp服務

步驟1:安裝 apt-get install tftp-hpa tftpd-hpa tftp-hpa是client,tftpd-hpaserver
步驟2:建立tftp目錄

mkdir /tftpboot # 建立用於tftp的伺服器目錄
chmod 0777 /tftpboot
touch test.txt

步驟3:配置

vi /etc/default/tftpd-hpa
然後再tftpd-hpa檔案中設定如下:

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftpboot" # 這是tftpd-hpa的服務目錄 要和上面建立的伺服器目錄一樣
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-l -c -s"    # -c是可以上傳檔案

步驟4:重啟服務
sudo service tftpd-hpa restart # 啟動服務
步驟5:測試

cd /home
tftp localhost #localhost表示本機
tftp>get test.txt   #test.txt是之前在/tftpboot目錄下建立的檔案
tftp>put test1.txt  #test1.txt是在/home目錄下新建的檔案
tftp>q

退出後,在/home目錄下會有一個test.txt檔案,在/tftpboot目錄下會有test1.txt檔案,表示tftp伺服器安裝成功
上述過程完全參考Linux公社的文章。連結
安裝服務中遇到問題:
問題1:

結果終端提示:
無法獲得鎖 /var/lib/dpkg/lock - open (11: 資源暫時不可用) 
E: 無法鎖定管理目錄(/var/lib/dpkg/),是否有其他程序正佔用它?”

解決辦法:

rm /var/cache/apt/archives/lock
rm /var/lib/dpkg/lock

參考連結

tftp開發板下載Ubuntu伺服器檔案目錄

tftp -g -r xxx ipaddress

nfs服務

nfs服務介紹

nfs服務的主要功能是通過網路讓不同的機器系統之間可以彼此共享檔案和目錄。nfs伺服器可以允許nfs客戶端將遠端nfs伺服器端的共享目錄掛載到本地的nfs目錄,比如下面我在本地主機上建立的/nfs目錄。在本地的nfs客戶端機器看來,nfs伺服器端共享的目錄就好像自己的磁碟分割槽和目錄一樣。——woshiliwentong 的BLOG

也就是,如果你有一塊開發板,開啟了nfs服務,就可以掛載伺服器設定的共享目錄到開發板上。開發板就是nfs客戶端,Ubuntu就是nfs伺服器。
比如:mount -t nfs 192.168.1.10:/root/rootfs /opt -o nolock
在開發板上執行:就是把Ubuntu(地址是192.168.1.10)下的/root/rootfs(我在Ubuntu上設定這個目錄為nfs共享目錄)掛載到開發板的/opt目錄。
更為詳細的參考連結

安裝nfs服務

步驟1:安裝 apt-get install nfs-kernel-server
步驟2:修改配置檔案, 命令:vim /etc/exports
在檔案最後新增:
/nfs *(rw,sync,no_root_squash,no_subtree_check)
其中:
/nfs 表示我建立的用於nfs的目錄
* 表示允許所有的網段訪問,也可以使用具體的IP
rw 表示掛接此目錄的客戶端對該共享目錄具有讀寫許可權
sync 表示資料同步寫入記憶體和硬碟
no_root_squash 表示root使用者對根目錄的完全管理訪問許可權
no_subtree_check 不檢查父目錄的許可權
注意:*和後面的括號都不能出現空格

步驟3:重啟服務
1. sudo /etc/init.d/rpcbind restart
命令列資訊:
[ ok ] Restarting rpcbind (via systemctl): rpcbind.service.
2. sudo /etc/init.d/nfs-kernel-server restart
命令列資訊:
[ ok ] Restarting nfs-kernel-server (via systemctl): nfs-kernel-server.service.

步驟4:測試nfs服務是否成功
命令1:sudo /etc/init.d/nfs-kernel-server status
命令列資訊:

● nfs-server.service - NFS server and services
   Loaded: loaded (/lib/systemd/system/nfs-server.service; enabled; vendor preset: enabled)
   Active: active (exited) since 二 2017-11-14 20:26:28 CST; 12s ago
  Process: 5691 ExecStopPost=/usr/sbin/exportfs -f (code=exited, status=0/SUCCESS)
  Process: 5687 ExecStopPost=/usr/sbin/exportfs -au (code=exited, status=0/SUCCESS)
  Process: 5685 ExecStop=/usr/sbin/rpc.nfsd 0 (code=exited, status=0/SUCCESS)
  Process: 5703 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS)
  Process: 5700 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
 Main PID: 5703 (code=exited, status=0/SUCCESS)

1114 20:26:28 lq-virtual-machine systemd[1]: Starting NFS server and services...
1114 20:26:28 lq-virtual-machine systemd[1]: Started NFS server and services.

命令2:sudo mount -t nfs localhost:/nfs /mnt
如果掛載成功,在mnt目錄下建立a.txt,在nfs目錄下也會對應有a.txt
取消掛載命令:sudo umount /mnt
參考連結

ssh服務

ssh服務介紹

SSH為Secure Shell的縮寫,由 IETF 的網路小組(Network Working Group)所制定;SSH 為建立在應用層基礎上的安全協議。SSH是目前較為可靠的,專為遠端登入回話和其他網路服務提供安全性的協議。利用SSH協議可以有效防止遠端管理過程中的資訊洩漏。
SSH是由客戶端和伺服器組成的軟體。服務端是一個守護程序,在後臺執行並響應來自客戶端的連線請求。服務端一般是sshd程序,提供對遠端連線的處理,一般包括公共金鑰認證、金鑰交換、對稱金鑰加密和非安全連線。客戶端包含ssh程式以及像scp(遠端拷貝)、slogin(遠端登陸)、sftp(安全檔案傳輸)等其他的應用程式。工作機制大致是本地的客戶端傳送一個連線請求到遠端服務端,服務端檢測申請的包和IP地址再發送金鑰給ssh客戶端,本地再將金鑰發回給伺服器,自此連線建立。——百度知道

和nfs服務的不同在,nfs服務是把主機Ubuntu上的一個nfs服務目錄掛載到本地開發板上;而ssh服務是把開發板的整個目錄掛載到主機上。一個簡單的例子就是在windows下的secureCRT上使用ssh服務掛載Ubuntu的整個檔案系統到secureCRT下,這樣相當於在secureCRT下操作檔案系統就和windows下操作檔案系統一樣了。

安裝ssh服務

步驟1:安裝ssh-server apt-get install openssh-server
步驟2:安裝ssh-client apt-get install openssh-client
步驟3:確認ssh服務是否成功 ps -e|grep sshd
命令列資訊:
6949 ? 00:00:00 sshd
看到sshd表明ssh-server啟動了
步驟4:如果沒有該資訊 /etc/init.d/ssh start
命令列資訊:
[ ok ] Starting ssh (via systemctl): ssh.service.
注意:ssh的遠端登入工具訪問伺服器時,伺服器預設埠是22。
參考連結
因為後面可能會用到ssh服務,而且其實以前搭建過ssh服務,但是感覺不好用,就沒怎麼用過了,現在看好像以前玩的太low了。以後要把後續的ssh服務連線secureCRT的過程新增上來。

總結:曾經有幾個月的學習《計算機網路原理》的時間,我學完也沒記筆記,等到我現在看到埠什麼詞語的時候,我只感到一點熟悉感。如果在給我一次機會,我會把我所學所想,都用部落格記下來,如果給這個機會加一個期限,我希望是。。。