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