SSH整合xml配置文件详解
SSH框架整合,将struts.xml配置文件里的action的class写成bean的id将hibernate里的数据库相关的配置写在spring的配置文件里。
例如(注意红色字体):
这是struts.xml配置文件里配置action:
<action name="login"class="RegisterAction">
<result name="sucess">/sucess.jsp</result>
<result name="error">/error.jsp</result>
</action>
spring的配置文件:applicationContext.xml:
这是在spring配置文件里配置bean:
<bean id="RegisterAction"class="com.action.RegisterAction">
<property name="user"ref="User"></property>
</bean>
下面这段是将hibernate的配置文件里的相关内容配置在spring的配置文件里:
<bean id="dataSource"class="mons.dbcp.BasicDataSource"> <property name="driverClassName"value="com.mysql.jdbc.Driver">
</property>
<property name="url"
value="jdbc:mysql://127.0.0.1:3306/mysql?useUnicode=true&characterEncod ing=utf8">
</property>
<property name="username"value="root"></property>
<property name="password"value="root"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<property name="mappingLocations">
<
</list>
</property>
</bean>
--------=====
下面是类的映射文件:
<class name="User"table="userinsert">====name是类的名字,table是数据库中表名,类名和表名一致也可以不指定。
<id name="username"type="ng.String">=====id是主键,name
<column name="username"length="30"/> ====这是表中对应字段的名称,长度
<generator class="assigned"/>
</id>
<property name="pass"type="ng.String"></property>===对应表中字段名
<column name="pass" length="20"/>如果类属性名和数据库的字段名一致可以不用指定
</class>。
sshd_config配置文件详解
sshd_config配置⽂件详解OpenSSH(即常说的ssh)的常⽤配置⽂件有两个/etc/ssh/ssh_config和sshd_config。
,其中ssh_config为客户端配置⽂件,设置与客户端相关的应⽤可通过此⽂件实现;sshd_config为服务器配置⽂件,设置与服务器相关的应⽤可通过此⽂件实现。
⼀般来说我们常⽤的都是sshd_config配置⽂件,在sshd_config配置⽂件中,以“# ”(#加空格)开头的是注释信息,以“#”开头的是默认配置信息。
1)Port 22 设置sshd监听端⼝号,默认情况下为22,可以设置多个监听端⼝号,即重复使⽤Prot这个设置项。
修改后记得重启sshd,以及在防⽕墙中添加端⼝。
出于安全考虑,端⼝指定为⼩于等于65535,并且⾮22或22变种的值2)ListenAddress 0.0.0.0ListenAddress ::设置sshd监听(绑定)的IP地址,0.0.0.0表⽰监听所有IPv4的地址。
出于安全考虑,设置为指定IP地址,⽽⾮所有地址。
::是IPv6的地址不需要改。
3)Protocol 2 有部分sshd_config配置⽂件会有此选项。
这个选项设置的是ssh协议版本,可以是1也可以是2。
出于安全考虑,设置为最新协议版本。
4)HostKey /etc/ssh/ssh_host_rsa_keyHostKey /etc/ssh/ssh_host_dsa_keyHostKey /etc/ssh/ssh_host_ecdsa_keyHostKey /etc/ssh/ssh_host_ed25519_key Hostkey设置包含私⼈密钥的⽂件5)SyslogFacility AUTHSyslogFacility AUTHPRIV 当有⼈使⽤ssh登录系统时,ssh会记录信息,记录类型为AUTHPRIV,sshd服务⽇志存放在/var/log/secure6)LogLevel INFO 设置记录sshd⽇志信息的级别7)LoginGraceTime 2m 设置指定时间内没有成功登录,将会断开连接,若⽆单位则默认时间为秒。
使用SSH框架实现用户登录验证
今天,写一个非常简单的通过struts+hibernate+spring的集成来实现用户登录验证的例子,让大家了解一下三者是如何是整合的。
我们可以通过myeclipse的向导,生成相应的环境搭建,如果使用向导添加SSH项目支持的话,大家记住我们我们添加的顺序为spring,hibernate,struts,我在这儿就不讲如何通过向导添加了,我会直接把源码给大家,大家按源码编写即可。
第一:applicationContext.xml文件的配置<?xml version="1.0" encoding="UTF-8"?><beansxmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:aop="/schema/aop"xmlns:tx="/schema/tx"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans-2.0.xsd/schema/aop/schema/aop/spring-aop-2.0.xsd/schema/tx/schema/tx/spring-tx-2.0.xsd"><!-- 定义数据源 --><bean id="dataSource"class="mons.dbcp.BasicDataSource"><property name="driverClassName"value="com.mysql.jdbc.Driver"></property><property name="url"value="jdbc:mysql://192.168.1.90:3306/TestDB"></property><property name="username" value="root"></property><property name="password" value="hanxue123"></property></bean><!-- 定义使用hibernate --><bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><property name="dataSource"><ref bean="dataSource" /></property><property name="hibernateProperties"><props><prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop><prop key="hibernate.show_sql">true</prop></props></property><!-- 定义映射的文件 --><property name="mappingResources"><value>User.hbm.xml</value></property></bean><!-- 配置事务管理器 --><bean id="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory"><ref bean="sessionFactory"/></property></bean><!-- 配置事务的传播特性 --><tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><tx:method name="find*" propagation="REQUIRED"/><tx:method name="save*" propagation="REQUIRED"/><tx:method name="del*" propagation="REQUIRED"/><tx:method name="modify*" propagation="REQUIRED"/><tx:method name="update*" propagation="REQUIRED"/><tx:method name="*" propagation="REQUIRED"/></tx:attributes></tx:advice><!-- 配置哪些类的哪些方法参与事务 --><aop:config><aop:pointcut id="allManagerMethod" expression="execution(*com.han.*.*.*(..))"/><aop:advisor pointcut-ref="allManagerMethod" advice-ref="txAdvice"/></aop:config><!-- 将业务逻辑对象通过spring注入到Action中,从而避免了在Action类中的直接代码查询 --><bean id="loginService" class="com.han.service.LoginServiceImpl"><property name="sessionFactory" ref="sessionFactory"></property></bean><bean name="/loginA" class="com.han.action.LoginA" scope="prototype"><property name="loginService" ref="loginService"></property></bean></beans>第二:user.hbm.xml文件的配置,定义与数据库的映射<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN""/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.han.forms"><class name="LoginForm" table="t_user" lazy="false"><comment>Users may bid for or sell auction items.</comment><id name="id"><generator class="native"/></id><property name="username"></property><property name="password"></property></class></hibernate-mapping>第三:struts-config.xml文件配置<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "/dtds/struts-config_1_3.dtd"> <struts-config><form-beans><form-bean name="loginAF" type="com.han.forms.LoginForm"></form-bean></form-beans><global-exceptions /><global-forwards /><action-mappings><action path="/loginA"name="loginAF"type="org.springframework.web.struts.DelegatingActionProxy"scope="request"input="/index.jsp"><forward name="success" path="/success.jsp"></forward><forward name="failed" path="/failed.jsp"></forward></action></action-mappings><message-resources parameter="com.han.struts.ApplicationResources" /><plug-in className="org.apache.struts.validator.ValidatorPlugIn"><set-propertyproperty="pathnames"value="/org/apache/struts/validator/validator-rules.xml,/WEB-INF/validation.xml"/></plug-in></struts-config>第四:LoginService接口的配置package com.han.service;import com.han.forms.LoginForm;public interface LoginService {public abstract boolean findlogin(LoginForm user);}第五:接口实现的配置package com.han.service;import java.util.List;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.han.forms.LoginForm;public class LoginServiceImpl extends HibernateDaoSupport implements LoginService {public boolean findlogin(LoginForm user) {String hql="from LoginForm where username='"+user.getUsername()+"' and password='"+user.getPassword()+"'";System.out.println(hql);List userlist=this.getHibernateTemplate().find(hql);if (userlist.size()>0) return true;else return false;}}第六:ActionForm配置package com.han.forms;import org.apache.struts.action.ActionForm;public class LoginForm extends ActionForm {private int id;private String username;private String password;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {ername = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}第七:Action配置package com.han.action;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.apache.struts.actions.DispatchAction;import org.springframework.beans.factory.BeanFactory;import org.springframework.web.context.support.WebApplicationContextUtils; import com.han.forms.LoginForm;import com.han.service.LoginService;import com.han.service.LoginServiceImpl;public class LoginA extends DispatchAction {private LoginService loginService;public void setLoginService(LoginService loginService) {this.loginService = loginService;}public LoginService getLoginService() {return loginService;}public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {LoginForm lf=(LoginForm)form;System.out.println(lf.getUsername());//loginService=new LoginServiceImpl();boolean flag=loginService.findlogin(lf);System.out.println(flag);if (flag){return mapping.findForward("success");}else{return mapping.findForward("failed");}}}第八:登录页面的配置<%@ page language="java" pageEncoding="ISO-8859-1"%><%@ taglib uri="/tags-bean" prefix="bean" %><%@ taglib uri="/tags-html" prefix="html" %><%@ taglib uri="/tags-logic" prefix="logic" %> <%@ taglib uri="/tags-tiles" prefix="tiles" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html:html lang="true"><head><html:base /><title>index.jsp</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><html:form action="loginA.do" method="post" ><table border="0"><tr><td>Login:</td><td><html:text property="username" /></td></tr><tr><td>Password:</td><td><html:password property="password" /></td></tr><tr><td colspan="2" align="center"><html:submit /></td></tr></table></html:form></body></html:html>第九:忘了web.xml文件了,加上<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="/xml/ns/j2ee"xmlns:xsi="/2001/XMLSchema-instance" version="2.4"xsi:schemaLocation="/xml/ns/j2ee/xml/ns/j2ee/web-app_2_4.xsd"><servlet><servlet-name>action</servlet-name><servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param><param-name>config</param-name><param-value>/WEB-INF/struts-config.xml</param-value></init-param><init-param><param-name>debug</param-name><param-value>3</param-value></init-param><init-param><param-name>detail</param-name><param-value>3</param-value></init-param><load-on-startup>0</load-on-startup></servlet><servlet-mapping><servlet-name>action</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><context-param><param-name>contextConfigLocation</param-name><param-value>classpath*:applicationContext.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener></web-app>以上设置,通过SSH框架实现了最基础的用户登录功能。
sshd_config配置文件参数详解
sshd_config配置⽂件参数详解sshd_config配置详解名称sshd_config - OpenSSH SSH 服务器守护进程配置⽂件⼤纲/etc/ssh/sshd_config描述sshd(8) 默认从 /etc/ssh/sshd_config ⽂件(或通过 -f 命令⾏选项指定的⽂件)读取配置信息。
配置⽂件是由"指令值"对组成的,每⾏⼀个。
空⾏和以'#'开头的⾏都将被忽略。
如果值中含有空⽩符或者其他特殊符号,那么可以通过在两边加上双引号(")进⾏界定。
[注意]值是⼤⼩写敏感的,但指令是⼤⼩写⽆关的。
当前所有可以使⽤的配置指令如下:AcceptEnv指定客户端发送的哪些环境变量将会被传递到会话环境中。
[注意]只有SSH-2协议⽀持环境变量的传递。
细节可以参考 ssh_config(5) 中的 SendEnv 配置指令。
指令的值是空格分隔的变量名列表(其中可以使⽤'*'和'?'作为通配符)。
也可以使⽤多个 AcceptEnv 达到同样的⽬的。
需要注意的是,有些环境变量可能会被⽤于绕过禁⽌⽤户使⽤的环境变量。
由于这个原因,该指令应当⼩⼼使⽤。
默认是不传递任何环境变量。
AddressFamily指定 sshd(8) 应当使⽤哪种地址族。
取值范围是:"any"(默认)、"inet"(仅IPv4)、"inet6"(仅IPv6)。
AllowGroups这个指令后⾯跟着⼀串⽤空格分隔的组名列表(其中可以使⽤"*"和"?"通配符)。
默认允许所有组登录。
如果使⽤了这个指令,那么将仅允许这些组中的成员登录,⽽拒绝其它所有组。
这⾥的"组"是指"主组"(primary group),也就是/etc/passwd⽂件中指定的组。
ssh详解
SSH框架整合步骤详解SSH框架 2009-04-09 10:47:00 阅读611 评论0 字号:大中小订阅更系统地学习Struts1.x/Struts2.x+Hibernate+Spring,请学习该开源项目Appfuse终于,终于将SSH整合成功了,弄了几个小时,可以休息了(有的朋友弄了半个月,甚至重装了系统也没弄好,哎,庆幸啊)。
碰到问题千万不要放弃,要相信没有解决不了的问题!项目结构图:jsp部分为:index.jsp;success.jsp;fail.jspUserDAO.java,User.hbm.xml自动生成,HibernateSessionFactory 是多余的。
相关的配置文件、类文件详细信息,请参看Struts+Spring+Hibernate/SSH整合开发详细二以前是整过这三个框架的,可是工作期间都不曾用过,不知不觉之中,学的东西全忘了。
这次又要开始找工作了,看着招聘启事上都写着:要求熟练掌握Struts,Hibernate或Spring框架……,没得办法,重新学呗。
Spring in Action中文版下载地址(ftp协议)ftp://222.214.218.61/book5/20080228/cf8b35cc-5bcd-497 3-b6b7-37ae3ec78391.rar如果无法下载,可以在里重新搜索首先开始搭建项目环境,步骤如下:使用平台:MyEclipse 6.0框架版本:Struts 1.2 Hibernate 3.0 Spring 2.01>添加过程:<1> 新建项目。
Package Explorer视图下,右键单击 New -> Web Project;<2> 添加Struts框架。
菜单栏MyEclipse -> Capabilities,或者右键单击新建的项目名,选择快捷菜单中的"MyEclipse"下的二级菜单;设置相关的包名后,请写一个Struts的小例子,用来测试Struts是否可用;<3> 添加Spring。
SSH2框架的搭建及与SSH1的差别介绍(可编辑)
SSH2框架的搭建及与SSH1的差别介绍SSH2框架搭建版本:struts2.1.6 spring2.5.6hibernate3.3.1SSH2与SSH1之简要比较SSH框架的优势开发效率高适应客户的需求随机变化SSH1框架的劣势繁琐的配置文件编写struts1.X Action线程安全,仅允许一个实例去处理所有请求Forward过于繁琐对Servlet依赖过强SSH2与SSH1之简要比较SSH2优势大量简化配置文件编写。
更大程度解耦合Struts不再依赖Servlet通配符配置注解使用struts2使用struts2借鉴webwork的成功之处,兼容struts1,集合两者优点,更易于整合spring及hibernate框架。
所需jar包:struts2相关配置web.xml文件配置与struts1不同,struts2采用Filter进行配置filter-namestruts/filter-namefilter-class //.uts2.//.ter.StrutsPrepareAndExecuteFilter/filter-classfilter-mappingfilter-namestruts/filter-nameurl-pattern*.do/url-pattern/filter-ma ppingstruts2相关配置struts.xml文件配置在项目src目录下添加struts.xml配置文件。
其基本配置如下:?xml version"1.0" encoding"UTF-8" ?!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "////.package name"default" extends"struts-default"namespace""struts2相关配置struts.xml常用配置为简化配置文件编写,struts2提供通配符支持,如下:action name“*” class“com.demo.1Action”method“show”同时,struts2还支持*/*的配置模式,在配置文件中节点下配置如下:constantname"//.shesInActionNames"value"true"则以上配置可改写为:action name“*/*” class “com.demo.1Action”method“2”struts2相关配置struts.xml常用配置struts2默认访问后缀为.action,不符合访问习惯,且过于繁琐,可在标签下配置如下:constantname"//.ension"value"do"则可使用习惯的.do方式访问整合spring框架添加spring核心包及struts2-spring-plugin-2.1.6.jar。
SSH框架整合常见异常
spring+hibernate出错小结:(1)ng.NoClassDefFoundError: org/hibernate/context/CurrentSessionContext原因:出现这错误时,请更改hibernate的包,更新至最新或3.1以上(2)ng.NoClassDefFoundError: javax/transaction/TransactionManager原因:缺少jta.jar 或者是找不到hbm.xml文件导致sessionfactory出错,检查hbm文件路径是否正确,文件是否存在(3) 错误:Exception in thread "main" org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update或者org.springframework.jdbc.BadSqlGrammarException: Hibernate operation: could not insert: [com.yourcompany.model.Login]; bad SQL grammar [insert into mysql__login (name,password) values (?,?)]; nested exception is java.sql.SQLException: Table'mysql.mysql__login' doesn't exist java.sql.SQLException: Table 'mysql.mysql__login' doesn't exist原因与解决:因为Hibernate Tools(或者Eclipse本身的Database Explorer)生成*.hbn.xml 工具中包含有catalog="***"(*表示数据库名称)这样的属性,将该属性删除就可以了(4)org.springframework.orm.hibernate3.HibernateQueryException: undefined alias原因:在spring配置文件中,可能你设置了<prop key="hibernate.query.factory_class"> org.hibernate.hql.classic.ClassicQueryTranslatorFactory</prop>,指定了HQL的解释器,请删除或更改另一个解释器org.hibernate.hql.ast.ASTQueryTranslatorFactory,如果没有设置,请确认是否有写错了HQL语句,是否与POJO里的属性一样。
详解SSH客户端配置文件
详解SSH客户端配置文件:ssh_config一、了解R S A二、什么是S S H三、S S H协议的内容四、S S H协议的安全验证五、S S H的应用六、开始配置S S H服务器1、首先确认系统已经安装了以下两个包[r o o t@l o c a l h o s t~]#r p m-q a|g r e p"z l i b-[0-9]"(z l i b包至少为 1.1.4版本)[r o o t@l o c a l h o s t~]#r p m-q a|g r e p"o p e n s s l-[0-9]"(o p e n s s l包至少为0.9.6版本)2、下载并安装o p e n s s h安装包1)下载O p e n S S H(1)官方网:w w w.o p e n s s h.o r g(2)下载当前最新版:O p e n S S H 5.3/5.3p1[r o o t@l o c a l h o s t~]#w g e tf t p://m i r r o r.m c s.a n l.g o v/p u b/o p e n s s h/p o r t a b l e/o p e n s s h-5.3p1.t a r.g z2)安装O p e n S S H(具体看O p e n S S H.t a r.g z包中的I N S T A L L文件)[r o o t@l o c a l h o s t~]#t a r-z x v f o p e n s s h-5.3p1.t a r.g z;c d o p e n s s h-5.3p1[r o o t@l o c a l h o s t o p e n s s h-5.3p1]#t o u c h r u n.s h;c h m o d u+x r u n.s h然后在r u n.s h文件中输入以下几行内容:[r o o t@l o c a l h o s t o p e n s s h-5.3p1]# ./r u n.s h&&m a k e&&m a k e i n s t a l l[r o o t@l o c a l h o s t o p e n s s h-5.3p1]#c p c o n t r i b/r e d h a t/s s h d.p a m/e t c/p a m.d/s s h d注意:一定不要忘记拷贝s s h d.p a m到/e t c/p a m.d目录下,并改名为s s h d,要不然用户就不能通过S S H服务器的”基于口令的安全验证”方式,从而不能登录S S H服务器[r o o t@l o c a l h o s t~]#e c h o"/u s r/l o c a l/o p e n s s h/s b i n/s s h d&">>/e t c/r c.l o c a l注意:安装完以后,把s s h d服务启动加入到r c.l o c a l脚本中,从而实现系统时,自动启动该服务[r o o t@l o c a l h o s t o p e n s s h-5.3p1]#c p/u s r/l o c a l/o p e n s s h/s h a r e/m a n/m a n1/*/u s r/l o c a l/s h a r e/m a n/m a n1/[r o o t@l o c a l h o s t o p e n s s h-5.3p1]#c p/u s r/l o c a l/o p e n s s h/s h a r e/m a n/m a n5/*/u s r/l o c a l/s h a r e/m a n/m a n5/[r o o t@l o c a l h o s t o p e n s s h-5.3p1]#c p/u s r/l o c a l/o p e n s s h/s h a r e/m a n/m a n8/*/u s r/l o c a l/s h a r e/m a n/m a n8/注意:把帮助文件拷贝到/u s r/l o c a l/s h a r e/m a n/下面,已便用m a n命令查看帮助[r o o t@M y l i n u x~]#u s e r a d d r u a n x i;p a s s w d r u a n x i[r o o t@M y l i n u x~]#u s e r a d d c r s k y;p a s s w d c r s k y[r o o t@M y l i n u x~]#g r o u p a d d S S H a d m i n[r o o t@M y l i n u x~]#v i/e t c/g r o u p把用户r u a n x i加入到组S S H a d m i n中,修改/e t c/g r o u p中的内容:S S H a d m i n:x:503:r u a n x i注意:这里把用户加入S S H a d m i n组中的目的是:让r u a n x i能够登录S S H服务器,而用户c r s k y没有加入到S S H a d m i n组中,也就无法登录S S H服务器了,因为一般系统管理员的人数不会很多,所以我们只让系统管理员有权登录S S H服务器,其他人员禁止登录,这样能让服务器更安全(具体还得配置s s h d_c o n f i g文件)3)修改配置文件(1)安装完o p e n s s h后,会生成以下几个配置文件(注意:这些生成的配置文件具体要放在哪个位置?这是由--s y s c o n f i g d i r参数指定的)m o d u l i#s s h服务器的D i f f i e-H e l l m a n密钥文件s s h_c o n f i g#s s h客户端配置文件s s h d_c o n f i g#s s h服务器配置文件s s h_h o s t_d s a_k e y#s s h服务器d s a算法私钥s s h_h o s t_d s a_k e y.p u b#s s h服务器d s a算法公钥s s h_h o s t_r s a_k e y#s s h服务器r s a算法私钥s s h_h o s t_r s a_k e y.p u b#s s h服务器r s a算法公钥(2)编辑s s h服务器配置文件(s s h d_c o n f i g)[r o o t@l o c a l h o s t~]#v i/u s r/l o c a l/o p e n s s h/s s h_c o n f i g(3)编辑客户端登录环境的配置文件s s h_c o n f i g,通过修改它来改变客户端程序的运行方式[r o o t@M y l i n u x~]#v i/u s r/l o c a l/o p e n s s h/s s h_c o n f i g(4)配置S S H服务器的论证方式第一种:基于口令的论证方式:只需要对上面的配置文件:s s h d_c o n f i g与s s h_c o n f i g做些修改,修改如下:在上面的服务器配置文件s s h d_c o n f i g中,只需去掉下列行的“#”号#P a s s w o r d A u t h e n t i c a t i o n y e s==>P a s s w o r d A u t h e n t i c a t i o n y e s#C h a l l e n g e R e s p o n s e A u t h e n t i c a t i o n y e s==>C h a l l e n g e R e s p o n s e A u t h e n t i c a t i o n y e s在上面的客户端配置文件s s h_c o n f i g中,只需去掉下列行的“#”号#P a s s w o r d A u t h e n t i c a t i o n y e s==>P a s s w o r d A u t h e n t i c a t i o n y e s如果已启动s s h d服务,那么重新启动一下s s h d(k i l l a l l-H U P s s h d),如果还没有启动s s h d服务,现在就用指令:"/u s r/l o c a l/o p e n s s h/s b i n/s s h d &"启动s s h d服务,然后让用户:r o o t与c r s k y分别重新登录,此时会产生如下结果:分析原因:在服务器配置文件s s h d_c o n f i g中设置不允许r o o t用户登录S S H服务器,另外用户c r s k y不属于S S H a d m i n组的成员,所以也无法登录S S H服务器第二种:基于密钥的论证方式:只需要对上面的配置文件:s s h d_c o n f i g与s s h_c o n f i g做些修改,修改如下:在上面的服务器配置文件s s h d_c o n f i g中,修改如下几行#H o s t K e y/u s r/l o c a l/o p e n s s h/s s h_h o s t_r s a_k e y==>H o s t K e y/u s r/l o c a l/o p e n s s h/s s h_h o s t_r s a_k e y#H o s t K e y/u s r/l o c a l/o p e n s s h/s s h_h o s t_d s a_k e y==>H o s t K e y /u s r/l o c a l/o p e n s s h/s s h_h o s t_d s a_k e y#A u t h o r i z e d K e y s F i l e.s s h/a u t h o r i z e d_k e y s==>A u t h o r i z e d K e y s F i l e.s s h/ a u t h o r i z e d_k e y s#P a s s w o r d A u t h e n t i c a t i o n y e s==>P a s s w o r d A u t h e n t i c a t i o n n o#C h a l l e n g e R e s p o n s e A u t h e n t i c a t i o n y e s==>C h a l l e n g e R e s p o n s e A u t h e n t i c a t i o n n o在上面的客户端配置文件s s h_c o n f i g中,修改如下几行#I d e n t i t y F i l e~/.s s h/i d_r s a==>I d e n t i t y F i l e~/.s s h/i d_r s a#I d e n t i t y F i l e~/.s s h/i d_d s a==>I d e n t i t y F i l e~/.s s h/i d_d s a#P a s s w o r d A u t h e n t i c a t i o n y e s==>P a s s w o r d A u t h e n t i c a t i o n n o七、O p e n S S H用户工具1、s s h(登录远程S S H服务器)1)S S H服务器基于密钥的认证方式[r u a n x i@M y l i n u x~]$s s h-l r u a n x i-i~/.s s h/i d_r s a-p2222-2192.168.1.1002)S S H服务器基于密码的认证方式[r u a n x i@M y l i n u x~]$s s h-l r u a n x i-p2222192.168.1.100;3)使用S S H登录来执行远程的一些命令[r u a n x i@M y l i n u x~]$s s h-l r u a n x i-p2222-2-q-i~/.s s h/i d_r s a192.168.1.100'l s-l/t m p;l s-l /e t c/g r u b.c o n f'(即:使用用户账号r u a n x i安静登录,并使用密钥方式来验证,登录后执行命令:l s -l/t m p,把结果返回到本地终端并退回到本地)参数解析-p:不使用默认端口,使用2222端口-2:选用S S H v2-l:登录用户名-i:指定登录的用户的私钥存放位置-q:安静模式登录2、s s h-k e y g e n工具例如:为ruanxi用户修改pass-phrase。
SSH概述与配置文件说明
SSH概述与配置⽂件说明⼀、什么是SSH?简单说,SSH是⼀种⽹络协议,⽤于计算机之间的加密登录。
在出现SSH之前,系统管理员需要登⼊远程服务器执⾏系统管理任务时,都是⽤telnet来实现的,telnet协议采⽤明⽂密码传送,在传送过程中对数据也不加密,很容易被不怀好意的⼈在⽹络上监听到密码。
如果⼀个⽤户从本地计算机,使⽤SSH协议登录另⼀台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。
最早的时候,互联⽹通信都是明⽂通信,⼀旦被截获,内容就暴露⽆疑。
1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联⽹安全的⼀个基本解决⽅案,迅速在全世界获得推⼴,⽬前已经成为Linux系统的标准配置。
需要指出的是,SSH只是⼀种协议,存在多种实现,既有商业实现,也有开源实现。
本⽂针对的实现是OpenSSH,它是⾃由软件,应⽤⾮常⼴泛。
⼆、⾸先了解下对称加密(也称为秘钥加密),⾮对称加密(也称公钥加密)所谓对称加密,指加密解密使⽤同⼀套秘钥。
对称加密的加密强度⾼,很难破解。
但是在实际应⽤过程中不得不⾯临⼀个棘⼿的问题:如何安全的保存密钥呢?尤其是考虑到数量庞⼤的Client端,很难保证密钥不被泄露。
⼀旦⼀个Client端的密钥被窃据,那么整个系统的安全性也就不复存在。
为了解决这个问题,⾮对称加密应运⽽⽣。
⾮对称加密有两个密钥:“公钥”和“私钥”。
公开的密钥称为公钥,不公开的密钥称为私钥,两个密钥的特性:公钥加密后的密⽂,只能通过对应的私钥进⾏解密。
⽽通过公钥推理出私钥的可能性微乎其微。
也可以通过私钥进⾏加密,在通过公钥进⾏密码,这种⽅式多⽤于数字签名。
远程Server收到Client端⽤户TopGun的登录请求,Server把⾃⼰的公钥发给⽤户。
Client使⽤这个公钥,将密码进⾏加密。
Client将加密的密码发送给Server端。
远程Server⽤⾃⼰的私钥,解密登录密码,然后验证其合法性。
当前SSH布局和初始化步骤
在web.xml中加入如下语句:
<context-param>
<param-name>contextConfigLocation</param-name>
1.建立项目
2.搭建环境
Hibernate:
添加jar(9+1):
hibernate-distribution-3.3.2.GA/hibernate3.jar
hibernate-distribution-3.3.2.GA/lib/required/*(6个)
,复制以下内容
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</listener>
###好了,现在可以启动服务器测试以下是否存在问题.
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
创建struts.xml文件:可以到/apps/struts2-blank-2.2.1/WEB-INF/src/java文件夹下复制struts.xml文件.
配置Web.xml:
bpm与SSH整合详解
基本步骤1、集成JBPM到系统(第一步:创建数据库表)* 拷贝相关的依赖包到WEB-INF/lib下面(bsh.jar/ jcr-1.0.jar/ jbpm-identity.jar/ jbpm-jpdl.jar)* 修改hibernate.cfg.xml,添加JBPM的映射配置,以及缓存属性的配置,可从jbpm包下的config文件夹下参考其hibernate.cfg.xml文件*在使用Jbpm工作流引擎的时候,Hibernate配置文件一定要加上属性<property name="hibernate.hbm2ddl.auto">update</property>Hbm2dll.auto是数据库表和类自动连接更新* 因为JBPM中的User对象与OA系统中的User对象名称上有冲突,所以需要修改系统中User映射的auto-import 属性为"false"。
(参考User.hbm.xml)* 当修改了User映射的auto-import="false"之后,需要在查询User对象的时候,使用其全路径类名(请参考UserManagerImpl.java)* 启动Tomcat,应能正确创建JBPM的所有数据库表2、集成JBPM到系统(第二步:与Spring集成)* 集成JBPM与spring,需要用到第三方的集成包:spring-modules-0.8.zip* 将其中的spring-modules-jbpm31.jar拷贝到WEB-INF/lib下面即可* 集成JBPM与Spring的方法是:将JbpmConfiguration对象的创建交给Spring来完成* 所以,需要在spring配置文件中配置JbpmConfiguration对象的创建<!-- 配置JbmpConfiguration --><bean id="jbpmConfiguration"class="org.springmodules.workflow.jbpm31.LocalJbpmConfigurationFactoryBean"><property name="configuration" value="classpath:jbpm.cfg.xml"></property></bean>* 这时候,需要jbpm.cfg.xml,这是JBPM的配置文件,我们可以从:JBPM_HOME"src"jpdl"org"jbpm目录下拷贝default.jbpm.cfg.xml文件,并重新命名为jbpm.cfg.xml3、集成JBPM到系统(第三步:如何实现业务逻辑类,请参考WorkflowManagerImpl.java)* 用到jbpmConfiguration对象的时候,需要注入 (<property name="jbpmConfiguration"ref="jbpmConfiguration"></property>)* 当我们使用JbpmContext对象来操纵JBPM的时候,需要将JbpmContext的HibernateSession对象设置为当前的HibernateSession对象private JbpmContext getContext(){JbpmContext context = jbpmConfiguration.createJbpmContext();context.setSession(getSession());return context;}4、实现WorkflowManagerImpl- 理解基本的JBPM操作:流程定义、流程实例、任务列表、流向Jbpm与ssh整合常出现的问题1、因为JBPM中的User对象与OA系统中的User对象名称上有冲突,所以需要修改OA系统中User映射的auto-import属性为"false"。
