SFTP是SSH File Transfer Protocol的縮寫,安全文件傳送協議。SFTP與FTP有着幾乎一樣的語法和功能。SFTP為SSH的其中一部分,是一種傳輸檔案至服務器的安全方式。其實在SSH軟件包中,已經包含了一個叫作SFTP的安全文件信息傳輸子系統,SFTP本身沒有單獨的守護進程,它必須使用sshd守護進程(端口号默認是22)來完成相應的連接和答複操作。
1,搭建環境
1)A端:在内網搭建SFTP服務器;内網環境:ubuntu 16.04/18.04
2)B端:在公網服務器上建立内網服務器的代理;公網服務器為阿裡雲服務器:ubuntu 16.04/18.04
3)C端:在其他内網或公網設備上訪問SFTP服務器
2,内網服務器配置
1)安裝ssh服務器
#更新源
sudo apt-get update
#安裝ssh服務器
sudo apt-get install openssh-server
# 開機自動啟動ssh命令
sudo systemctl enable ssh
# 單次開啟ssh
sudo systemctl start ssh
2)建立反向代理
内網服務器的22端口和公網服務器的50000端口建立ssh連接
ssh -fCNR 50000:localhost:22 -o ServerAliveInterval=60 [email protected] -p 22
[email protected]用自己的公網IP和用戶名代替!
解釋(例子):
該命令實現的功能是,讓一個遠端機器的50000端口代理自己的22端口,這裡所說的遠端機器就是我們的公網服務器。執行如下命令查看是否啟用該進程
ps aux | grep ssh
3,公網服務器配置
1)查看是否成功建立連接
netstat -antpul | grep 50000
此時,在公網服務器上測試連接下sftp服務器(usr用自己用戶名代替)
sftp -P 50000 [email protected]
此時,也可以登錄内網服務器
ssh usr@localhost -p 50000
2)正向代理
前面實現的反向代理端口50000,但這個端口隻允許公網服務器内部訪問。也就是說,隻能先用ssh登錄公網服務器,然後在終端上使用ssh訪問50000端口才能真正登錄到内網服務器。需要繼續配置,才能實現任意第三方的訪問。
公網服務器:讓50010代理50000
ssh -fCNL *:50010:localhost:50000 -o ServerAliveInterval=60 usr@localhost -p 22
解釋(例子):
該命令實現的功能是,讓本機50010端口指向一個遠端機器的50000端口,而這裡的遠端機器恰好就是公網服務器本身。這樣就可以任何機器訪問内網的sftp服務器了。
3)代理進程開機啟動
在~/.bashrc中添加上述指令即可
4)阿裡雲服務器的安全組配置
由于公網使用了阿裡雲服務器,所以要在安全組中開放22、50000、50010端口,其他雲服務器也類似操作即可。
5)用sftp客戶端訪問服務器
通過以上操作,即實現了内網穿透,且可以從外網直接訪問内網的sftp服務器了。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!