需求:java代码 须要将某个文件 传输到另一台机器上 java
方式1:在另一台机器上也部署一个java web或其它client来配合传输 linux
方式2:利用linux的scp命令直接传输 web
显然是第二种方式 方便的多 shell
但问题是 第二种是同过ssh的方式进行安全验证,经过验证也有两种方式 一种是 安装证书的方式,还有一种是输入密码的方式,安装总数很差控制也太过呆板 程序也没法掌控太依赖环境。 安全
咱们能够执行shell,可是scp命令没法把密码用户名一块儿带上执行,这里咱们就借助于 服务器
Ganymed SSH-2 for Java是用纯Java实现SSH-2协议的一个包。能够利用它直接在Java程序中链接SSH服务器。Ganymed SSH-2支持SSH对话(远程命令执行和shell访问),本地和远程端口转发,本地数据流转发,X11转发和SCP。这些都没有依赖任何JCE provider,并且全部这些都包含加密的功能。 ide
代码示例 加密
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是密码 spa