Thu*_*shi 7 scp java file-copy
我正在寻找将文件复制到远程 linux 系统的 java 代码。我Runtime.getRuntime().exec()
通过传递scp
命令尝试了函数,但是每次运行程序时它都要求输入远程系统密码。我想避免这种情况。
我查看了Jsch
库——使用它我可以登录到远程系统——但我无法将文件复制到远程系统。登录后,我可以scp
对我的主机执行操作,但它再次需要主机系统用户名和密码。但是,我只有远程系统的信息。
您可以使用此代码片段将文件复制到另一linux
台机器。
JSch jsch = new JSch();
Session session = null;
session = jsch.getSession("username","hostname",22);
session.setPassword("password");
session.setConfig("StrictHostKeyChecking", "no");
session.connect();
ChannelSftp channel = null;
channel = (ChannelSftp)session.openChannel("sftp");
channel.connect();
File localFile = new File("localfilepath");
//If you want you can change the directory using the following line.
channel.cd(RemoteDirectoryPath)
channel.put(new FileInputStream(localFile),localFile.getName());
channel.disconnect();
session.disconnect();
Run Code Online (Sandbox Code Playgroud)
有了这个,我已经将我的公钥添加到远程系统,使用生成ssh-keygen
。所以每次运行程序时它都不会要求输入密码。
将文件从一台主机复制到另一台主机需要远程主机上的守护程序,实现一些应用程序级文件传输协议。无论您要使用哪种语言与远程守护进程对话,这都是一个要求。
Linux 系统的选项有:
所有这些看起来工作量很大,事实上也确实如此,因为没有一个广泛采用的标准化协议可以在大多数系统上实现和配置开箱即用。
归档时间: |
|
查看次数: |
48652 次 |
最近记录: |