我们正试图提供在Spring基于环境的SFTP适配器从本地文件传输到本地或远程server.But,我们没有配置为在远程位置的用户的任何密码。 如Apache公地VFS或Jsch所有的实现需要密码或私钥对做文件传输。 我们不能给用户现在配置密码,因为这将需要从中我们得到了用户infromation其他API多次更改。
你怎么建议我们解决它?
我们正试图提供在Spring基于环境的SFTP适配器从本地文件传输到本地或远程server.But,我们没有配置为在远程位置的用户的任何密码。 如Apache公地VFS或Jsch所有的实现需要密码或私钥对做文件传输。 我们不能给用户现在配置密码,因为这将需要从中我们得到了用户infromation其他API多次更改。
你怎么建议我们解决它?
您可以使用SFTP / SSH,而不需要的,自动化的目的,任何密码。 2种方式,你的选择。
1 - 做一个密钥对,其中密钥的密码为空。 使用ssh-凯基:
$的ssh - 凯基-f myInsecureKey
当它提示输入密钥(私有)密钥的密码(密码),只需回车。 然后乘坐公共密钥(myInsecureKey.pub),并将其txfer到服务器,到远程帐户的主目录中的.ssh目录。 必须命名为“authorized_keys的”,如果它已经存在,追加新的密钥(使用编辑器看到你在做什么)。 当心,虽然,你的密钥现在是完全赤裸的,所以你应该调整权限或东西来保护它。
2 - 使用“代理”与常规SSH密钥对。 这是涉及到了一点,但一旦你得到它去,这很酷,和伟大的交互使用。 在UNIX / Mac,命令的ssh-agent将运行在个人客户端机器上的保密密钥服务器。 据曲柄的是,你需要一些源shell命令。 像这样:
$的ssh-agent>的〜/ .ssh / .myAgentContactInfo
$源的〜/ .ssh / .myAgentContactInfo
每个外壳必须做的最后一步使用代理; 把它放在你的.profile所以新的shell窗口打开起来会好到哪里去。 我想,每个用户都需要自己的代理。
然后,你有什么秘密密钥加载它:$的ssh-添加mySecretKey这一步会要求你秒密钥密码,但在这之后,你是自由的密码。
这两种方法通过SSH和SFTP的工作,也许与SSH库工作(我从未尝试过它们)。
I don't understand how you could do SFTP without authenticate with a user login and a password. A user may have an empty password though.
With JSch you can use StrictHostKeyChecking
:
final int PORT = 22;
// Server belongs to the model
Server server = new Server("root", "password");
JSch client = new JSch();
Session session = client.getSession(server.getLogin(), server.getAddress(), PORT);
// This is the important line!
session.setConfig("StrictHostKeyChecking", "no");
session.setPassword(server.getPassword());