需求:java代码 需要将某个文件 传输到另外一台机器上
方式1:在另外一台机器上也部署一个java web或其它client来配合传输
方式2:利用linux的scp命令直接传输
显然是第二种方式 方便的多
但问题是 第二种是同过ssh的方式进行安全验证,通过验证也有两种方式 一种是 安装证书的方式,还有一种是输入密码的方式,安装总数不好控制也太过呆板 程序也无法掌控太依赖环境。
我们可以执行shell,但是scp命令无法把密码用户名一起带上执行,这里我们就借助于
Ganymed SSH-2 for Java是用纯Java实现SSH-2协议的一个包。可以利用它直接在Java程序中连接SSH服务器。Ganymed SSH-2支持SSH对话(远程命令执行和shell访问),本地和远程端口转发,本地数据流转发,X11转发和SCP。这些都没有依赖任何JCE provider,而且所有这些都包含加密的功能。
代码示例
Connection conn = new Connection(remote); conn.connect(); boolean isAuthenticated = conn.authenticateWithPassword(user,pw); if (isAuthenticated == false) {throw new IOException("Authentication failed.");} SCPClient client = new SCPClient(conn); client.put(theFile, remoteDir, "0644"); conn.close();
remote 是 IP,user是用户名,pw是密码