共計 2862 個字符,預計需要花費 8 分鐘才能閱讀完成。
如何理解 sftp server 服務 SftpGo,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
SftpGo 是一款高性能、功能齊全、易用可配置的一款 sftp server 服務,基于 go 開發。目前在 linux、macos 下均可以穩定運行 (windows 個人未測試)。數據可以持久化到主流的數據庫,諸如 Mysql、PostgreSQL、Sqlilte.
sftpgo 主要組成
服務端主程序: sftpgosever
cli 腳本: sftpcli
數據目錄
conf 存儲服務配置文件
data 創建 sftp 用戶目錄
backups 存儲應用備份數據
本次基于 k8s 運行服務、mysql5.7 做持久化存儲、騰訊云 NFS 服務做數據目錄、configmap 掛載配置文件、nginx stream 提供域名映射 tcp 訪問
構建鏡像 直接拉取
docker pull taylordang/sftpgo:v1.0
本地基于 Dockerfile 構建
查看具體文檔: [https://github.com/dtcka/sftpgo/tree/master/docker/sftpgo/alpine](https://github.com/dtcka/sftpgo/tree/master/docker/sftpgo/alpine)
構建腳手架
構建腳本: [https://github.com/dtcka/sftpgo/blob/master/docker/rest-api-cli/Dockerfile](https://github.com/dtcka/sftpgo/blob/master/docker/rest-api-cli/Dockerfile)
標準配置文件
{
sftpd : {
bind_port : 2022,
bind_address : 0.0.0.0 ,
idle_timeout : 15,
max_auth_tries : 0,
umask : 0022 ,
banner : ,
upload_mode : 0,
actions : { execute_on : [],
command : ,
http_notification_url :
},
keys : [],
kex_algorithms : [],
ciphers : [],
macs : [],
login_banner_file : ,
setstat_mode : 0,
enabled_ssh_commands : [
md5sum ,
sha1sum ,
cd ,
pwd ,
scp
],
keyboard_interactive_auth_program : ,
proxy_protocol : 0,
proxy_allowed : []
},
data_provider : {
driver : mysql ,
name : sftpgo ,
host : xxxxxx ,
port : 9999,
username : sftpgo ,
password : xxxxx ,
sslmode : 0,
connection_string : ,
users_table : users ,
manage_users : 1,
track_quota : 2,
pool_size : 0,
users_base_dir : ,
actions : { execute_on : [],
command : ,
http_notification_url :
},
external_auth_program : ,
external_auth_scope : 0,
credentials_path : credentials ,
pre_login_program :
},
httpd : {
bind_port : 8080,
bind_address : 0.0.0.0 ,
templates_path : templates ,
static_files_path : static ,
backups_path : backups ,
auth_user_file : ,
certificate_file : ,
certificate_key_file :
}
}
運行應用
以上服務配置準備完成之后,運行容器會在數據庫中自動生成對應的表 br /
提供服務外部入庫 1. 設置內網服務入口
apiVersion: v1
kind: Service
metadata:
name: sftpgo
namespace: sftp
spec:
clusterIP: xxxx
externalTrafficPolicy: Cluster
ports:
- name: 8080-8080-tcp
nodePort: 31807
port: 8080
protocol: TCP
targetPort: 8080
- name: 2022-2022-tcp
nodePort: 30865
port: 2022
protocol: TCP
targetPort: 2022
selector:
k8s-app: sftpgo
qcloud-app: sftpgo
sessionAffinity: None
type: LoadBalancer
status:
loadBalancer:
ingress:
- ip: xxxx
2. 設置外部服務入口
– nginx 配置文件 “` apiVersion: v1 data: nginx.conf: |- user nginx; worker_processes auto; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events {worker_connections 1024;} stream {server { listen 2022; proxy_pass sftpgo 服務對應的內網 ip:2022;} } kind: ConfigMap metadata: name: tcp-config namespace: sftp
##### 3. 測試下服務狀態以及數據目錄權限

br / 測試 ok:數據權限 UID GID 需要設置為 1003. br /
##### 4. 設置域名解析到 nginx 的 externalIps 即可實現域名訪問

br/
br/
附:
看完上述內容,你們掌握如何理解 sftp server 服務 SftpGo 的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注丸趣 TV 行業資訊頻道,感謝各位的閱讀!