linux创建sftp账号及访问权限,并配置免密登录

  1. 创建用户组sftp
    # groupadd sftp

     

  2. 创建sftp登录账户user,将user用户设置为/bin/false,这样就不会有登陆shell的权限,只能使用sftp连接
    # useradd -s /bin/false -G sftp user

     

  3. 为sftp配置密码
    # passwd user

     

  4. 编辑/etc/ssh/sshd_config配置文件
    # vi /etc/ssh/sshd_config
    
    找到Subsystem这个配置项,修改为:
    Subsystem sftp internal-sftp
    
    文件尾部追加配置,让属于用户组sftp的用户只能访问自己的文件夹
    Match Group sftp
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp
    ChrootDirectory /data/sftp/%u  #说明:需在服务器/data/sftp/路径创建user文件夹,该文件夹就是user用户登录sftp时访问的文件夹

     

  5. 创建user的sftp访问文件夹,并修改文件夹属性
    #mkdir /data/sftp/crmsftp
    #chown root /data/sftp/crmsftp
    #chgrp sftp /data/sftp/crmsftp

     

  6. 重启sshd服务
    # service sshd restart 

    done

 

sftp免密登录

  1. 生成公私钥对
    # ssh-keygen
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa): <== 密钥对默认路径,直接Enter即可
    Created directory '/root/.ssh'.
    Enter passphrase (empty for no passphrase): <== 输入私钥密码,若直接按回车则不对私钥加密
    Enter same passphrase again: <== 再次输入私钥密码
    Your identification has been saved in /root/.ssh/id_rsa.<== 生成好的私钥地址
    Your public key has been saved in /root/.ssh/id_rsa.pub.<== 生成好的公钥地址
    The key fingerprint is:
    3d:95:51:3a:a1:f3:f5:b1:eb:64:87:f4:fe:11:48:5e root@win-pgsql
    The key's randomart image is:
    +--[ RSA 2048]----+

     

  2. 到生成公钥的路径安装公钥到authorized_keys文件中,以便后续配置
    # cd /root/.ssh                      <== 进入密钥对所在目录
    # cat id_rsa.pub >> authorized_keys  <== 安装公钥文件至系统

     

  3. 公钥和目录设置权限
    # chmod 600 authorized_keys          <== 设置600权限
    # chmod 700 ~/.ssh                   <== 将目录设置700权限

     

  4. 编辑/etc/ssh/sshd_config文件
    PermitRootLogin yes                           #允许root账户使用ssh登录
    
    RSAAuthentication yes                         #允许密钥登录
    PubkeyAuthentication yes                      #采用公钥验证
    AuthorizedKeysFile .ssh/authorized_keys       #公钥保存地址
    
    PasswordAuthentication no                     #禁止使用密码来登录SSH和SFTP(选填)

     

  5. 重启SSH服务
    # service sshd restart

     

  6. done,此后就可以用私钥文件代替密码连接服务器了。

 

问题:

  1. 如果在链接服务器的时候出现下面的提示:
    Write failed: Broken pipe 
    Couldn't read packet: Connection reset by peer 

    设定的目录必须是root用户所有,要将sftp用户根目录的所有人是root,权限是750 或者755:
    设置user目录为root权限:
    # chown root:user /data/sftp/crmsftp
    # chmod 750 /data/sftp/crmsftp

     

 

你可能感兴趣的:(运维,Linux,sftp)