java sftp 免密,Ubunt配置Sftp-ssh免密码登录

之前都是用的Ftp,今天有两个客户要求用Sftp没用过,今天研究了一下,记录备忘

SFTP其实就是加密的FTP 可以通过ssh密匙 免密码连接

系统:Ubuntu 16.04

软件:openssh

安装openssh

sudo apt-get install openssh-server

为SFTP访问创建用户组,便于管理权限

sudo addgroup sftp-users

创建用户加入组,不允许登录系统

sudo adduser alice

sudo usermod -G sftp-users -s /bin/false alice

创建SSH用户组,并把管理员加入到该组(注意usermod中的-a参数的意思是不从其他用户组用移除)

sudo addgroup ssh-users

sudo usermod -a -G ssh-users root

准备“监狱”的根目录及共享目录。这里解释一下,“监狱”的根目录必须满足以下要求:所有者为root,其他任何用户都不能拥有写入权限。因此,为了让SFTP用户能够上传文件,还必须在“监狱”根目录下再创建一个普通用户能够写入的共享文件目录。为了便于管理员通过SFTP管理上传的文件,我把这个共享文件目录配置为:由admin所有,允许sftp-users读写。这样,管理员和SFTP用户组成员就都能读写这个目录了。

sudo mkdir /home/sftp_root

sudo mkdir /home/sftp_root/shared

sudo chown root:sftp-users /home/sftp_root/shared

sudo chmod 770 /home/sftp_root/shared

修改SSH配置文件

sudo vi/etc/ssh/sshd_config

文件底部添加

AllowGroups ssh-users sftp-users #只允许ssh-uers及sftp-users组的用户通过SSH访问系统

Match User sftp-ly #针对单个用户设置

ChrootDirectory /sftp/sftp_root_ly/ # 根目录

AllowTcpForwarding no

X11Forwarding no

ForceCommand internal-sftp

Match User sftp-siemens

ChrootDirectory /sftp/sftp_root_siemens/

AllowTcpForwarding no

X11Forwarding no

ForceCommand internal-sftp

# 针对组进行额外设置

Match Group sftp-users

.....

可以针对组或用户,额外增加一些设置:将“/home/sftp_root”设置为该组用户的系统根目录(因此它们将不能访问该目录之外的其他系统文件);禁止TCP Forwarding和X11 Forwarding;强制该组用户仅仅使用SFTP

到这sftp就算配置完成了

验证

linux

随便找一台linux主机

sftp root@172.16.1.100

如果提示输密码,连接成功可以上传文件 表示成功!

配置ssh免密登录

生成密匙

在服务器上执行以下命令生成密匙

ssh-keygen -t rsa

默认生成的路径是 /root/.ssh

id_rsa 是私钥 一般用于客户端

id_rsa.pub 是公钥 一般用于服务器端

服务器上注册公钥

在/root/.ssh 目录下

cat id_rsa.pub >> authorized_keys

将私钥放到客户端

linux

scp id_rsa root@172.16.1.11:/root/.ssh

也可以直接vim打开后复制私钥后在客户端.ssh文件夹下建立同名文件黏贴私钥

windows

直接通过复制黏贴获取私钥 id_rsa

免密连接SFTP

linux

sftp root@172.16.1.100

不用输密码能直接连接成功表示成功

Windows

打开WinSCP客户端-编辑站点-高级-验证-添加私钥

2556d77d6b70

image.png

2556d77d6b70

image.png

添加私钥文件根据提示 将openssh格式的私钥转换为putty格式

!!!不用输入密码,能连接成功!!成功啦!

服务器端提供多用户服务

如果要在SFTP服务器上建立多个用户 分别提供服务

只需要在 相应用户的 /home/用户/.ssh 下放置正确的公钥并注册

即可用相应的私钥 来连接

一个共享提供多个客户端连接

一个sftp用户共享提供多个客户端连接

只需要在相应用户的.ssh文件下的 authorized_keys 文件夹内添加多个公钥即可

cat id_rsa.pub >> authorized_keys 多来几次就行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值