Java使用SSH远程访问Windows并执行命令

转载 2016年08月29日 18:32:39

转载至:http://blog.csdn.net/carolzhang8406/article/details/6760430

windows由于没有默认的ssh server,因此在允许ssh之前需要先安装ssh server。

下载freeSSHd

http://www.freesshd.com/?ctt=download

安装
直接执行freeSSHd.exe就可以进行安装了(用户一定要有管理员权限),安装过程中freeSSHd会问你

Private keys should be created. Should I do it now?
这是问你是否需要现在创建私钥,回答是

Do you want to run FreeSSHd as a system service?
这是问你是否希望把freeSSHd作为系统服务启动,回答是之后就安装完成了。

安装完成之后,双击freesshd图标(桌面或开始菜单),不会直接打开配置界面,而是需要在任务栏的“显示隐藏图标”(正三角图标)处右键freessh图标,选择setting。

配置用户名和密码:(java代码中连接的用户名和密码)

检查freesshd server status状态。切换至“server status”标签页,查看“SSH server is running”是否打钩,如果没有,点击下方连接检查,如果报错“the specified address is already in use”,则是由于安装时询问“Do you want to run FreeSSHd as a system service?”选择了“是”导致的,只需要在services.msc中将该服务停掉,再在配置界面启动,显示为打钩状态即可。


java代码如下:

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 SSHWindows {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		 String hostname ="192.168.30.10";
	        String username="administrator";
	        String password="Talent123";
	        try{
	            //建立连接
	            Connection conn= new Connection(hostname);
	       //     System.out.println("set up connections");
	            conn.connect();
	            //利用用户名和密码进行授权
	            boolean isAuthenticated = conn.authenticateWithPassword(username, password);
	            if(isAuthenticated ==false)
	            {
	       //     	System.out.println("--------");
	                throw new IOException("Authorication failed");
	            }
	            //打开会话
	            Session sess = conn.openSession();
	        //    System.out.println("cmd----");
	            //执行命令
	            sess.execCommand("ruby C:\\WhatWeb-master\\whatweb --output-xml http://216.139.147.75:443/");
	       //     System.out.println("The execute command output is:");
	            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("Exit code "+sess.getExitStatus());
	            sess.close();
	            conn.close();
	       //     System.out.println("Connection closed");
	            
	        }catch(IOException e)
	        {
	            System.out.println("can not access the remote machine");
	        }
	    }


}


以上代码依赖于ssh2的jar包。下载地址:http://www.ganymed.ethz.ch/ssh2/


Windows客户端 SSH 远程连接Windows服务器(PowerShell Server)

最近刚搞完SSH框架,又来研究研究SSH远程连接。为什么这么要弄这个呢?因为现在我现在开发主要在自己的笔记本(windows)上,然后写的后端都要部署到实验室的台式机(windows)上,这样一来,我...
  • nijiayy
  • nijiayy
  • 2016年04月13日 23:23
  • 23849

Windows to Windows SSH登录

网上一直都是windows to linux或者linux to linux的SSH登录,现记录windows to windows的SSH登录。 SSH 登录原理参考:http://www.cnb...
  • flyingshuai
  • flyingshuai
  • 2017年06月07日 11:09
  • 5077

连接Linux服务器:Win免费SSH客户端工具

1Win免费SSH客户端工具a   作为一个Windows操作系统用户,如果想要连接Linux服务器来进行文件之间的传送,那么需要一个Secure Shell软件(简称SSH的)。实际上,S...
  • u010402372
  • u010402372
  • 2016年06月04日 18:31
  • 6359

windows使用ssh连接远程服务器

下载 https://openssh.en.softonic.com/download 下载 安装 一直下一步,安装完成 打开cmd 这样就安装成功了 连接非22端口 ...
  • sheepabc
  • sheepabc
  • 2018年01月06日 23:54
  • 24

windows服务器安装sftp 教程及注意事项

本教程是写给像我一样的菜鸟看的,本教程中的安装软件已经上传到我的资源,如有需要,可放心下载。 一:安装 1、双击下载好的freedsshd.exe程序进行安装,安装时默认下一步即可...
  • shutingwang
  • shutingwang
  • 2016年10月31日 14:05
  • 4914

windows 上搭建 sftp 服务器 --freesshd

linux 下 sftp 默认都会安装的, Windows 就没有了。网上搜的资料发现比较好用的是 freesshd,免费版中最好用的。 1,下载:http://www.freesshd.com/?c...
  • zhangliang_571
  • zhangliang_571
  • 2015年05月09日 10:57
  • 36463

putty windows ssh 连接 Linux

  • 2014年03月20日 21:40
  • 472KB
  • 下载

Java ssh 访问windows/Linux

工作中遇到的问题: Java code运行在一台机器上,需要远程到linux的机器同时执行多种命令。原来采用的方法是直接调用ssh命令或者调用plink的命令。 google下java的其他ssh...
  • carolzhang8406
  • carolzhang8406
  • 2011年09月08日 15:11
  • 8269

permission denied (publickey)解决方法

ssh出现permission denied (publickey)问题: 修改/etc/ssh/sshd-config文件. 将其中的PermitRootLogin no修改为yes ...
  • q3733353520
  • q3733353520
  • 2014年04月16日 09:17
  • 1875

Windows下通过SSH使用SharpSSH远程登录主机执行命令传输文件

1. 什么是SSH SSH 为建立在应用层和传输层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。SSH是每一台Linux电脑的标准配置,但是在windows...
  • dangercheng
  • dangercheng
  • 2014年01月03日 17:02
  • 33954
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java使用SSH远程访问Windows并执行命令
举报原因:
原因补充:

(最多只允许输入30个字)