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

