SFTP配置公钥至受信任列表,提供外部访问

需求:搭建SFTP,提供外部系统访问,基于公钥配置到受信任列表实现无密码登录.

环境规划

  • 服务端拟订创建sftp和用户组
  • 用户1 sftp用户 user1 密码user1 客户端公钥文件 client_public_key1
  • 用户2 sftp用户 user2 密码user2 客户端公钥文件 client_public_key2

客户端生成公钥

  • 客户端需要生成密钥对,分发公钥,进入系统家目录:
首先需要在家目录创建.ssh文件夹

查看隐藏目录,默认此目录里如果没有.ssh隐藏目录,则需要手动创建

ll –a   --> 查看隐藏目录     

新建.ssh文件夹

mkdir .ssh 

进入.ssh目录

cd .ssh             

执行创建密钥对命令

ssh-keygen -t rsa   

================================================================
提示信息如下:

Generating public/private rsa key pair.

Please be patient....   Key generation may take a few minutes

Enter file in which to save the key (/home/ap/appnms/.ssh/id_rsa):

# 按回车保存为: //.ssh/id_rsa,即当前用户的私钥

Enter passphrase (empty for no passphrase):

# 按回车,表示读取密钥时不需要密钥的密码

Enter same passphrase again:

# 确认密钥的密码,必须和上面的输入相同

Your identification has been saved in /home/ap/appnms/.ssh/id_rsa.

# 私钥保存信息

Your public key has been saved in /home/ap/appnms/.ssh/id_rsa.pub.

服务端

# 创建sftp用户组
groupadd sftp  

# user1
# 新建用户user1
useradd -s /sbin/nologin -g sftp user1   
# 为user1设置密码
passwd user1     
# 为user1创建自己上传目录
mkdir -p /data/sftp/user1/upload
# 为上传目录授权
chown user1:sftp /data/sftp/user1/upload

# 在user1家目录下创建.ssh文件夹
mkdir -p /home/user1/.ssh
# 将客户端公钥内容拷贝至.ssh文件夹下的authorized_keys文件中
cat client_public_key1 > /home/user1/.ssh/authorized_keys
chown -R user1:sftp  /home/user1/.ssh/
chmod 644 /home/user1/.ssh/authorized_keys
chmod 755 /home/user1/.ssh/

# user2
useradd -s /sbin/nologin -g sftp user2
passwd user2 
mkdir -p /data/sftp/user2/upload
chown user2:sftp /data/sftp/user2/upload

mkdir -p /home/user2/.ssh
cat client_public_key2 > /home/user2/.ssh/authorized_keys
chown -R user2:sftp  /home/user2/.ssh/
chmod 644 /home/user2/.ssh/authorized_keys
chmod 755 /home/user2/.ssh/

sftp服务

  • 编辑文件 /etc/ssh/sshd_config
vi /etc/ssh/sshd_config

注释掉如下行:

#  Subsystem      sftp    /usr/libexec/openssh/sftp-server

查看文件末尾是否有: Subsystem      sftp    internal-sftp   没有一定补上去
  • 末尾新增
Match User user1
ChrootDirectory /data/sftp/user1
ForceCommand    internal-sftp
AllowTcpForwarding no
X11Forwarding no

Match User user2
ChrootDirectory /data/sftp/user2
ForceCommand    internal-sftp
AllowTcpForwarding no
X11Forwarding no
  • 重启服务
service sshd restart 
  • 注意
需要关闭SELINUX,vi /etc/selinux/config,SELINUX=disabled

测试

服务端数据准备

# touch somefile /data/sftp/user1/dirdir1
# echo "abc" > /data/sftp/user1/upload/abc.txt
# touch somefile /data/sftp/user2/dirdir2
# echo "abc" > /data/sftp/user2/upload/abc.txt

客户端访问

echo "client" > client.txt
sftp user1@ip #应不需输入密码
pwd #应显示根目录/
ls ##应显示 upload dirdir1

cd upload
put client.txt #应可以正产上送
cd ../dirdir1
put client.txt #应提示无权限

sftp 上传下载命令示例(方便测试)

sftp> get /usr/local/index.php  /home/fuyatao/
将从远程主机的  /usr/local/目录下将 index.php 下载到本地  /home/fuyatao/目录下

sftp> put /usr/local/Linuxgl.pdf /var/www/fuyatao/
把本地 /usr/local/目录下的 linuxgl.pdf文件上传至远程主机/var/www/fuyatao/ 目录下

快速构建

===============================================================================
用户: wf01

快速构建:

--  第一部分: 用户名 密码设置
useradd -s /sbin/nologin -g sftp wf01
passwd  wf01


-- 第二部分: 配置目录,并给用户授权
mkdir -p /data/sftp/wf01/upload
mkdir -p /data/sftp/wf01/download

chown wf01:sftp /data/sftp/wf01/upload

-- 第三部分: 公钥配置,操作权限配置
mkdir -p /home/wf01/.ssh

#配置公钥信息(ssh-keygen -t rsa)
cat client_public_key1 > /home/user1/.ssh/authorized_keys  

chown -R wf01:sftp  /home/wf01/.ssh/

chmod 644 /home/wf01/.ssh/authorized_keys

chmod 755 /home/wf01/.ssh/


-- 第四部分: 配置文件配置(sshd_config)

vi /etc/ssh/sshd_config

注释掉  : Subsystem      sftp    /usr/libexec/openssh/sftp-server

查看是否有: Subsystem      sftp    internal-sftp   没有一定补上去

末尾新增:

Match User wf01
ChrootDirectory /data/sftp/wf01
ForceCommand    internal-sftp
AllowTcpForwarding no
X11Forwarding no


-- 第五部分: 重启sshd_config,测试.
重启ssh服务

service sshd restart

测试命令:

sftp wf01@IP  

sftp> get /usr/local/index.php  /home/fuyatao/
将从远程主机的  /usr/local/目录下将 index.php 下载到本地  /home/fuyatao/目录下

sftp> put /usr/local/Linuxgl.pdf /var/www/fuyatao/
把本地 /usr/local/目录下的 linuxgl.pdf文件上传至远程主机/var/www/fuyatao/ 目录下

===============================================================================
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章