为 Java 客户端设置 SFTP 服务器以仅允许使用公钥下载
Posted
技术标签:
【中文标题】为 Java 客户端设置 SFTP 服务器以仅允许使用公钥下载【英文标题】:Setting up SFTP Sever for Java client to allow downloads with public key only 【发布时间】:2016-04-10 08:34:35 【问题描述】:我想使用公钥和私钥加密设置安全 FTP 服务器。 Java 程序将从该服务器上载和下载文件。我是否需要两对密钥,一对用于上传,一对用于上传,一对用于下载?
我需要支持两个操作。
Java 客户端(私钥) ----------------- 上传文件 ----------- 服务器(公钥) 生成的密钥客户
Java 客户端(公钥)-------- 下载文件 --------- 服务器(私钥) 生成的密钥在服务器上
可以使用单对密钥来完成吗?
【问题讨论】:
为什么需要引入第二对? sftp i ftps 协议也解决了这个问题 【参考方案1】:首先,您可能指的是 SFTP,而不是安全 FTP (FTPS)。
您似乎误解了 FTPS 中的公钥身份验证的工作原理。
你不能只用公钥做任何事情。你也总是需要私钥。即使是下载。任何 SFTP 会话都是双向的。你总是需要向服务器发送一些东西(至少是 SFTP/SSH 请求),并且它们需要用私钥加密。
回答您的问题:是的,您需要两个密钥对。或者更确切地说,您需要两个 SFTP/SSH 帐户。
要使用仅用于下载的公钥,您将需要使用普通 FTP 并使用密钥对仅对文件进行加密/解密。但这不再是 SFTP。
【讨论】:
【参考方案2】:连接是双向的 - 您可以通过单一连接随意上传和下载。
话虽如此,一个连接中有两个密钥对:客户端的和服务器的。服务器将其公钥提供给客户端,以验证您正在与正确的服务器交谈。客户端公钥被添加到服务器上的授权密钥列表中。
【讨论】:
以上是关于为 Java 客户端设置 SFTP 服务器以仅允许使用公钥下载的主要内容,如果未能解决你的问题,请参考以下文章
为EC2 Amazon Linux实例设置SFTP Sublime Text 3
linux SFTP用户创建 不允许用户登录,并且连接只允许在制定的目录下进行操作