Ubunt配置Sftp-ssh免密码登录
之前都是用的Ftp,今天有两个客户要求用Sftp没用过,今天研究了一下,记录备忘
SFTP其实就是加密的FTP 可以通过ssh密匙 免密码连接
1 | 安装openssh |
准备“监狱”的根目录及共享目录。这里解释一下,“监狱”的根目录必须满足以下要求:所有者为root,其他任何用户都不能拥有写入权限。因此,为了让SFTP用户能够上传文件,还必须在“监狱”根目录下再创建一个普通用户能够写入的共享文件目录。为了便于管理员通过SFTP管理上传的文件,我把这个共享文件目录配置为:由admin所有,允许sftp-users读写。这样,管理员和SFTP用户组成员就都能读写这个目录了。
1 | sudo mkdir /home/sftp_root |
修改SSH配置文件
1 | sudo vi/etc/ssh/sshd_config |
只允许ssh-uers及sftp-users通过SSH访问系统;
可以针对用户或组,额外增加一些设置:将“/home/sftp_root”设置为该组用户的系统根目录(因此它们将不能访问该目录之外的其他系统文件);禁止TCP Forwarding和X11 Forwarding;强制该组用户仅仅使用SFTP
到这sftp就算配置完成了
验证
- linux
随便找一台linux主机如果提示输密码,连接成功可以上传文件 表示成功!1
sftp root@172.16.1.100
配置ssh免密登录
- 生成密匙
在服务器上执行一下命令生成密匙1
2
3ssh-keygen -t rsa
默认生成的路径是 /root/.ssh - id_rsa 是私钥 一般用于客户端
- id_rsa.pub 是公钥 一般用于服务器端
服务器上注册公钥
1 | 在/root/.ssh 目录下 |
将私钥放到客户端
- linux也可以直接vim打开后复制私钥后在客户端.ssh文件夹下建立同名文件黏贴私钥
1
scp id_rsa root@172.16.1.11:/root/.ssh
- windows
直接通过复制黏贴获取私钥 id_rsa
免密连接SFTP
linux
1
sftp root@172.16.1.100
不用输密码能直接连接成功表示成功
Windows
打开WinSCP客户端-编辑站点-高级-验证-添加私钥
[image:993226DC-0542-4C8F-90F4-03793171A0A6-500-0000112F79256455/816F6B62-A318-4ADF-B189-9809BE1B56ED.png]
[image:7B37C2E1-3884-411A-B350-7881B51EC6C1-500-0000113291CE8C69/F51BD6D3-01DE-475C-94EF-25B6BB7B62CA.png]
添加密匙文件根据提示 将openssh格式的密匙转换为putty格式
!!!不用输入密码,能连接成功!!成功啦!
服务器端提供多用户服务
如果要在SFTP服务器上建立多个用户 分别提供服务
只需要在 相应用户的 /home/用户/.ssh 下放置正确的公匙并注册
即可用相应的私钥 来连接
一个共享提供多个客户端连接
一个sftp用户共享提供多个客户端连接
只需要在相应用户的.ssh文件下的 authorized_keys 文件夹内添加多个公钥即可1
cat id_rsa.pub >> authorized_keys 多来几次就行