在Linux中,使用SFTP(SSH File Transfer Protocol)是一種安全的方式來傳輸文件。SFTP通過SSH(Secure Shell)加密通道傳輸數據,確保了數據的機密性和完整性。以下是使用SFTP在Linux中安全傳輸文件的步驟:
首先,確保你的Linux系統上安裝了SFTP服務器。大多數Linux發行版默認已經安裝了OpenSSH服務器,其中包括SFTP功能。
sudo apt-get update
sudo apt-get install openssh-server
啟動SFTP服務并確保它在系統啟動時自動運行。
sudo systemctl start sshd
sudo systemctl enable sshd
編輯SSH配置文件 /etc/ssh/sshd_config
來配置SFTP。
sudo nano /etc/ssh/sshd_config
找到并修改以下行:
Subsystem sftp /usr/lib/openssh/sftp-server
確保這一行沒有被注釋掉,并且路徑正確。
保存并退出配置文件后,重啟SSH服務以應用更改。
sudo systemctl restart sshd
你可以使用命令行SFTP客戶端連接到服務器。
sftp username@hostname
其中 username
是你的用戶名,hostname
是服務器的IP地址或域名。
連接成功后,你可以使用以下命令在本地和遠程系統之間傳輸文件:
上傳文件到服務器:
put localfile remotefile
從服務器下載文件:
get remotefile localfile
列出遠程目錄內容:
ls
切換遠程目錄:
cd /path/to/directory
退出SFTP會話:
exit
為了提高安全性,可以使用SSH密鑰對進行認證,而不是密碼。
在本地機器上生成SSH密鑰對:
ssh-keygen -t rsa -b 4096
按照提示操作,通常會生成 id_rsa
(私鑰)和 id_rsa.pub
(公鑰)。
將公鑰復制到服務器的 ~/.ssh/authorized_keys
文件中:
ssh-copy-id username@hostname
輸入服務器用戶的密碼后,公鑰將被添加到服務器的授權密鑰列表中。
現在你可以使用SSH密鑰連接SFTP:
sftp -i /path/to/private_key username@hostname
確保你的防火墻允許SSH(默認端口22)連接。
sudo ufw allow 22
或者使用iptables:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
通過以上步驟,你可以在Linux系統中安全地使用SFTP傳輸文件。