萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux SFTP 傳檔實戰指南:基於 SSH 的安全檔案傳輸、互動指令與批次腳本

SFTP (SSH File Transfer Protocol) 建立在 SSH 協定之上,加密傳輸、支援公開金鑰認證、無需額外開啟 FTP 埠口,是 Linux 伺服器間傳檔的標準選擇。本文涵蓋連線、互動指令、批次上傳/下載、非標準埠口、金鑰認證等實戰技巧。

SFTP 架構示意圖

一、連線方式

預設埠口 22

sftp user@host

指定非標準埠口

sftp -oPort=2222 user@host
# 或
sftp -P 2222 user@host   # OpenSSH 7.6+ 支援 -P 大寫

帶檔案直傳(非互動模式)

sftp user@host:/remote/path/file.txt /local/path/   # 下載
sftp /local/path/file.txt user@host:/remote/path/   # 上傳

二、互動模式核心指令速查

進入 `sftp>` 提示字元後:

遠端操作本地操作 (加 l 前綴)說明
ls / llslls列出檔案
cd / lcdlcd切換目錄
pwd / lpwdlpwd顯示當前路徑
mkdir / lmkdirlmkdir建立目錄
rm / lrmlrm刪除檔案
rmdir / lrmdirlrmdir刪除空目錄
chmod / lchmodlchmod修改權限
chown / lchownlchown修改擁有者
get remote [local]-下載檔案/目錄 (-r 遞歸)
put local [remote]-上傳檔案/目錄 (-r 遞歸)
help / ?-查看所有指令
bye / exit / quit-離開 SFTP

三、實戰範例

下載單一檔案至本地指定資料夾

sftp> get test.cpp ./Project/

上傳大型 ISO 映像檔

sftp> put /home/liu/Software/RHEL_5.5_x86_64.iso /home/xudong/Blog/

遞歸上傳整個目錄

sftp> put -r /local/project /remote/backup/

四、伺服器端啟用 SSH/SFTP

# 檢查 sshd 狀態
systemctl status sshd
# 若未啟動
systemctl start sshd
systemctl enable sshd

確認 /etc/ssh/sshd_config 包含:

Subsystem sftp internal-sftp
# 或
Subsystem sftp /usr/libexec/openssh/sftp-server

五、批次腳本化(免密鑰登入)

  1. 產生金鑰對:ssh-keygen -t ed25519
  2. 部署公鑰:ssh-copy-id user@host
  3. 撰寫批次檔 batch.txt:
put -r /var/www/html /backup/web-$(date +%F)
get -r /var/log/nginx /local/logs/nginx-$(date +%F)
bye
  1. 執行:sftp -b batch.txt user@host

六、SFTP vs FTP/FTPS 快速比較

特性SFTPFTPFTPS
加密全程 SSH 加密明文SSL/TLS 加密
埠口22 (單一)21 + 被動模式隨機埠990 + 被動模式隨機埠
防火牆友善極佳差中
認證方式密碼/金鑰/多因子密碼密碼/憑證
指令相容類 FTP 子集標準 RFC 959同 FTP

結語

SFTP 以單一埠口、強加密、金鑰認證、原生支援批次腳本,成為 Linux 伺服器間檔案傳輸的**事實標準**。熟練 `get/put -r`、`lcd/lls` 本地遠端切換、批次檔 `-b` 參數,即可應付 99% 傳檔場景。

copyright © 萬盛學電腦網 all rights reserved