linux 用openssh搭建sftp(包含注意点)

本文详细介绍了如何在Linux环境下搭建SFTP服务器,并通过配置脚本和权限管理实现安全的文件传输。从检查依赖软件到安装配置,再到权限设置,提供了一套完整的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先,最初需要查看下当前服务器是否已安装openssl和openssh

检验:  ssh -V

 

一。如果没安装。搭建sftp,需要三个部分: zlib(包含zlib,zlib-devel),openssl,openssh,所需要的rpm包在csdn里都有

 

1.一般的linux系统,包括rehat,centos等基本都有安装openssl

检测: which openssl

由于依赖性的问题,强制安装openssl-devel

rpm -ivh --nodeps --force openssl-devel-0.9.8e-22.el5_8.4.x86_64.rpm

 

2. 安装zlib的相关包,这步操作实际也可以在安装openssh检测时使用,会提示相关错误要你安装zlib

rpm -ivh --nodeps --force zlib-1.2.3-27.el6.x86_64.rpm

rpm -ivh --nodeps --force zlib-devel-1.2.3-27.el6.x86_64.rpm

 

3.安装openssh,解压缩openssh-5.4p1.tar.gz

tar zxvf openssh-5.4p1.tar.gz

cd openssh-5.4p1

./configure  --with-ssl-dir=/usr/local/ssl   #openssl的安装位置
make
make install

 

4.配置
(1) 修改sshd启动脚本 (仅限于只用sftp登录,否则ssh会报错)
# vi /etc/init.d/sshd
SSHD=/usr/sbin/sshd
改为
SSHD=/usr/local/sbin/sshd

修改sshd配置文件,tar包安装的配置文件位置在/usr/local/etc/sshd_config
cd /usr/local/etc
cp sshd_config  sshd_config.bak
cp /etc/ssh/sshd_config  /usr/local/etc/

(2) 如果要保留ssh,同时允许sftp,则在/etc/ssh/sshd_config编辑

vi sshd_config

# override default of no subsystems
# Subsystem    sftp      /usr/local/libexec/sftp-server

Subsystem      sftp internal-sftp
Match group sftp                  #组名,单个用户可以Match user 用户名

#Mathch user nb_bjuser

ForceCommand    internal-sftp
X11Forwarding no
ChrootDirectory /data/htdocs/     #指定实际目录
AllowTcpForwarding no       
ForceCommand internal-sftp

(3) 修改目录权限
chown root.sftp /usr/bj

groupadd  sftp
useradd -d /usr/bj -s /bin/false -g sftp nb_bjuser
passwd  nb_bjuser

(4) 重启sshd服务
service sshd restart

 

 二。如果已安装,则比较简单

创建目录和组,用户

mkdir / home / sftp
groupadd sftp
useradd - M - d / home / sftp - G sftp nb_bjuser
passwdnb_bjuser

 

编辑控制文件

 vim /etc/ssh/sshd_config

#注释原来的Subsystem设置
Subsystem   sftp      / usr / libexec / openssh / sftp - server
#启用internal-sftp
Subsystem       sftp     internal - sftp
#限制www用户的根目录
Match User nb_bjuser
ChrootDirectory / home / sftp
     ForceCommand     internal - sftp
 
控制目录权限
chown root.root /home/sftp
chmod 775 /home/sftp
 
 
sftp设置加密,服务器的私钥可用去覆盖客户端的私钥

---sftp 公钥和私钥
ssh-keygen -t dsa,(或选rsa算法也行),一路回车就好;
进入用户$HOME/.ssh,查看是否存在id.dsa和id.dsa_public

新建.ssh目录,更改所有者和权限 
1)cd /home/longtb
2)mkdir .ssh 
3)chown longtb:users .ssh 
 新建authorized_keys文件,复制.pub文件内容添加至该文件末,更改所有者和权限 
 1)cd .ssh 
 2)vi authorized_keys
 3)chown longtb:users authorized_keys

Linux服务器上搭建SFTP服务器通常需要使用OpenSSH(Secure File Transfer Protocol)服务。以下是简单的步骤: 1. 安装SSH服务器:首先,你需要确保SSH服务已经安装并且运行。如果是基于Debian或Ubuntu的系统,可以使用`apt-get install openssh-server`命令;对于CentOS或RHEL,则用`yum install openssh-server`。 2. 启动并设置服务:安装完成后,启动SSH服务并将其添加到开机自启项: - Debian/Ubuntu: `sudo systemctl start ssh && sudo systemctl enable ssh` - CentOS/RHEL: `sudo systemctl start sshd && sudo systemctl enable sshd` 3. 配置防火墙:允许外部IP访问SFTP,如果是iptables,可以用`sudo ufw allow ssh`;如果是firewalld,用`sudo firewall-cmd --permanent --add-service=ssh`,然后`sudo firewall-cmd --reload`. 4. 创建用户并分配权限:使用`sudo useradd -m sftpuser`创建一个新的SFTP用户,然后编辑`/etc/ssh/sshd_config`文件,将`sftp`用户加入到`Match User`块中,允许他们仅通过SFTP登录: ``` Match User sftpuser ChrootDirectory /home/sftpuser ForceCommand internal-sftp ``` 5. 设置权限:给新用户的主目录设置适当的权限,例如`sudo chown sftpuser:sftpuser /home/sftpuser` 和 `sudo chmod 700 /home/sftpuser`。 6. 重启SSH服务:确保配置更改生效,运行`sudo systemctl restart sshd`。 现在你的Linux服务器应该已经搭建好了一个基本的SFTP服务器,可以通过`sftp sftpuser@your_server_ip`连接到它。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值