如何实现Linux SFTP免密登录?

在Linux系统中,SFTP(Secure File Transfer Protocol)是一种基于SSH(Secure Shell)的文件传输协议,它提供了数据加密、完整性验证和服务器认证等安全特性,实现SFTP免密登录通常涉及使用公钥认证,以下是详细的步骤说明:

如何实现Linux SFTP免密登录?插图1

配置SFTP服务

1、创建用户组

   groupadd sftp

2、创建用户并添加到用户组

   useradd -g sftp -s /sbin/nologin testsftp

3、指定SFTP的家目录

   mkdir -p /opt/sftp

4、配置SSH服务

备份原有的sshd_config配置文件:

     cp -rp /etc/ssh/sshd_config /etc/ssh/sshd_config-bak

编辑sshd_config文件:

     vim +/Subsystem /etc/ssh/sshd_config

注释掉原有的Subsystem行,并追加以下配置:

如何实现Linux SFTP免密登录?插图3

     Subsystem sftp internal-sftp
     Match Group sftp
     ChrootDirectory /opt/sftp
     ForceCommand internal-sftp
     AllowTcpForwarding no
     X11Forwarding no

打开密钥登录功能:

     RSAAuthentication yes
     PubkeyAuthentication yes
     PasswordAuthentication no # 根据需求选择是否禁用密码登录

5、设定Chroot目录权限

   chown root:sftp /opt/sftp
   chmod 755 /opt/sftp
   mkdir /opt/sftp/upload
   chown sftp:sftp /opt/sftp/upload
   chmod 755 /opt/sftp/upload

6、重启SSH服务

   systemctl restart sshd

设置免密登录

1、生成SSH密钥对(在需要连接SFTP的服务器上执行):

   ssh-keygen -t rsa

按提示操作,通常直接回车即可,这将在~/.ssh/目录下生成id_rsa(私钥)和id_rsa.pub(公钥)两个文件。

2、将公钥复制到目标服务器

   ssh-copy-id -i ~/.ssh/id_rsa.pub testsftp@sftp服务器IP

或者手动复制公钥内容到目标服务器的authorized_keys文件中:

如何实现Linux SFTP免密登录?插图5

   ssh testsftp@sftp服务器IP 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys' < ~/.ssh/id_rsa.pub

3、确保目标服务器上的authorized_keys文件权限正确

   chmod 600 ~/.ssh/authorized_keys
   chmod 700 ~/.ssh

完成以上步骤后,您应该能够通过SFTP免密登录到目标服务器,只需运行:

sftp testsftp@sftp服务器IP

即可直接登录,无需输入密码,如果遇到“Are you sure you want to continue connecting (yes/no)?”的提示,输入yes并回车即可。

到此,以上就是小编对于linux sftp 免密登录的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位朋友在评论区讨论,给我留言。

本文来源于互联网,如若侵权,请联系管理员删除,本文链接:https://www.9969.net/88985.html

小末小末
上一篇 2024年11月2日 19:59
下一篇 2024年11月2日 20:58