java程序通过密钥方式使用JSch API访问SSH(转帖)
2011-05-09 20:44 297人阅读 评论(0) 收藏 举报
java程序通过密钥方式使用JSch API访问SSH
2010-05-20 14:51
上面已经验证了通过密钥方式访问SSH Server是可行的,并且给自己搭建了一个测试环境,下面就开始我最终的目的:java程序通过密钥访问。
1、工程引入jsch-0.1.42.jar,可以到http://www.jcraft.com/jsch/官方下载。
2、在官方的example中,有一个demo,类UserAuthPubKey,是使用密钥访问的,参考了下,我对其进行了修改,改为自动连接并使用SFTP协议显示当前路径,代码如下:
package Test.sftp;
import com.jcraft.jsch.*;
public class TestKeyAcc {
public static void main(String[] arg) {
String keyFile = "./id_rsa";
String user = "username";
String host = "127.0.0.1";
String passphrase = "111111";
int port = 22;
try {
JSch jsch = new JSch();
jsch.addIdentity(keyFile);
Session session = jsch.getSession(user, host, port);
// username and passphrase will be given via UserInfo interface.
UserInfo ui = new MyUserInfo(passphrase);
session.setUserInfo(ui);
session.connect();
Channel channel = session.openChannel("sftp");
channel.connect();
ChannelSftp sftp = (ChannelSftp) channel;
System.out.println(sftp.pwd());
} catch (Exception e) {
e.printStackTrace();
System.out.println(e);
}
}
public static class MyUserInfo implements UserInfo {
private String passphrase = null;
public MyUserInfo(String passphrase) {
this.passphrase = passphrase;
}
public String getPassphrase() {
return passphrase;
}
public String getPassword() {
return null;
}
public boolean promptPassphrase(String s) {
return true;
}
public boolean promptPassword(String s) {
return true;
}
public boolean promptYesNo(String s) {
return true;
}
public void showMessage(String s) {
System.out.println(s);
}
}
}
运行后结果显示:
****USAGE WARNING****
This is a private computer system. This computer system, including all
related equipment, networks, and network devices (specifically including
Internet access) are provided only for authorized use. This computer system
may be monitored for all lawful purposes, including to ensure that its use
is authorized, for management of the system, to facilitate protection against
unauthorized access, and to verify security procedures, survivability, and
operational security. Monitoring includes active attacks by authorized entities
to test or verify the security of this system. During monitoring, information
may be examined, recorded, copied and used for authorized purposes. All
information, including personal information, placed or sent over this system
may be monitored.
Use of this computer system, authorized or unauthorized, constitutes consent
to monitoring of this system. Unauthorized use may subject you to criminal
prosecution. Evidence of unauthorized use collected during monitoring may be
used for administrative, criminal, or other adverse action. Use of this system
constitutes consent to monitoring for these purposes.
/cygdrive/d/opensshhome/username
ok,good,问题解决了,如果不是密钥方式,与普通FTP一样的用户名及密码访问又是怎样的呢,那就比较简单了
去掉
jsch.addIdentity(keyFile);
及
UserInfo ui = new MyUserInfo(passphrase);
session.setUserInfo(ui);
在Session sshSession = jsch.getSession(userStr, serverIp, port);下增加
sshSession.setPassword(passwordStr);
如果在生成私钥时没有使用密码,那又是怎样的呢?其实很简单,如果不需要密码访问,你提供了密码也是通过的( new MyUserInfo(passphrase);中密码不null或空),大概过程是,先看是否需要密码,如果不需要,那么就直接过去,所以即便设置了密码也没问题。
在使用该API进行密钥及非密钥访问SFTP时,感觉不是很惬意,试验了许久才通过。
以上文字但愿对后来者有所帮助
分享到:
相关推荐
Jsch(Java Secure Channel)是一个纯Java语言编写的库,它能够实现SSH(Secure Shell)功能。SSH是一种安全协议,它主要用于在不同的系统或服务器间建立安全的连接,并在传输数据的过程中对数据进行加密。在Java中...
在本文中,我们将深入探讨如何使用JSch-0.1.54.jar这个库来实现在Java程序中进行SSH连接。 首先,JSch库是Java SSH2的一个实现,由Simon Tungsoe创建并维护。JSch库提供了一个API,使得开发者可以方便地在Java应用...
JSch(Java Secure Channel)是一个用Java实现的SSH2库,它允许Java应用程序连接到支持SSH协议的服务器,进行安全的数据传输。JSch库提供了广泛的API,涵盖了SSH协议的主要功能,包括连接建立、身份验证、会话管理、...
JSCH(Java Simple Connection)是一个Java库,用于实现SSH(Secure Shell)、SFTP(Secure File Transfer Protocol)和Telnet协议。这些协议在IT领域中扮演着重要的角色,尤其是在远程访问、文件传输和网络安全方面...
JSCH(Java Simple SSH)是一个用Java编写的库,它实现了SSH2协议,允许Java应用程序进行加密的通信,如执行远程命令、文件传输等。然而,随着网络安全标准的不断提升,SSH的加密算法也在不断更新,这可能导致旧版本...
基于jsch包实现远程服务器的sftp访问,并可远程发送命令执行,可以配合https://download.csdn.net/download/u011230766/10710755,实现密钥登录,类KeyGen用于生成非对称密钥
JSch 是SSH2的一个纯Java实现。它允许你连接到一个sshd 服务器,使用端口转发,X11转发,文件传输等等。你可以将它的功能集成到你自己的 程序中。 从之前发布其他chm文件下载用户的反映看,有不少朋友反映下载后...
标签:jcraft、jsch、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
JSCH是一个纯Java实现的SSH2库,它提供了连接到支持SSH协议的服务器的能力,如Linux或Unix系统。下面我们将深入探讨如何使用JSCH进行远程服务器连接,并通过DEMO来学习这一过程。 首先,你需要在项目中引入JSCH库。...
在IT领域,JavaScript Secure Channel (JSCH) 是一个非常实用的Java库,它允许开发者在Java应用程序中实现Secure Shell (SSH) 协议。本文将深入探讨如何使用JSCH库来执行远程命令,并且处理输入密码的情况。我们将...
JSCH(Java Secure Channel)是SSH的一个开源实现,它为Java开发者提供了一个API,可以方便地创建SSH连接,执行命令,进行文件传输等操作。这个API允许开发者在Java应用中集成SSH功能,例如用于自动化运维、远程脚本...
JSch库提供了丰富的API,使得开发者能够方便地在Java程序中集成SSH功能。以下是一些主要的JSch特性: 1. **连接建立**:JSch允许创建到远程主机的SSH连接,包括设置主机名、端口号、用户名和密码,或者使用密钥对...
JSch是Java Secure Channel的缩写。JSch是一个SSH2的纯Java实现。它允许你连接到一个SSH服务器,并且可以使用端口转发,X11转发,文件传输等,当然你也可以集成它的功能到你自己的应用程序。
Java SSH (Secure Shell) 和 Telnet 访问是两种远程控制和管理服务器的常用方法。SSH 提供了安全的数据传输,而 Telnet 虽然简单但安全性较低。以下是对这两个概念及其在Java中实现的详细解释。 1. **SSH(Secure ...
标签:jcraft、jsch、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用...
JSch 允许您连接到一个 SSH 服务器,并且可以使用端口转发、X11 转发、文件传输等,当然您也可以集成它的功能到您自己的应用程序。 SFTP 是 Secure File Transfer Protocol 的缩写,安全文件传送协议。SFTP 可以为...
jsch通过java代码ssh登录主机远程执行命令并返回结果。注意,这个是源代码,请自行编译后在使用。当然,也可以根据自己的需要更改源代码。
`jsch-0.1.5.jar`是JSch的一个版本,将其添加到项目的类路径中,以便可以使用其提供的API。 2. **创建Session**:通过`JSch`实例创建一个`Session`对象,这个对象包含了与远程主机的连接信息,如主机名、端口、...
JSCH(Java Secure Channel)是一个开源的Java库,它允许开发者在Java应用程序中实现SSH(Secure Shell)协议,从而支持SFTP(Secure File Transfer Protocol)。JSCH库提供了对SSH2协议的强大支持,使得用户可以...
以下是一个简单的Java示例,展示如何使用JSch库通过SFTP连接到远程服务器并下载文件: ```java import com.jcraft.jsch.*; public class SftpDownloader { public static void main(String[] args) { String ...