精华内容
下载资源
问答
  • SSH2框架搭建实例源码

    万次下载 热门讨论 2013-04-25 09:53:29
    SSH2框架搭建实例(spring3.2+strust2.3.4+hibernate4.2)全部采用最新版本.演示了用户登录和用户管理
  • 当前Linux 的server是OpenSuSe 10,然后自己电脑上装了SecureCRT 6.5.0 (build 380) 去连接服务器,用的是SSH2。 但是配置好之后,每次连接,都提示 keyboard-interactive authentication with the ssh2 server ...

    【问题】

    当前Linux 的server是OpenSuSe 10,然后自己电脑上装了SecureCRT 6.5.0 (build 380) 去连接服务器,用的是SSH2。

    但是配置好之后,每次连接,都提示

    keyboard-interactive authentication with the ssh2 server failed

    然后需要输入用户名和密码才可以连接。

    【解决过程】

    进行如下设置,即可:

    Option ->Session Options ->Connection-> SSH2 ,在右边窗口的Authentication的位置:

    不要选择:Public Key(至少偶目前没搞懂如何设置的公钥)和GSSAPI

    要选上Password和Keyboard Interavtive,然后点击Keyboard Interavtive,再点击右边的Properties,去设置属性,选上Store Password,然后输入2次密码,确定即可。

    这样就保存了密码,然后你以后再通过SSH2去连接服务器的时候,就不需要每次都输入密码了。

     

    说明:以上方法并没有解决我的问题,其实我只需要输入两次密码即可。

     

    展开全文
  • SSH1和SSH2的区别

    万次阅读 2017-10-12 09:04:08
    SSH(Secure SHell)到目前为止有两个不兼容的版本——SSH1和SSH2。 SSH1又分为1.3和 1.5两个版本。SSH1采用DES、3DES、Blowfish和RC4等对称加密算法保护数据安全传输,而对称加密算法的密钥是通过非对称加密算法...

    如下转载某博客:

    SSH(Secure SHell)到目前为止有两个不兼容的版本——SSH1和SSH2。

    SSH1又分为1.3和 1.5两个版本。SSH1采用DES、3DES、Blowfish和RC4等对称加密算法保护数据安全传输,而对称加密算法的密钥是通过非对称加密算法(RSA)来完成交换的。SSH1使用循环冗余校验码(CRC)来保证数据的完整性,但是后来发现这种方法有缺陷。

    SSH2避免了RSA的专利问题,并修补了CRC的缺陷。SSH2用数字签名算法(DSA)和Diffie-Hellman(DH)算法代替RSA来完成对称密钥的交换,用消息证实代码(HMAC)来代替CRC。同时SSH2增加了AES和Twofish等对称加密算法。

    展开全文
  • 原文链接地址... Call to undefined function sftp\ssh2_connect() centos安装php的ssh2扩展 事先准备需要的 libssh2 下载 wgethttps://www.libssh2.org/download/libssh2-1.8.0.tar.

    原文地址 https://www.xiegaosheng.com/post/view?id=58

    Call to undefined function sftp\ssh2_connect()

    centos安装php的ssh2扩展

    事先准备需要的

     libssh2 下载  wget https://www.libssh2.org/download/libssh2-1.8.0.tar.gz

    ssh2下载 wget  wget http://pecl.php.net/package/ssh2/ssh2-1.1.2.tgz

    cd /usr/loca/src
    wget https://www.libssh2.org/download/libssh2-1.8.0.tar.gzwget http://pecl.php.net/package/ssh2/ssh2-1.1.2.tgz 
    
    //解压
     tar -zxvf libssh2-1.8.0.tar.gz
     
     cd libssh2-1.8.0
     //编译到libssh2
     ./configure --prefix=/usr/local/libssh2
     
     make && make install
     
     
     
     
     #解压ssh2
     tar -zxvf ssh2-1.1.2.tgz   解压的时候报错看了一下文件类型是XHTML 最后在桌面解压好上传的
     cd ssh2-1.1.2
     phpize 结果报错如下

    Can't find PHP headers in /usr/include/php The php-devel package is required for use of this command

    image.png

    直接安装php-dev

    yum install php55w-del ;//PHP版本是5.5的

    执行phpize

    image.png

    ./configure --prefix=/usr/local/ssh2 --with-ssh2=/usr/local/libssh2

    结果都是报错,上官网看了一下,原来是ssh2-1.0yi以上版本是PHP7.0

    image.png

     

    image.png

     

    下载0.12版本

     

    cd ssh2-0.12/
    phpize
    ./configure --prefix=/usr/local/ssh2 --with-ssh2=/usr/local/libssh2
    make
    make install
    
    //复制ssh2.so 到 /usr/lib64/php/modules/
    ///usr/lib64/php/modules/ php扩展目录
     cp modules/ssh2.so /usr/lib64/php/modules/
     
     vi /etc/php.ini
     添加 extension=ssh2.so
     
     上面就ok了
     查询一下 php -i|grep ssh2

     

    image.png

     
    展开全文
  • java 领域中, 开源jar 包ganymed-ssh2ssh2协议进行了实现, 通过ganymed-ssh2 可实现Linux命令: ssh 和 scp 的功能. ganymed-ssh2 提供了多种认证方式, 可通过用户名密码, 秘钥等方式. 笔者常用的是用户名密码方式...

    java 领域中, 开源jar 包ganymed-ssh2 对ssh2协议进行了实现, 通过ganymed-ssh2 可实现Linux命令: ssh 和 scp 的功能. ganymed-ssh2 提供了多种认证方式, 可通过用户名密码, 秘钥等方式. 笔者常用的是用户名密码方式。 ganymed-ssh2 的开发步骤:

    1. 使用主机地址创建连接对象new Connection(host)
    2. 创建TCP连接, connection.connect()
    3. 进行身份认证,笔者使用的是用户名密码方式: connection.authenticateWithPassword(username, password)
    4. 创建会话,每次远程操作都需要重新打开一个会话. connection.openSession()
    5. 执行ssh 操作或scp 操作
    6. 关闭连接: connection.close()

    1. 引入maven 依赖

    笔者习惯于使用maven 开发, 所以新建maven 项目, 然后引入依赖. 需要注意的是笔者使用的是build210 版本, 是buildxxx系列的最高版本. 不同版本的api 还是有差别的.

    <dependencies>
       <!-- 引入ssh2 依赖 -->
        <dependency>
            <groupId>ch.ethz.ganymed</groupId>
            <artifactId>ganymed-ssh2</artifactId>
            <version>build210</version>
        </dependency>
    
        <!-- 引入单元测试 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
    

    2. 开发工具类

    2.1 自定义SSH2 工具类

    笔者觉得ganymed-ssh2 提供的API 并不符合笔者的开发习惯,所以进行了二次封装。 将常用的ssh2 操作封装成了一个工具类。

    import ch.ethz.ssh2.Connection;
    import ch.ethz.ssh2.SCPClient;
    import ch.ethz.ssh2.Session;
    
    import java.io.*;
    
    /**
     * @Description: ssh2 工具类
     * @author: zongf
     * @date: 2019-03-25 20:23
     */
    public class SSH2Util {
    
        private static String DEFAULT_CHARSET = "UTF-8";
    
    
        /**
         * @Description: 建立ssh2连接
         * @param host 主机地址
         * @param username 用户名
         * @param password 密码
         * @return: Connection
         * @author: zongf
         * @time: 2019-03-25 20:46:32
         */
        public static Connection openConnection(String host, String username, String password) {
            Connection connection;
    
            try {
                connection = new Connection(host);
    
                // 建立ssh2 连接
                connection.connect();
    
                // 校验用户名密码
                boolean login = connection.authenticateWithPassword(username, password);
    
                // 登录成功返回连接
                if (login) {
                    return connection;
                }else {
                    throw new RuntimeException("用户名密码不正确");
                }
    
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        }
    
    
        /**
         * @Description: 执行一条命令
         * @param connection ssh2 连接对象
         * @return: ExecCmdResult 执行结果, 封装执行状态和执行结果
         * @author: zongf
         * @time: 2019-03-25 20:47:14
         */
        public static ExecCmdResult execCommand(Connection connection, String command) {
    
            ExecCmdResult execCmdResult = new ExecCmdResult();
    
            Session session = null;
    
            try {
                session = connection.openSession();
    
                // 执行命令
                session.execCommand(command);
    
                // 解析结果
                String result = parseResult(session.getStdout());
    
                // 若解析结果为空, 则表示执行命令发生了错误, 尝试解析错误输出
                if (result.isEmpty()) {
                    result = parseResult(session.getStderr());
                }else {
                    execCmdResult.setSuccess(true);
                }
    
                // 设置响应结果
                execCmdResult.setResult(result);
    
                return execCmdResult;
    
            } catch (IOException e) {
                e.printStackTrace();
            }finally {
                if (session != null) {
                    session.close();
                }
            }
            return null;
        }
    
        /**
         * @Description: 下载文件,只能下载文件类型, 如果是目录则抛出异常
         * @param connection ssh2 连接对象
         * @param remoteFilePathAbs 远程文件绝对路径名
         * @param localDir 本地文件夹
         * @author: zongf
         * @time: 2019-03-25 21:41:33
         */
        public static void download(Connection connection, String localDir, String... remoteFilePathAbs) {
    
            // 如果传参为空, 则返回
            if(remoteFilePathAbs == null) return;
    
            SCPClient scpClient = new SCPClient(connection);
    
            try {
                scpClient.get(remoteFilePathAbs, localDir);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        /**
         * @Description: 通配符方式下载文件
         * @param connection ssh2 连接对象
         * @param remoteDirAbsPath 远程文件绝对路径
         * @param fileNamePattern 文件名通配符匹配模式
         * @param localDir 本地目录, 可接受相对绝对路径
         * @author: zongf
         * @time: 2019-03-25 22:20:07
         */
        public static void downloadByPattern(Connection connection, String localDir, String remoteDirAbsPath, String fileNamePattern) {
    
            ExecCmdResult execCmdResult = execCommand(connection, "ls " + remoteDirAbsPath + "/" + fileNamePattern);
    
            if (execCmdResult.isSuccess()) {
    
                String[] files = execCmdResult.getResult().split("\n");
    
                SCPClient scpClient = new SCPClient(connection);
    
                try {
                    scpClient.get(files, localDir);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    
    
        /**
         * @Description: 上传文件至远程服务器. 本地文件不存在时, 抛出异常,但会上传一个0字节的文件; 远程目录不存在时, 抛出异常.
         * @param connection ssh2 连接对象
         * @param remoteDirAbsPath 远程服务器文件夹, 必须是绝对路径
         * @param localFile 本地文件列表, 可接受绝对路径相对路径参数
         * @author: zongf
         * @time:  2018-03-25 21:44:07
         */
        public static void upload(Connection connection, String remoteDirAbsPath, String... localFile) {
    
            // 如果传参为空, 则返回
            if(localFile == null) return;
    
            SCPClient scpClient = new SCPClient(connection);
    
            try {
                scpClient.put(localFile, remoteDirAbsPath);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        /**
         * @Description: 解析命令结果
         * @param inputStream 输入流
         * @return: String 字符串
         * @author: zongf
         * @time:  2019-03-25 21:06:23
         */
        private static String parseResult(InputStream inputStream) throws IOException {
            // 读取输出流内容
            BufferedReader br = new BufferedReader(new InputStreamReader(inputStream, DEFAULT_CHARSET));
            StringBuffer resultSb = new StringBuffer();
            String line;
            while ((line = br.readLine()) != null) {
                resultSb.append(line + "\n");
            }
            return resultSb.toString();
        }
    }
    

    2.2 自定义命令返回结果

    /**
     * @Description: 命令返回结果
     * @author: zongf
     * @date: 2019-03-25 21:03
     */
    public class ExecCmdResult {
    
        // 命令执行是否成功
        private boolean success;
    
        // 输出结果
        private String result;
    
        public boolean isSuccess() {
            return success;
        }
    
        public void setSuccess(boolean success) {
            this.success = success;
        }
    
        public String getResult() {
            return result;
        }
    
        public void setResult(String result) {
            this.result = result;
        }
    }
    

    3. 测试类

    public class TestSSH2Util {
    
        private String host = "127.0.0.1";
    
        private String username = "root";
    
        private String password = "123456";
    
        private Connection connection;
    
        // 执行每个单元测试用例前, 创建ssh2连接
        @Before
        public void setup(){
            connection = SSH2Util.openConnection(host, username, password);
        }
    
        // 执行每个单元测试后, 关闭连接
        @After
        public void tearDown(){
            connection.close();
        }
    
        /** 测试连接 */
        @Test
        public void test_connect(){
            System.out.println("hostname:" + connection.getHostname());
        }
    
        /** 测试执行正确命令 */
        @Test
        public void test_exec_right() {
            ExecCmdResult execCmdResult = SSH2Util.execCommand(connection, "ls /home -l");
    
            System.out.println("命令是否正确执行:" + execCmdResult.isSuccess());
            System.out.println("命令执行结果:\n" + execCmdResult.getResult());
        }
    
        /** 测试执行带命令通配符的命令 */
        @Test
        public void test_exec_ms() {
            ExecCmdResult execCmdResult = SSH2Util.execCommand(connection, "ls -d /*bin");
    
            System.out.println("命令是否正确执行:" + execCmdResult.isSuccess());
            System.out.println("命令执行结果:\n" + execCmdResult.getResult());
        }
    
        /** 测试执行错误命令 */
        @Test
        public void test_exec_wrong() {
            ExecCmdResult execCmdResult = SSH2Util.execCommand(connection, "ls /2");
    
            System.out.println("命令是否正确执行:" + execCmdResult.isSuccess());
            System.out.println("命令执行结果:\n" + execCmdResult.getResult());
        }
    
        /** 测试下载单个文件 */
        @Test
        public void test_download() {
            SSH2Util.download(connection, ".","/etc/passwd");
        }
    
        /** 测试批量下载多个文件 */
        @Test
        public void test_download_batch(){
            SSH2Util.download(connection, ".", "/etc/passwd", "/bin/bash");
        }
    
        /** 测试通配符下载多个文件 */
        @Test
        public void test_download_Parttern(){
            SSH2Util.downloadByPattern(connection, ".", "/bin", "*m");
        }
    
        /** 测试单个上传 */
        @Test
        public void test_upload() {
            SSH2Util.upload(connection, "/tmp/zongf", "passwd");
        }
    
        /** 测试批量上传 */
        @Test
        public void test_upload_batch() {
            SSH2Util.upload(connection, "/tmp/zongf/tt", "rm", "udevadm");
        }
    }
    
    
    展开全文
  • sshexpecting SSH2_MSG_KEX_ECDH_REPLY卡住登陆openvpn 问题描述 当前使用系统为 Ubuntu, 登陆openvpn后ssh连接内网机器时,一直卡住无法登陆, 该内网机器可以ping通,并且探测ssh端口也没问题: # nc -zv 192...
  • WebSSH2 界面ssh

    千次阅读 2018-12-21 15:32:35
    工具:Virtual Machines14.1 系统环境:CentOS 7 64位 (2个) IP:192.168.163.138  IP:192.168.163.141  概述:在138系统中安装部署WebSSH服务  通过浏览器:http://WebSS...
  • 自动部署工具: ssh2-sftp-client

    万次阅读 2020-06-03 16:46:31
    ssh2-sftp-client (npm) 官方api rmdir(romotePath, true) 递归删除服务器文件夹 uploadDir(localPath, romotePath) 递归上传文件夹 put(localPath, romotePath) get(romotePath, localPath) 基本demo 有些api...
  • ganymed-ssh2简介: Ganymed SSH-2 for Java是用纯Java实现SSH-2协议的一个包。可以利用它直接在Java程序中连接SSH服务器。Ganymed SSH-2支持SSH对话(远程命令执行和shell访问),本地和远程端口转发,本地数据流...
  • telnet,ssh1和ssh2的区别

    千次阅读 2014-07-25 23:13:54
    当你通过sftp(ssh1)连接linux的时候,假如连接后... Received,请修改ssh为ssh2连接模式即可。 一、TELNET 使用Telnet这个用来访问远程计算机的TCP/IP协议以控制你的网络设备相当于在离开某个建筑时大喊你的
  • 8、electron-vue安装ssh2

    万次阅读 2018-03-22 13:02:37
    ssh2是使用Nodejs在Windows上调用SSH命令,具体用法请参考ssh2 yarn add ssh2 // 或 cnpm install -save ssh2 yarn安装方式 npm install -g yarn cnpm安装方式 npm install -g cnpm --registry=...
  • JAVA SSH2工具类

    千次阅读 2018-12-11 23:04:58
    ssh2utils connection 常规session操作 未完成 常规scf操作 未完成 简介 使用java进行ssh 操作,执行脚本,scp文件的包装 依赖 &lt;!-- https://mvnrepository.com/artifact/com.trilead/trilead-ssh2 --&...
  • 浅谈 Linux 下的 SSH1, SSH2

    万次阅读 2015-04-05 14:37:46
    SSH1免费,SSH2收费。  其实 SSH 并不只是在 Linux 和 Unix 下使用,他们同样在 Windows NT下广泛使用。 相对于 Telnet,ssh 对传输内容加密并压缩。 SSH软件包由服务器端软件包和客户软件包组成,在windows ...
  • PHP ssh2实现远程执行操作

    千次阅读 2016-09-10 16:17:05
    本文主要介绍PHP的ssh2扩展的使用,实现远程ssh2连接、执行shell命令以及传送文件
  • 现象:主机间互通正常且可以判断对方ssh端口是开放的,但是用ssh xxx.xxx.xxx.xxx -v这种方式连接的时候会卡在debug1: SSH2_MSG_KEXINIT sent这步 解决方法:echo "1454" > /sys/class/net/eth0/mtu 原因:...
  • Eclipse GitHub SSH2 key配置

    千次阅读 2017-03-16 02:10:43
    1. 用Eclipse自带git插件进行配置... 2. eclipse生成SSH2 key:windows -- perferences--General--Network Commection--SSH2--key management 查看生成的秘钥是否在在默认系统盘(C盘) 3. 到.ssh文件夹下,把
  • java远程调用ssh2执行Linux命令

    千次阅读 2017-12-18 11:11:00
    java SSH2远程登录Linux服务执行命令前一段时间工作中用到了java远程调用Linux服务器,执行相关命令,因为比较常用,故此,在博客中记录下来。其中用到了ganymed-ssh2这个jar包,可以在...
  • php的ssh2扩展实现远程控制

    千次阅读 2017-02-06 16:41:36
    2.php的ssh2的安装与使用 3.确保防火墙与网络正常 能ping通就行 具体实施 windows的演示 1.下载php中的ssh2扩展(注意php的版本号) 下载地址 http://pecl.php.net/package/ssh2 如图所示(说明书) 2.解压找到你...
  • JAVA利用SSH2登录LINUX并执行命令

    万次阅读 2017-03-16 19:08:28
    import ch.ethz.ssh2.Connection; import ch.ethz.ssh2.Session; import ch.ethz.ssh2.StreamGobbler; import cn.com.bsfit.frms.portal.util.RemoteExecCmd; import org.junit.Test; import java.io.BufferedReade
  • Secure[1]CRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单的说是Windows下登录UNIX或Linux服务器主机的软件。 SecureCRT支持SSH,同时支持Telnet和rlogin协议。SecureCRT是一款用于连接运行包括Windows、UNIX...
  • PHP 执行远程命令 SSH2 模块安装

    千次阅读 2018-06-11 15:38:40
    SSH2 扩展的安装 PHP 的 SSH2 扩展 系统环境 CentOS 6.8 libssh2-1.8.0 php-devel ssh2-0.13 前提环境安装好 LNMP 或 LAMP 安装 OpenSSL $ yum install -y openssl openssl-devel 编译安装 libssh2 ...
  • Linux环境下安装ssh2模块

    千次阅读 2017-05-10 11:30:45
    Linux下安装ssh2扩展模块
  • Nodejs ssh2 exec执行shell超时终止执行

    千次阅读 2017-08-01 22:04:46
    使用ssh2 模块执行shell的时候,只有在连接目标机器时,有个readyTimeout用于设置ssh连接目标机器的超时终止的参数。 conn.connect({ host: ip, port: 22, username: user, password: password, ...
  • 关于找不到ssh2john问题的解决

    千次阅读 2019-07-31 08:52:53
    #locate ssh2john 通过命令查找到ssh2john在文件中的位置 直接用python执行即可
  • ssh 卡在 SSH2_MSG_SERVICE_ACCEPT received

    千次阅读 2012-04-25 10:58:40
    ssh连接相当慢; ssh -v root@host 时,发现 SSH2_MSG_SERVICE_ACCEPT received 这里卡了快一分钟; 解决办法: 修改sshd_config,添加 UseDNS no
  • SSH2免密码登录OpenSSH

    万次阅读 2014-04-16 12:24:02
    1. 如何确定是OpenSSH还是SSH2? 执行命令“ssh -V”,通过它的输出,即可确定: SSH2 ssh: SSH Secure Shell 3.2.9.1 (non-commercial version) on OpenSSH OpenSSH_5.3p1,...
  • 发现到SSH2_MSG_SERVICE_ACCEPT一行时会停留很久 1、由于GSSAPI认证导致的,修改/etc/ssh/sshd_config,将对应行修改成: GSSAPIAuthentication no 服务器端启用了GSSAPI。登陆的时候客户端需要对服务器端的IP...
  • 服务器的连接$connection=ssh2_connect($host, $port); if( ssh2_auth_pubkey_file($connection, $send_account, $file.'/id_dsa.pub', $file.'/id_dsa')) { echo "Public Key Authentication Succ
  • 浅谈Jsch &&SSH2

    千次阅读 2012-09-19 11:27:13
    Jsch – Pure Java implementation of SSH2 Home AboutGuestbookCategoriesTagsLinksSubscribe 原文地址:http://geeklu.com/2010/06/jsch-pure-java-implementation-of-ssh2/ 一.SSH的介绍 SSH(Secure ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 714,228
精华内容 285,691
关键字:

ssh2