Docker部署常見應(yīng)用之SFTP服務(wù)器詳解
簡(jiǎn)介
atmoz/sftp 是一個(gè)基于 Docker 的 SFTP 服務(wù)鏡像,它使用 OpenSSH 來提供 SFTP 服務(wù)。
這個(gè)鏡像支持創(chuàng)建單個(gè)或多個(gè)用戶的 SFTP 訪問,并允許用戶通過 SFTP 協(xié)議安全地共享文件。
它是一個(gè)輕量級(jí)的解決方案,可以快速部署 SFTP 服務(wù)器.使用時(shí),可以通過 Docker 命令行參數(shù)來指定 SFTP 用戶名、密碼和上傳目錄等配置。
Dockers部署
單用戶
以下是使用Docker部署atmoz/sftp服務(wù)的一般步驟:
安裝Docker:確保你的系統(tǒng)上已經(jīng)安裝了Docker。
拉取Docker鏡像:使用以下命令從Docker Hub拉取atmoz/sftp鏡像:
sudo docker pull atmoz/sftp
創(chuàng)建文件掛載目錄:
sudo mkdir /data/docker/atmoz/upload
啟動(dòng)Docker容器:
使用以下命令啟動(dòng)SFTP服務(wù)器,允許用戶foo通過密碼pass訪問,并且可以操作宿主機(jī)上/data/atmoz/upload目錄中的內(nèi)容。同時(shí),SFTP服務(wù)將在后臺(tái)運(yùn)行,并且可以通過宿主機(jī)的2222端口進(jìn)行訪問。:
sudo docker run \ -d \ --name atmoz-sftp-server \ -p 2222:22 \ -v /data/docker/atmoz/upload:/home/foo/upload \ atmoz/sftp foo:pass:1001
這條docker run命令是用來啟動(dòng)一個(gè)名為atmoz/sftp的Docker容器,它將作為一個(gè)SFTP服務(wù)器運(yùn)行。
下面是命令各部分的解釋:
綜上所述,這條命令的作用是啟動(dòng)一個(gè)SFTP服務(wù)器,允許用戶foo通過密碼pass訪問,并且可以操作宿主機(jī)上/data/atmoz/upload目錄中的內(nèi)容。同時(shí),SFTP服務(wù)將在后臺(tái)運(yùn)行,并且可以通過宿主機(jī)的2222端口進(jìn)行訪問。
docker run: Docker命令,用于創(chuàng)建并啟動(dòng)一個(gè)新的容器實(shí)例。-d: 表示以"detached"模式運(yùn)行容器,即在后臺(tái)運(yùn)行。--name atmoz-sftp-server: 指定容器的名稱為atmoz-sftp-server。-p 2222:22: 端口映射參數(shù),將容器內(nèi)部的22端口映射到宿主機(jī)的2222端口。這樣,外部可以通過宿主機(jī)的2222端口來訪問容器內(nèi)的SFTP服務(wù)。-v /data/atmoz/upload:/home/foo/upload: 卷掛載參數(shù),將宿主機(jī)的/data/atmoz/upload目錄掛載到容器內(nèi)的/home/foo/upload目錄。這允許SFTP用戶foo訪問和操作宿主機(jī)上指定的目錄。atmoz/sftp: 指定要運(yùn)行的Docker鏡像名稱。foo:pass:1001: 這是傳遞給容器的參數(shù),用于設(shè)置SFTP用戶的信息。格式通常為用戶名:密碼:UID。在這個(gè)例子中:foo是SFTP用戶的用戶名。pass是該用戶的密碼。1001是該用戶的用戶ID(UID),在Linux系統(tǒng)中用于標(biāo)識(shí)用戶。
連接到SFTP服務(wù)器
使用SFTP客戶端連接到你的SFTP服務(wù)器。例如,使用命令行工具sftp:
sftp -P 2222 foo@atmoz-sftp-server-ip
這里atmoz-sftp-server-ip 容器所在服務(wù)器的IP地址。密碼為pass。
多用戶
創(chuàng)建配置文件
在/data/atmoz/conf 目錄下創(chuàng)建配置文件user.sconf
創(chuàng)建配置文件目錄
sudo mkdir /data/docker/atmoz/conf
創(chuàng)建users.conf文件, 增加下面內(nèi)容:
foo:123:1001:100 bar:abc:1002:100 baz:xyz:1003:100
啟動(dòng)容器
sudo docker run \ -d \ --name atmoz-sftp-server \ --privileged=true \ -p 2222:22 \ -v mySftpVolume:/home \ -v /data/docker/atmoz/config/users.conf:/etc/sftp/users.conf:ro \ atmoz/sftp
注意 -v mySftpVolume:/home 會(huì)在自動(dòng)生成mySftpVolume 目錄。 此處不能自定義目錄, 自定義目錄無法登錄。
用戶信息加密
crypt加密
命令行運(yùn)行以下命令, 對(duì)密碼加密,
python -c "import crypt; print(crypt.crypt('YOUR_PASSWORD'))"
這里YOUR_PASSWORD替換為你的密碼
啟動(dòng)容器
sudo docker run \ -d \ --name atmoz-sftp-server \ -p 2222:22 \ -v /data/docker/atmoz/upload:/home/foo/upload \ atmoz/sftp \ 'foo:<encrypted-password>:e:1001'
<encrypted-password>替換為加密后的密碼。
注意: :e 表示前面為加密密碼, 同時(shí)'<user>:<encrypted-password>:e:1001'要用單引號(hào)括起來。
使用SSH密鑰認(rèn)證
生成密鑰
- 以下命令生成密鑰
# 密鑰存放創(chuàng)建目錄 sudo mkdir -p /data/docker/atmoz/ssh # 生成密鑰 sudo ssh-keygen -t rsa -b 4096 -f /data/docker/atmoz/ssh/my_rsa_key
- 使用
ssh-keygen命令生成了一個(gè)4096位的RSA密鑰對(duì),密鑰文件將被存儲(chǔ)在/data/docker/atmoz/ssh/my_rsa_key。 - 生成密鑰時(shí)需要輸入密碼,這個(gè)密碼用于保護(hù)私鑰文件。
啟動(dòng)容器
sudo docker run \ -d \ --name atmoz-sftp-server \ -p 2222:22 \ -v /data/docker/atmoz/ssh/my_rsa_key.pub:/home/foo/.ssh/keys/my_rsa_key.pub:ro \ -v /data/docker/atmoz/upload:/home/foo/upload \ atmoz/sftp \ foo::1001
- 使用
docker run命令啟動(dòng)了一個(gè)名為atmoz-sftp-server的容器,映射了容器的22端口到宿主機(jī)的2222端口。 - 將公鑰文件掛載到容器內(nèi)的
/home/foo/.ssh/keys/my_rsa_key.pub路徑,這樣容器就可以使用這個(gè)公鑰來驗(yàn)證客戶端的私鑰。 - 還掛載了宿主機(jī)的
/data/docker/atmoz/upload目錄到容器的/home/foo/upload目錄,用于文件的上傳和下載。 atmoz/sftp是使用的Docker鏡像名稱,foo::1001是指定的SFTP用戶及其所屬組ID。
連接到SFTP服務(wù)器
sftp -i /path/to/your/private_key -P 2222 foo@atmoz-sftp-server-ip
- 使用
sftp命令登錄到SFTP服務(wù)器,-i選項(xiàng)指定了私鑰文件的路徑,foo是SFTP服務(wù)器上的用戶名,atmoz-sftp-server-ip是容器所在服務(wù)器的IP地址。 - 需要將
/path/to/your/private_key替換為實(shí)際的私鑰文件路徑。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Docker中進(jìn)行線上問題排查常用的19個(gè)命令
這篇文章主要為大家詳細(xì)介紹了19個(gè)Docker線上問題排查的常用命令和工具,掌握這些命令和工具都能顯著提升你的問題排查效率,快跟隨小編一起學(xué)習(xí)一下吧2025-05-05
docker python如何實(shí)現(xiàn)打包的方法
這篇文章主要介紹了docker 打包python實(shí)現(xiàn)方法的相關(guān)資料,這里說明如今實(shí)現(xiàn),需要的朋友可以參考下2016-12-12
Docker中Nginx反向代理的實(shí)現(xiàn)步驟
為了安全考慮,我們一般會(huì)設(shè)置反向代理,用來屏蔽應(yīng)用程序真實(shí)的IP和端口號(hào),本文主要介紹了Docker中Nginx反向代理的實(shí)現(xiàn)步驟,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03
阿里云esc服務(wù)器Docker部署單節(jié)點(diǎn)Mysql的講解
今天小編就為大家分享一篇關(guān)于阿里云esc服務(wù)器Docker部署單節(jié)點(diǎn)Mysql的講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-03-03

