Linux 遠程連接與文件傳輸:從基礎到高級配置
在 Linux 系統管理中,遠程連接和文件傳輸是核心技能。SSH 協議提供了安全的遠程訪問方式,而基于 SSH 的 SFTP 和 SCP 則解決了跨服務器文件傳輸的需求。下面將詳細解析 SSH 服務配置、三種遠程操作方式的使用及密鑰認證的配置過程
一、SSH 服務基礎配置與管理
SSH 服務是 Linux 遠程管理的基石,配置和啟動步驟如下:
1. 掛載光驅獲取軟件源(如使用本地 ISO 鏡像)
mount /dev/cdrom /mnt # 掛載光驅到/mnt目錄
2. 安裝 SSH 服務端
yum -y install openssh openssh-clients # 安裝SSH服務端和客戶端
3. 管理 SSH 服務
systemctl restart sshd # 重啟SSH服務
systemctl enable sshd # 設置開機自啟
systemctl status sshd # 查看服務狀態(檢查是否正常運行)
二、SSH 遠程連接:三種方式對比與使用
SSH 提供了三種遠程操作方式,適用于不同場景:
工具 | 協議 | 主要功能 | 適用場景 | 典型命令 |
---|---|---|---|---|
SSH | SSH | 遠程命令執行、交互式 Shell | 系統管理、執行命令 | ssh 用戶名@服務器IP |
SFTP | SSH | 交互式文件傳輸(上傳 / 下載) | 交互式文件操作 | sftp 用戶名@服務器IP put 本地文件 遠程目錄 get 遠程文件 本地目錄 |
SCP | SSH | 非交互式文件傳輸(一次性操作) | 腳本自動化、批量傳輸 | scp 本地文件 用戶名@服務器IP:遠程目錄 scp 用戶名@服務器IP:遠程文件 本地目錄 |
三、SSH 遠程連接詳解
1. 基礎連接命令
ssh root@172.25.0.183 # 以root用戶連接到指定IP的服務器
2. 圖形化界面遠程調用
ssh -X root@172.25.0.183 # -X參數啟用X11轉發,可遠程運行圖形化程序
3. SSH 協議工作原理(技術細節)
SSH 協議包含三個核心子協議:
- 連接協議:負責建立和管理客戶端與服務器的連接
- 用戶認證協議:驗證用戶身份(密碼認證或密鑰認證)
- 傳輸協議:加密數據傳輸,確保安全性
SSH 連接建立的五個階段:
- 版本協商:客戶端與服務器交換支持的 SSH 版本
- 密鑰和算法協商:確定加密算法和會話密鑰
- 用戶認證:驗證用戶身份
- 會話請求:請求交互式 Shell 或其他服務
- 交互會話:建立安全通道,傳輸命令和輸出
四、SFTP 文件傳輸詳解
1. 連接與基本操作
sftp root@172.25.0.183 # 連接到服務器,進入SFTP交互式環境
2. 上傳與下載命令
put /tmp/aa /var # 上傳本地/tmp/aa文件到服務器/var目錄
get /tmp/cc /var # 下載服務器/tmp/cc文件到本地/var目錄
3. SFTP 常用命令(交互式環境)
命令 | 作用 |
---|---|
ls | 查看遠程服務器文件列表 |
lls | 查看本地文件列表 |
cd 目錄 | 切換遠程目錄 |
lcd 目錄 | 切換本地目錄 |
mkdir 目錄 | 創建遠程目錄 |
rm 文件名 | 刪除遠程文件 |
exit | 退出 SFTP 會話 |
五、SCP 文件傳輸詳解
1. 上傳文件
scp /tmp/aa root@172.25.0.183:/var # 上傳本地/tmp/aa到服務器/var目錄
2. 下載文件
scp root@172.25.0.183:/tmp/cc /var # 下載服務器/tmp/cc到本地/var目錄
3. 高級用法:遞歸復制目錄
scp -r /tmp/dir root@172.25.0.183:/var # 遞歸上傳本地目錄到服務器
scp -r root@172.25.0.183:/tmp/dir /var # 遞歸下載服務器目錄到本地
六、SSH 密鑰認證配置(免密碼登錄)
密鑰認證比密碼認證更安全,適合自動化腳本和頻繁登錄場景。配置步驟如下:
1. 在客戶端生成密鑰對
ssh-keygen # 生成密鑰對(默認生成id_rsa私鑰和id_rsa.pub公鑰)
- 按提示操作,可直接回車使用默認選項
- 密鑰對默認保存在
~/.ssh/
目錄下
2. 將公鑰上傳到服務器
ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.25.0.183 # 上傳公鑰到服務器
- 此命令會將公鑰添加到服務器的
~/.ssh/authorized_keys
文件中 - 上傳后,服務器會自動配置正確的文件權限
3. 驗證密鑰認證
ssh root@172.25.0.183 # 嘗試連接,應無需密碼直接登錄
4. 密鑰認證原理
- 客戶端生成密鑰對(私鑰保留在本地,公鑰分發到服務器)
- 登錄時,服務器向客戶端發送挑戰
- 客戶端使用私鑰加密挑戰并返回
- 服務器使用存儲的公鑰解密驗證,確認客戶端身份
七、常見問題與解決方法
- SSH 連接被拒絕
- 檢查服務器 SSH 服務是否運行:
systemctl status sshd
- 檢查防火墻是否開放 22 端口:
firewall-cmd --zone=public --permanent --add-port=22/tcp
- 檢查服務器 SSH 服務是否運行:
- SFTP/SCP 無法上傳下載
- 檢查目錄權限:確保目標目錄有寫入權限
- 檢查 SELinux 狀態:臨時關閉測試:
setenforce 0
- 密鑰認證失敗
- 檢查密鑰文件權限:
~/.ssh
目錄應為 700,私鑰文件應為 600 - 檢查
~/.ssh/authorized_keys
文件權限和內容
- 檢查密鑰文件權限:
- X11 轉發失敗
- 確保服務器
sshd_config
中啟用 X11 轉發:X11Forwarding yes
- 客戶端安裝 X 服務器(如 Xming for Windows)
- 確保服務器
八、安全增強建議
-
修改 SSH 默認端口(提高安全性,減少被掃描概率)
vim /etc/ssh/sshd_config # 編輯配置文件 Port 2222 # 修改Port為非22端口 systemctl restart sshd # 重啟服務生效
-
禁用 root 直接登錄
vim /etc/ssh/sshd_config PermitRootLogin no # 禁止root登錄
-
限制可登錄用戶
vim /etc/ssh/sshd_config AllowUsers user1 user2 # 只允許user1和user2登錄
-
啟用防火墻限制 SSH 訪問
firewall-cmd --zone=public --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept' firewall-cmd --reload
此配置僅允許 192.168.1.0/24 網段的 IP 訪問 SSH 服務
掌握 SSH 遠程連接和文件傳輸是 Linux 系統管理的基礎技能。通過合理配置 SSH 服務、靈活使用 SSH/SFTP/SCP 工具,以及正確設置密鑰認證,可以高效、安全地管理遠程服務器。遇到問題時,結合日志文件(/var/log/secure)和配置檢查,能快速定位并解決問題