- 浏览: 266432 次
- 性别:
- 来自: 上海
-
文章分类
- 全部博客 (298)
- 工作感悟 (6)
- java基础 (23)
- 计算机硬件知识 (1)
- 计算机网络知识 (2)
- Struts (3)
- Srping (4)
- hibernate (0)
- ibatis (0)
- webservice (4)
- Thread (22)
- maven (5)
- ubuntu/linux/centos/redhat (46)
- SSO (1)
- ESB (0)
- 工作流 (0)
- oracle (15)
- 云计算 (1)
- hadoop (1)
- nosql (0)
- mysql (3)
- sqlserver (0)
- jquery (0)
- 分布式 (3)
- 集群 (0)
- 设计模式 (2)
- EJB (0)
- map (0)
- cache (5)
- Niginx+varnish+squid+Ats (14)
- Apache (0)
- 工作/职业规划 (0)
- Scala & Groovy (1)
- English (4)
- 数据结构/算法 (6)
- 开发工具 (5)
- 测试 (2)
- Exception (0)
- 定时器 (3)
- j2ee (2)
- 部署 (1)
- Openssl (1)
- 操作系统 (3)
- kvm (13)
- libvirt (5)
- PostgreSql (5)
- 虚拟化 (3)
- 概念理解 (1)
- virt-manager (1)
- RESTful (3)
- 其它 (4)
- ssh2 (14)
- windows (1)
- 房产 (2)
- svn (1)
- 手机 (1)
- ant (1)
- flume (2)
- sqoop (1)
- fastdfs (5)
- log4j (1)
- SPDY (1)
- mongodb (2)
- MQ (2)
- Mina (1)
- dubbo (4)
- PMP (1)
- Webshpere (2)
- jvm (1)
- Btrace (1)
- zookeeper (7)
- UML (1)
- spring cloud (6)
- spring boot (5)
- storm (0)
- 软件管理 (1)
- elasticsearch (1)
- 协议 (2)
- docker (1)
- 性能 (2)
- 安全 (1)
- 代码规范 (1)
- mqtt (1)
- lombok (1)
- 车联网 (1)
- kafka (1)
最新评论
ssh2的两种java实现
- 博客分类:
- ssh2
SSH2的两种java实现,jcraft和Ganymed,终于把困扰我多日的问题解决了,贴上来看看 [点击图片可在新窗口打开]
(看了源码,Ganymed好像就是对craft做了封装.)
/**
* craft method
*/
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.UserInfo;
public class SSHTest {
public static final UserInfo defaultUserInfo = new UserInfo() {
public String getPassphrase() {
return null;
}
public String getPassword() {
return null;
}
public boolean promptPassword(String arg0) {
return false;
}
public boolean promptPassphrase(String arg0) {
return false;
}
public boolean promptYesNo(String arg0) {
return true;
}
public void showMessage(String arg0) {
}
};
public static void main(String[] args) throws Exception {
String hostname = "192.168.0.0";
String username = "root";
String password = "pass";
String remoteFile = "/home/sun";
String localFile = "C:\\001.txt";
JSch jsch = new JSch();
Session session = jsch.getSession(username, hostname, 22);
session.setPassword(password);
session.setUserInfo(defaultUserInfo);
session.connect();
Channel channel = session.openChannel("sftp");
channel.connect();
ChannelSftp c = (ChannelSftp) channel;
c.put(localFile, remoteFile);
session.disconnect();
}
}
/**
* Ganymed method
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.Session;
import ch.ethz.ssh2.StreamGobbler;
public class Basic
{
public static void main(String[] args)
{
String hostname = "192.168.0.0";
String username = "root";
String password = "pass";
try
{
Connection conn = new Connection(hostname);
conn.connect();
boolean isAuthenticated = conn.authenticateWithPassword(username, password);
if (isAuthenticated == false)
throw new IOException("Authentication failed.");
Session sess = conn.openSession();
sess.execCommand("cd /home/sun && mkdir test");
InputStream stdout = new StreamGobbler(sess.getStdout());
BufferedReader br = new BufferedReader(new InputStreamReader(stdout));
while (true)
{
String line = br.readLine();
if (line == null)
break;
System.out.println(line);
}
System.out.println("ExitCode: " + sess.getExitStatus());
sess.close();
conn.close();
}
catch (IOException e)
{
e.printStackTrace(System.err);
System.exit(2);
}
}
}
(看了源码,Ganymed好像就是对craft做了封装.)
/**
* craft method
*/
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.UserInfo;
public class SSHTest {
public static final UserInfo defaultUserInfo = new UserInfo() {
public String getPassphrase() {
return null;
}
public String getPassword() {
return null;
}
public boolean promptPassword(String arg0) {
return false;
}
public boolean promptPassphrase(String arg0) {
return false;
}
public boolean promptYesNo(String arg0) {
return true;
}
public void showMessage(String arg0) {
}
};
public static void main(String[] args) throws Exception {
String hostname = "192.168.0.0";
String username = "root";
String password = "pass";
String remoteFile = "/home/sun";
String localFile = "C:\\001.txt";
JSch jsch = new JSch();
Session session = jsch.getSession(username, hostname, 22);
session.setPassword(password);
session.setUserInfo(defaultUserInfo);
session.connect();
Channel channel = session.openChannel("sftp");
channel.connect();
ChannelSftp c = (ChannelSftp) channel;
c.put(localFile, remoteFile);
session.disconnect();
}
}
/**
* Ganymed method
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.Session;
import ch.ethz.ssh2.StreamGobbler;
public class Basic
{
public static void main(String[] args)
{
String hostname = "192.168.0.0";
String username = "root";
String password = "pass";
try
{
Connection conn = new Connection(hostname);
conn.connect();
boolean isAuthenticated = conn.authenticateWithPassword(username, password);
if (isAuthenticated == false)
throw new IOException("Authentication failed.");
Session sess = conn.openSession();
sess.execCommand("cd /home/sun && mkdir test");
InputStream stdout = new StreamGobbler(sess.getStdout());
BufferedReader br = new BufferedReader(new InputStreamReader(stdout));
while (true)
{
String line = br.readLine();
if (line == null)
break;
System.out.println(line);
}
System.out.println("ExitCode: " + sess.getExitStatus());
sess.close();
conn.close();
}
catch (IOException e)
{
e.printStackTrace(System.err);
System.exit(2);
}
}
}
发表评论
-
通过expect,读取配置文件,批量ssh-add
2013-10-29 09:16 10971.配置文件(多台宿主机) id_dsa.txt id_dsa ... -
批量部署ssh认证
2013-10-28 16:10 899批量部署ssh认证 我想 ... -
ssky-keygen + ssh-copy-id 无密码登陆远程LINUX主机
2013-10-28 15:49 345使用下例中ssky-keygen和ssh-copy-id,仅需 ... -
ubuntu下添加各种类别的启动项
2013-10-25 10:55 581原文地址:http://www.cnblo ... -
2010-08-30 19:00 linux下添加自动启动项
2013-10-25 10:37 607首先写好脚本,如 mysql,把它放到 /etc/init.d ... -
ubuntu 添加开机自动运行脚本
2013-10-25 10:26 6171.编写shell脚本 gedit /etc/init.d/m ... -
Linux下利用expect实现自动交互
2013-10-25 10:01 562首先要安装tcl,expect 下面是Linux下s ... -
最新SSH自动登录方案(RSA)
2013-10-25 08:51 864一. 前言 直接使用ssh连接到服务器时,需要手动输入 ... -
ssh密钥管理和认证代理
2013-10-24 15:46 874ssh密钥管理和认证代理 ... -
CentOS通过Ssh连接缓慢的问题
2013-10-24 15:31 536之前安装系统使用了CentOS,发现安装之后ssh速度 ... -
解决 Agent admitted failure to sign using the key 问题 with ssh
2013-10-23 10:36 640配置ssh 之前要在本机上装上ssh,可以通过sudo ap ... -
Java SSH远程执行Linux Shell脚本实现(转)
2013-10-11 15:25 1083此程序需要ganymed-ssh2-build210.jar包 ... -
ubuntu 默认防火墙安装、启用、查看状态
2013-10-10 12:05 678ubuntu 9.10默认的是UFW防火墙,已经支持界面操作了 ...
相关推荐
4. **通道管理**:SSH-2提供了两种类型的通道:会话通道和转发通道。会话通道用于执行远程命令,而转发通道则可以用于端口转发,将本地端口的连接转发到远程服务器。 5. **执行远程命令**:使用Ganymed SSH-2库,...
### SSH协议连接远程服务器的Java实现 #### 一、引言 在计算机网络领域中,SSH(Secure Shell)协议是一种广泛使用的网络安全协议,用于在不安全的网络上提供安全的远程登录服务。本文将深入探讨如何使用Java语言来...
JSch是Java SSH库的一个流行选择,它提供了一个完整的SSH2实现,包括用户认证、端口转发、X11转发、文件传输、会话通道等。JSch库的源码分析可以帮助我们理解SSH协议的工作原理,以及如何在Java中实现这些功能。 VT...
### Java高级工程师面试题SSH2知识点解析 #### 一、Hibernate基本原理与使用场景 **为何选择Hibernate:** 1. **资源管理简化:** Hibernate能够有效地管理数据库连接资源,相较于直接使用JDBC的方式,它提供了...
JSch是Java的一个开源实现,提供了全面的SSH2支持,包括端口转发、X11转发、文件传输、公共密钥认证和密码认证等。开发者可以通过JSch创建SSH连接,执行远程命令,甚至设置隧道来安全地传输数据。JSch库的使用需要对...
SSH2(Secure Shell 2)是一种网络协议,用于在不安全的网络环境中提供安全的远程登录和其他服务。本文将详细讲解SSH2的搭建过程,包括SSH2配置步骤、JDK的安装与配置、MyEclipse集成环境的设置以及Tomcat服务器的...
在IT行业中,s2sh和ssh2是两种常见的技术,它们在不同的领域发挥着重要的作用。s2sh通常指的是Struts2、Spring和Hibernate这三个开源框架的集成,而ssh2则通常指的是Secure Shell(SSH)的第二版,用于提供安全的...
它有两种主要版本:SSH1和SSH2。虽然SSH1曾广泛使用,但因为其存在一些安全漏洞,现在大多数系统都转向了SSH2。本文将深入探讨SSH1和SSH2的配置与相关说明。 首先,SSH1的配置主要包括以下几个方面: 1. **服务器...
总结一下,`ganymed-ssh2-build`是用于Java的SSH协议实现库,核心类包括`ch.ethz.ssh2.Connection`和`ch.ethz.ssh2.SCPClient`。`Connection`类负责建立和管理SSH连接,而`SCPClient`类则提供了SCP文件传输服务。...
在Java编程环境中,SSH(Secure Shell)和FTP(File Transfer Protocol)是两种常见的远程文件传输技术。SSH主要用于安全地远程登录服务器,而FTP则是一种基本的文件传输协议,用于在客户端和服务器之间交换文件。本...
SSH2两表关联是Java Web开发中的一种常见技术,它涉及到Struts2、Spring和Hibernate这三个框架的集成应用。在Oracle数据库环境下,这种关联通常用于处理多对一、一对多或多对多的关系,以便在应用程序中实现数据的...
SSH(Struts+Spring+Hibernate)和SSH2(Spring Security+Spring+Hibernate)是两种常见的Java Web开发框架,主要用于构建企业级应用,如人力资源管理系统。这两个框架的核心目标都是简化开发流程,提高代码的可维护...
Java SSM和SSH框架是两种常见的企业级Java开发框架,它们在现代Web应用程序开发中扮演着重要的角色。SSM框架组合了Spring、Struts2和MyBatis,而SSH框架则由Spring、Struts2和Hibernate组成。这两个框架都是为了简化...
SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的MVC架构。本项目涉及的核心知识点是使用Struts2处理表单提交,Hibernate进行数据持久化,以及图片上传的相关技术。下面将详细介绍这些内容...
SSH2 jar包是一种常用于建立安全远程连接的Java库,主要应用于Secure Shell (SSH) 协议版本2。SSH协议提供了在网络中加密通信的能力,确保数据传输的安全性,避免了密码和其他敏感信息在传输过程中被窃取。SSH2 jar...
SSH(Secure Shell)是一种网络协议,用于在不安全的网络上提供安全的远程登录和其他服务。在本场景中,"ssh写的用户登录权限实现"指的是使用SSH协议来控制用户登录的权限,确保在同一时间只有一个用户能够使用特定...
在实现过程中,JSch是一个流行的Java库,它提供了SSH2协议的实现。使用JSch,你可以这样建立SSH连接并执行命令: ```java import com.jcraft.jsch.*; public class SSHExecutor { public void executeCommand...
Hibernate提供两种方式实现分页:Criteria API和HQL。Criteria API中,你可以使用`setFirstResult()`和`setMaxResults()`方法来指定查询的起始位置和最大数量。HQL中,你可以使用`LIMIT`和`OFFSET`关键字。 ```...
SSH1和SSH2是两种流行的Java Web开发框架的简称,分别代表Struts1、Spring和Hibernate的第一代和第二代版本。这些框架的整合是构建基于Java的企业级应用程序时常用的技术组合,尤其在处理MVC(Model-View-Controller...
SSH2(Struts2、Spring、Hibernate)是一个经典的Java企业级开发框架组合,常用于构建高效、可维护的Web应用程序。SSH2精简JAR包含了这三个框架的核心组件,便于开发者在项目中快速集成和使用。下面将分别介绍SSH2...