器初始化三板斧:root密碼、SSH與vsftpd一次到位)
簡介在Ubuntu 18.04環(huán)境下圍繞服務(wù)器基礎(chǔ)配置的docx文檔面向需要遠程管理Linux系統(tǒng)的運維初學(xué)者或開發(fā)者。文檔內(nèi)容完整覆蓋四大關(guān)鍵操作使用sudo passwd root修改root用戶密碼通過apt-get install openssh-server安裝SSH服務(wù)并用netstat -tlp驗證狀態(tài)編輯/etc/ssh/sshd_config將PermitRootLogin設(shè)為yes以允許root遠程登錄以及安裝vsftpd后將vsftpd.conf中write_enableYES注釋去掉以獲得上傳權(quán)限。資源包內(nèi)含1個docx文件大小僅556KB為圖文并茂的速查手冊適合在部署云服務(wù)器或虛擬機時按步驟對照執(zhí)行。文檔采用分步圖示配合命令行展示對每處需要修改的配置項都給出前后對比方便讀者快速定位與檢查。目前已有364人學(xué)習(xí)過該文檔操作指引具備實際參考價值。通過該文檔讀者可完成遠程登錄與FTP服務(wù)配置同時理解核心配置項和重啟服務(wù)方法有效避開常見權(quán)限問題。1. Ubuntu-18.04 服務(wù)器初始化三板斧root、SSH、vsftp 一次配到位剛接觸 Ubuntu-18.04 的人最容易在三件事上翻車裝完系統(tǒng)發(fā)現(xiàn) root 沒密碼、SSH 默認拒絕 root 登錄、vsftpd 裝好后客戶端能連上卻列不出文件。這三個問題單獨看都是幾條命令的事但串在一起就變成“服務(wù)器裝好了遠程卻進不去”的黑匣子。這份筆記就是我把 Ubuntu-18.04 服務(wù)器重裝后前 30 分鐘要做的事拆成完整流程先解決 root 身份認證再讓 SSH 能遠程進來最后把 FTP 服務(wù)搭穩(wěn)。適合兩類人一類是從 CentOS 切過來的運維需要快速對齊 Ubuntu 的初始化習(xí)慣另一類是剛?cè)腴T Linux 的新手照著敲就能通踩坑記錄留著下次少走彎路。2. 修改 root 用戶密碼首次初始化與單用戶恢復(fù)兩條路徑2.1 首次裝完系統(tǒng)為什么 sudo passwd root 才是正解Ubuntu 安裝過程中創(chuàng)建的賬號默認擁有 sudo 權(quán)限但 root 用戶本身沒有可登錄的密碼。很多新手上來就敲su -回顯Authentication failure以為系統(tǒng)壞了其實只是 root 密碼從未設(shè)置過。這時不需要重新安裝系統(tǒng)也不需要進恢復(fù)模式一條命令就能解決sudo passwd root系統(tǒng)會提示Enter new UNIX password:輸入兩次新密碼后看到passwd: password updated successfully就說明寫入了/etc/shadow。這是一條交互式命令密碼不會顯示在終端上這是 passwd 的正常行為不是卡住。這里有個細節(jié)容易被忽略sudo passwd root修改的是 root 賬戶的密碼而passwd不帶參數(shù)時修改的是當前登錄用戶的密碼。如果目標只是讓 root 能直接登錄用前者如果只是改 ubuntu 這個普通賬號的密碼用后者。兩個命令執(zhí)行時都需要交互輸入兩次新密碼Linux 的密碼策略默認對弱密碼不做強制校驗PAM 的 pwquality 模塊在 Ubuntu-18.04 默認未啟用強策略所以密碼長短完全由你自己把控但這不代表可以偷懶生產(chǎn)環(huán)境至少 12 位混合字符。2.2 忘記 root 密碼grub 單用戶模式恢復(fù)全流程服務(wù)器用久了忘記 root 密碼是常見事故。重啟后進入 grub 引導(dǎo)菜單選擇默認內(nèi)核那一項按e進入編輯模式找到以linux開頭的那一行把末尾的ro recovery nomodeset改成rw single init/bin/bash。這里有兩個關(guān)鍵參數(shù)rw讓文件系統(tǒng)以讀寫方式掛載single進入單用戶模式init/bin/bash則是直接拉起一個 bash 作為初始進程跳過所有服務(wù)。改完后按CtrlX或F10啟動。mount -o remount,rw / passwd root exec /sbin/init進入 shell 后第一件事是先確認根分區(qū)是讀寫狀態(tài)。如果之前的參數(shù)里用的是ro此時/etc/shadow文件是只讀的直接passwd root會報Authentication token manipulation error。所以先執(zhí)行mount -o remount,rw /把根分區(qū)重新掛載成可寫再改密碼。改完后執(zhí)行exec /sbin/init回到正常啟動流程。有些服務(wù)器在虛擬化平臺上 grub 菜單被跳過開機直接進系統(tǒng)。這時重啟時按住ShiftBIOS 引導(dǎo)或不斷按EscUEFI 引導(dǎo)讓 grub 菜單出現(xiàn)。還有個玄學(xué)場景VMware 虛擬機里 grub 菜單一閃而過按Shift也沒反應(yīng)可以試試在虛擬機設(shè)置里把啟動時進入固件勾上先進 BIOS 再重啟一次。CtrlD 卡在 recovery 模式輸入不了的情況通常是文件系統(tǒng)掛載狀態(tài)異常先看/是不是只讀再檢查磁盤是否滿了。2.3 密碼策略檢查為什么新密碼老被 PAM 彈回來某些云鏡像或定制版 Ubuntu 會預(yù)裝額外的 PAM 密碼策略模塊設(shè)置過短或與用戶名相似的密碼會被拒絕。sudo passwd root執(zhí)行后如果看到BAD PASSWORD提示這是 libpam-pwquality 在攔截。要么換一個更復(fù)雜的密碼要么臨時調(diào)整策略sudo sed -i s/password requisite pam_pwquality.so.*/password requisite pam_pwquality.so retry3 minlen8/ /etc/pam.d/common-password這條命令把最小長度要求降到 8 位。注意/etc/pam.d/common-password是所有密碼修改操作passwd、chpasswd、useradd都會引用的公共 PAM 配置改完立即生效不需要重啟服務(wù)。不建議在生產(chǎn)環(huán)境把 minlen 設(shè)成 1那等于關(guān)掉了所有密碼強度保護。如果只針對 root 放開策略需要單獨寫/etc/security/pwquality.conf里的enforce_for_root參數(shù)但一般場景下統(tǒng)一降門檻就夠了。3. 安裝 SSH 服務(wù)并放行 root 遠程登錄密鑰優(yōu)先級與 config 參數(shù)詳解3.1 安裝 openssh-serverUbuntu 默認不裝服務(wù)端Ubuntu-18.04 桌面版默認連 ssh 客戶端都要手動補服務(wù)器版也未必裝了 openssh-server。sudo apt install openssh-server裝完后先確認服務(wù)狀態(tài)sudo apt update sudo apt install -y openssh-server sudo systemctl enable --now ssh sudo systemctl status ssh ss -tlnp | grep :22第一行把包管理器索引刷新后安裝服務(wù)端-y跳過確認。第二行里enable設(shè)置開機自啟--now表示立即啟動這條命令比分開寫enable和start省一步。第三行看服務(wù)是否處于 active 狀態(tài)。第四行直接檢查 22 端口是否在監(jiān)聽這一步比看 systemd 狀態(tài)更直觀——服務(wù)顯示 active 但端口沒起來多半是配置語法錯誤導(dǎo)致 sshd 啟動后隨即退出。Ubuntu 上 SSH 服務(wù)名稱是ssh而不是sshd這是和 CentOS 差別最大的地方。有很多人照著 CentOS 的systemctl start sshd敲回顯Unit sshd.service not found然后就開始懷疑人生。Ubuntu 的ssh.service是一個 alias實際對應(yīng)/lib/systemd/system/ssh.service和ssh.socket兩個單元文件。如果你查systemctl status ssh顯示Loaded: alias不要慌這是正?,F(xiàn)象。3.2 sshd_config 拆解PermitRootLogin 與 PasswordAuthentication 的四種組合SSH 服務(wù)裝好后默認配置大概率拒絕 root 直接登錄。Ubuntu-18.04 的/etc/ssh/sshd_config里默認是PermitRootLogin prohibit-password意思是 root 只能通過密鑰登錄密碼登錄被禁止。這對剛配好密碼、還沒生成密鑰的用戶來說就等于“root 進不來”。要允許 root 用密碼遠程登錄sudo sed -i s/^#\?PermitRootLogin.*/PermitRootLogin yes/ /etc/ssh/sshd_config sudo sed -i s/^PasswordAuthentication.*/PasswordAuthentication yes/ /etc/ssh/sshd_config sudo sshd -t sudo systemctl reload sshsshd -t是配置語法校驗只檢查不生效返回碼為 0 才繼續(xù)執(zhí)行 reload。這里有個常見坑reload只是讓 sshd 重新讀取配置不會踢掉當前已建立的連接但如果配置里PermitRootLogin寫的值非法sshd -t會直接報Bad yes/no argument此時 reload 不會生效服務(wù)繼續(xù)用舊配置跑。四個取值的關(guān)系值得記一下yes允許 root 用任何認證方式登錄prohibit-password允許 root 但只用密鑰forced-commands-only允許 root 但只能執(zhí)行指定命令no完全拒絕 root。PasswordAuthentication yes/no控制的是密碼認證總體開關(guān)對 root 和普通用戶都生效。四者組合后的實際效果如下表PermitRootLoginPasswordAuthenticationroot 密碼登錄root 密鑰登錄普通用戶密碼登錄yesyes允許允許允許yesno拒絕允許拒絕prohibit-passwordyes拒絕允許允許noyes拒絕拒絕允許很多人在云服務(wù)器上遇到“密鑰能登、密碼登不上”的怪現(xiàn)象查了半天發(fā)現(xiàn)是云鏡像默認把PasswordAuthentication設(shè)成了no加上PermitRootLogin prohibit-password兩重限制疊一起就把密碼登錄徹底堵死了。判斷當前生效配置別靠眼睛看文件直接跑sshd -T打印所有有效參數(shù)這是最靠譜的排查手段。3.3 密鑰登錄與 authorized_keys 權(quán)限陷阱既然密鑰認證是 Ubuntu 的默認偏好干脆配一組密鑰讓 root 免密登錄比每次輸密碼更穩(wěn)。生成密鑰的操作在本地機器上執(zhí)行ssh-keygen -t rsa -b 4096 -C rootubuntu1804 -f ~/.ssh/id_rsa_ubuntu ssh-copy-id -i ~/.ssh/id_rsa_ubuntu.pub root192.168.1.100第一條命令生成 4096 位 RSA 密鑰對-C是注釋標簽-f指定文件名避免覆蓋默認密鑰。第二條命令把公鑰追加到遠程服務(wù)器的/root/.ssh/authorized_keys。ssh-copy-id會要求輸入一次 root 密碼前提是上一步已經(jīng)把PermitRootLogin改為yes并且密碼登錄開啟寫入后立即提示可以密鑰登錄。直接手動追加公鑰時最容易踩權(quán)限坑。~/.ssh目錄權(quán)限必須是 700authorized_keys文件必須是 644 或 600.ssh目錄所有者和用戶主目錄所有者必須一致。sshd對權(quán)限非常敏感只要authorized_keys是 777 或者被 root 以外用戶持有寫權(quán)限密鑰認證會被靜默忽略然后退回密碼認證。排查時先懷疑權(quán)限不要急著去重新生成密鑰。查看遠程端權(quán)限狀態(tài)可以用ls -ld /root/.ssh /root/.ssh/authorized_keys chmod 700 /root/.ssh chmod 600 /root/.ssh/authorized_keyschown root:root /root/.ssh -R也別落下尤其是當你曾經(jīng)用普通用戶執(zhí)行過ssh-copy-id root...這種情況生成的文件屬主可能是普通用戶。sshd會拒絕讀取屬主不對的 key 文件日志里留下一行Authentication refused: bad ownership or modes。4. 搭建 vsftpd 服務(wù)主動被動模式選型與多用戶目錄隔離4.1 安裝 vsftpd 與基礎(chǔ)配置vsftpd 是 Ubuntu 軟件源里最穩(wěn)定的 FTP 服務(wù)端包名就叫vsftpdapt 直接裝sudo apt install -y vsftpd sudo systemctl enable --now vsftpd sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak裝完立刻停一下Ubuntu-18.04 的/etc/vsftpd.conf默認配置里listenNO和listen_ipv6YES是互斥的如果系統(tǒng)同時啟用了 IPv6 和 IPv4需要手動確認。默認配置還禁止寫入write_enableNO匿名登錄也開著anonymous_enableYES這些都要按需調(diào)整。先把配置文件備份好后面改壞了隨時cp回來?;A(chǔ)配置做三件事允許本地用戶登錄、允許寫入、指定監(jiān)聽模式sudo sed -i s/^anonymous_enableYES/anonymous_enableNO/ /etc/vsftpd.conf sudo sed -i s/^#\?write_enableYES/write_enableYES/ /etc/vsftpd.conf sudo sed -i s/^#\?local_umask022/local_umask022/ /etc/vsftpd.conf sudo sed -i s/^listen.*/listenYES/ /etc/vsftpd.conf sudo sed -i s/^listen_ipv6.*/listen_ipv6NO/ /etc/vsftpd.confanonymous_enableNO把匿名訪問關(guān)掉否則任何人都能連上來下載文件write_enableYES開啟上傳、刪除、重命名權(quán)限這個不開的話 vsftpd 會拒絕一切寫操作客戶端報 550 Permission deniedlocal_umask022決定上傳文件默認權(quán)限022 意味著上傳的文件是 644、目錄是 755對多用戶共享場景比較合理listenYES讓 vsftpd 以獨立服務(wù)方式監(jiān)聽listen_ipv6NO避免和 IPv4 監(jiān)聽沖突。4.2 被動模式參數(shù)與防火墻端口段FTP 有主動和被動兩種模式。主動模式下服務(wù)器主動連客戶端的高位端口客戶端在 NAT 后面基本必掛被動模式下服務(wù)器監(jiān)聽一個端口范圍等待客戶端來連穿透性更好。公網(wǎng)環(huán)境百分之百選被動模式sudo cat /etc/vsftpd.conf EOF pasv_enableYES pasv_min_port30000 pasv_max_port30010 pasv_address192.168.1.100 EOFpasv_enableYES開啟被動模式pasv_min_port和pasv_max_port定義一個 10 個端口的區(qū)間服務(wù)器在這個范圍內(nèi)挑選端口作為數(shù)據(jù)傳輸通道pasv_address是服務(wù)器對外的公網(wǎng)或局域網(wǎng) IP當服務(wù)器有多塊網(wǎng)卡或者在內(nèi)網(wǎng) NAT 后面時不寫這個客戶端會收到一個內(nèi)網(wǎng)地址連接直接卡死。如果服務(wù)器有固定公網(wǎng) IP這里填公網(wǎng)地址如果沒有公網(wǎng) IP只在內(nèi)網(wǎng)用填服務(wù)器內(nèi)網(wǎng) IP 即可。這個端口段必須同步放行到防火墻。Ubuntu-18.04 默認沒有啟用 ufw很多人會跳過去但如果你之前手動開過 ufw 或者云安全組限制了端口就要把 21 端口和數(shù)據(jù)端口一起放開sudo ufw allow 21/tcp sudo ufw allow 30000:30010/tcp sudo ufw status注意 ufw 放行端口段的寫法是30000:30010/tcp中間是冒號不是橫杠寫錯的話 ufw 會直接報語法錯誤。云服務(wù)器還要去控制臺安全組里加同樣的規(guī)則否則本地 ufw 開了也白搭——流量在到達系統(tǒng)之前就被云防火墻擋在門外了。4.3 限制 root 與普通用戶的目錄邊界vsftpd 默認允許所有本地用戶登錄包括 root。root 登錄后能訪問整個文件系統(tǒng)從安全角度看這是災(zāi)難。生產(chǎn)環(huán)境建議用普通用戶跑 FTP同時把用戶限制在自己的 home 目錄里sudo sed -i s/^#\?chroot_local_userYES/chroot_local_userYES/ /etc/vsftpd.conf sudo sed -i s/^#\?allow_writeable_chrootYES/allow_writeable_chrootYES/ /etc/vsftpd.confchroot_local_userYES把所有本地用戶鎖在自己的 home 目錄中用戶將無法通過cd /etc跳出目錄。這個參數(shù)有個著名的副作用當用戶 home 目錄本身可寫時vsftpd 會拒絕服務(wù)報500 OOPS: vsftpd: refusing to run with writable root inside chroot()。報錯原因很直白——chroot 后用戶已經(jīng)看到整個“世界”如果根目錄還可寫用戶就能上傳覆蓋自己目錄下的關(guān)鍵文件。allow_writeable_chrootYES就是取消這層保護。如果不想讓 root 登錄 FTP可以在配置文件里顯式禁止echo userlist_enableYES /etc/vsftpd.conf echo userlist_denyYES /etc/vsftpd.conf echo root /etc/vsftpd.userlist這三行的含義是開啟用戶名單檢查userlist_denyYES表示名單里的用戶被拒絕登錄把 root 寫進名單就讓 root 無法登錄 FTP。如果哪天要臨時放行 root改userlist_denyNO相當于把名單變成白名單此時文件里寫的所有用戶都允許登錄其他一律拒絕。這兩種模式別搞混了改錯其中一個可能把所有人都擋在外面。5. 集成排查避坑改完密碼登錄不上、SSH 拒絕、FTP 列表失敗的對癥處理5.1 su 報“鑒定令牌操作錯誤”先查 shadow 文件再查 PAM現(xiàn)象sudo passwd root顯示密碼更新成功但執(zhí)行su -輸入新密碼后回顯su: 鑒定令牌操作錯誤英文是su: Authentication token manipulation error怎么輸都進不去。原因這個錯誤字面意思是“認證令牌操作失敗”通常不是密碼本身錯了而是密碼寫入/etc/shadow時出了問題。常見誘因有三個一是 passwd 命令執(zhí)行過程中被中斷比如輸入密碼時按了 CtrlC導(dǎo)致 shadow 文件里對應(yīng)行的哈希沒寫完整二是/etc/shadow文件權(quán)限或?qū)僦鞅桓膲娜窍到y(tǒng)使用 LDAP/NIS 等外部認證源passwd 本地命令和遠端認證源不同步。解決先檢查/etc/shadow里 root 那一行的格式正常的是一個root:$6$salt$hash:...的長串如果看到root:!:或root:*:說明密碼是鎖定狀態(tài)。恢復(fù)手段是用單用戶模式重新設(shè)置密碼參考 2.2 節(jié)。如果 shadow 文件權(quán)限異常執(zhí)行chmod 640 /etc/shadow chown root:shadow /etc/shadow。外部認證源的情況需要確認/etc/nsswitch.conf里passwd: compat而不是passwd: ldap如果確實走了 LDAP要在 LDAP 服務(wù)端改密碼而不是在本地改。5.2 SSH 連不上區(qū)分連接被拒、超時、認證失敗三種形態(tài)現(xiàn)象ssh 客戶端連接服務(wù)器時報錯但報錯內(nèi)容每次都不一樣有時是Connection refused有時轉(zhuǎn)了半天才報Connection timed out有時直接彈Permission denied (publickey,password)。原因這三種報錯對應(yīng)完全不同的故障點。Connection refused是服務(wù)器的 22 端口根本沒在監(jiān)聽sshd 沒啟動或啟動后退出Connection timed out是數(shù)據(jù)包發(fā)不過去要么防火墻攔截要么服務(wù)器不在同一網(wǎng)絡(luò)Permission denied是端口通了但認證沒過密鑰不對、密碼策略不允許、賬號被鎖定都會這樣。很多人拿到報錯就一頭扎進 sshd_config其實先分清這三點能把排查范圍縮小一大半。解決按順序排查。看端口監(jiān)聽狀態(tài)與防火墻規(guī)則注意 ufw 和 cloud security group 是兩個獨立關(guān)口ss -tlnp | grep :22 sudo systemctl status ssh --no-pager -l journalctl -u ssh --no-pager -n 30第一條命令沒有輸出說明 sshd 沒起來看第二條查服務(wù)為什么掛通常配置語法錯誤會在啟動時直接打印到 systemd 的日志里第三條看最近 30 條 sshd 日志Connection refused的同時日志里會有error: Bind to port 22 failed之類的線索八成是端口被別的服務(wù)占了。Permission denied的排查方向看/var/log/auth.log里面會明確寫Failed password for root from ...還是User root from ... not allowed because not listed in AllowUsers。5.3 root 允許用密鑰但不能用密碼云鏡像殘留的禁密碼配置現(xiàn)象/etc/ssh/sshd_config里已經(jīng)改成PermitRootLogin yes和PasswordAuthentication yes但 root 密碼登錄還是報Permission denied普通用戶卻能正常用密碼登錄。原因云廠商鏡像或歷史配置可能殘留了/etc/ssh/sshd_config.d/目錄下的附加配置文件。Ubuntu-18.04 的 sshd 主配置文件末尾有Include /etc/ssh/sshd_config.d/*.conf這個目錄下的配置文件優(yōu)先級高于主文件里面可能寫著PasswordAuthentication no直接覆蓋了你改的主配置。解決不要只看主配置文件檢查目錄里所有 conf 文件的參數(shù)覆蓋關(guān)系grep -R PasswordAuthentication\|PermitRootLogin /etc/ssh/sshd_config.d/ /etc/ssh/ sshd -T | grep -E passwordauthentication|permitrootloginsshd -T輸出的才是 sshd 實際生效的運行時參數(shù)。如果看到PasswordAuthentication no而主文件里是 yes把那一條從sshd_config.d里刪掉再 reload。從那以后我也養(yǎng)成了習(xí)慣判斷 SSH 配置以sshd -T為準改完后永遠先跑一遍語法校驗再重啟。5.4 vsftpd 能連上但列不出目錄被動模式端口被擋現(xiàn)象FTP 客戶端能正常登錄并顯示歡迎信息但執(zhí)行l(wèi)s命令后一直轉(zhuǎn)圈最后超時報Failed to retrieve directory listing或者提示227 Entering Passive Mode后卡死。原因控制連接21 端口通了每次列出目錄或傳輸文件時協(xié)商的數(shù)據(jù)連接被動模式端口段卻被防火墻攔了?!澳艿卿浀胁怀瞿夸洝被究梢詳喽ㄊ菙?shù)據(jù)端口的問題而不是賬號問題。FTP 客戶端一般默認被動模式服務(wù)器回給客戶端的227響應(yīng)里包含 IP 和端口客戶端去連那個端口時數(shù)據(jù)包被丟棄目錄列表自然拉不回來。解決檢查三處——vsftpd.conf里pasv_min_port/pasv_max_port是否已配置且范圍合理ufw 是否放行了對應(yīng)的端口段云安全組是否同步放行。注意pasv_address也要核對如果服務(wù)器不恰當?shù)仨憫?yīng)了內(nèi)網(wǎng) IP 而客戶端在外面連接會直接失敗。用命令行客戶端驗證最直觀ftp -v 192.168.1.100登錄后執(zhí)行passive開啟被動模式再執(zhí)行l(wèi)s如果報Connection timed out就說明端口段沒放行。本地測試建議把pasv_min_port和pasv_max_port的范圍設(shè)小一點比如 10 個端口方便在防火墻規(guī)則里一眼看清。5.5 單用戶模式下 passwd 報錯文件系統(tǒng)只讀導(dǎo)致寫入失敗現(xiàn)象忘記 root 密碼后按 2.2 節(jié)進入 recovery 模式執(zhí)行passwd root時報錯或提示“鑒定令牌操作錯誤”密碼始終無法更新。原因這是最經(jīng)典的坑——grub 啟動參數(shù)里可能保留了原有的ro掛載選項導(dǎo)致根分區(qū)以只讀方式掛載passwd無法寫入/etc/shadow。前面提到要改成rw但如果用recovery nomodeset啟動時忘記帶上rw或者某些定制內(nèi)核強制重掛為只讀就會踩這個坑。解決進入 shell 后先執(zhí)行mount -o remount,rw /確認mount | grep / 輸出里包含rw再改密碼。另外注意恢復(fù)模式里可能只有mount基礎(chǔ)命令可用如果passwd不在 PATH 里用/usr/bin/passwd或/bin/passwd的絕對路徑執(zhí)行。改完密碼后建議sync一下再重啟避免內(nèi)存中的內(nèi)容沒落盤。6. 驗證腳本與后續(xù)加固初始化后強制走一遍的三連檢查第 2 到第 5 章把三件事都配完了但配置完不等于能用。我每次初始化完一套 Ubuntu-18.04都會強制走一遍“端口監(jiān)聽 → SSH 實測 → FTP 實測”的三連檢查三個環(huán)節(jié)各對應(yīng)一個命令全部通過才算交付。這個習(xí)慣幫我擋掉了至少三次“配完就忘、第二天連不上”的事故。先做端口與服務(wù)的靜態(tài)檢查ss -tlnp | grep -E :22|:21|:30000|:30010 sudo systemctl is-active ssh vsftpd第一條命令把 SSH22、FTP 控制端口21和被動模式端口段30000-30010全部列出確認都在 LISTEN 狀態(tài)。第二條用is-active一次查兩個服務(wù)輸出active即正常。這一步只花了 5 秒但能暴露 80% 的服務(wù)未啟動問題。接著做 SSH 的實測連接從另一臺機器或同一臺機器的 localhost發(fā)起ssh -o BatchModeyes -o ConnectTimeout5 root192.168.1.100 whoami hostnameBatchModeyes禁止交互輸入密碼如果密鑰認證沒配好這條命令會立即失敗而不是掛在密碼輸入上適合腳本化驗證。ConnectTimeout5把連接超時限制在 5 秒內(nèi)避免網(wǎng)絡(luò)不通時卡半天。返回結(jié)果是root加上主機名說明 root 遠程登錄和密鑰鏈路都通了。如果返回Permission denied回頭看 5.2 和 5.3 節(jié)的排查路徑。最后驗證 FTP 服務(wù)能不能列目錄和傳文件。用 lftp 比交互式 ftp 更適合腳本lftp -u webuser,YourPassword 192.168.1.100 -e ls; put /tmp/testfile.txt; bye-u里用逗號分隔用戶名和密碼-e后面跟命令串ls列目錄put上傳本地測試文件bye退出。如果ls卡住或失敗就是 5.4 節(jié)說的被動模式端口段問題。測試文件上傳成功后再到服務(wù)器上ls -l /home/webuser/testfile.txt確認文件落盤權(quán)限是否符合local_umask預(yù)期。后續(xù)加固走兩個動作。一是把 sshd_config 里的PermitRootLogin從yes收緊回prohibit-password密鑰登錄不受影響但密碼爆破路徑被堵死二是給 vsftpd 加上登錄失敗限制sudo apt install -y fail2ban后創(chuàng)建/etc/fail2ban/jail.local里面寫入[vsftpd] enabled true和[sshd] enabled true兩段。日志位置也不一樣SSH 看/var/log/auth.logvsftpd 看/var/log/vsftpd.log出錯時先tail -n 50再搜關(guān)鍵詞比盲猜快得多。這套檢查流程看起來瑣碎但正是這些瑣碎動作讓我在運維事故里找到了一條標準路徑。從那以后我每次重裝 Ubuntu 服務(wù)器都強制走一遍“端口監(jiān)聽 SSH BatchMode 實測 lftp 傳文件”三連配完了不急著上線先花兩分鐘把鏈路跑通這樣后面哪怕出問題也知道鍋在哪個環(huán)節(jié)。希望這份初始化流程和踩坑記錄能幫到你讓你第一次配 Ubuntu-18.04 時少走幾步彎路。本文還有配套的精品資源點擊獲取