com.jcraft.jsch.JSchException:java.net.ConnectException:连接被拒绝:连接

2024-04-02

我知道有重复的 >>> 从重复的 >>> 复制,只要您的本地计算机有一个正在运行的 SSH 服务器

它说“只要你的本地机器有运行的 SSH 服务器”,但我不知道如何运行 SSH 服务器。我打开我的腻子(双击它)(不确定这是否意味着 SSH(?腻子?)服务器(?)正在运行...怀疑所以...

我对套接字编程真的很陌生。我正在利用 JSch (http://www.jcraft.com/jsch/ http://www.jcraft.com/jsch/)尝试连接到远程服务器(后期) 目前,这是我使用的代码,我尝试连接到我的本地计算机并执行命令(确切地说是 ls )来进行测试。但是,我一直点击连接被拒绝。我用谷歌搜索,注意到有一些文章提到“让服务器监听”,但我不知道它是什么意思。请查看我的代码,如下所示。

import java.awt.event.*;

import javax.swing.*;

import java.awt.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Properties;

import com.jcraft.jsch.*;



class SwingWorkerExample {

    JTextField hostField;
    JTextField userNameField;
    JTextField passwordField;
    JPanel panel;


    public SwingWorkerExample() {
        JPanel p = panel = new JPanel(new GridLayout(0,2));
        hostField = new JTextField(20);
        userNameField = new JTextField(20);
        passwordField = new JPasswordField(20);
        JButton testButton = new JButton("connect!");
        testButton.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent ev) {
                    testConnectionButtonActionPerformed(ev);
                }
            });
        p.add(new JLabel("host:"));
        //127.0.0.1
        p.add(hostField);
        p.add(new JLabel("user:"));
        //mycomputerusername
        p.add(userNameField);
        p.add(new JLabel("password:"));
        //mycomputerpassword
        p.add(passwordField);
        p.add(testButton);
    }

    public JPanel getPanel() {
        return panel;
    }

    private void testConnectionButtonActionPerformed(ActionEvent evt) {

        SwingWorker sw = new SwingWorker(){

                protected Object doInBackground() throws Exception {
                    try {
                        JSch jsch = new JSch();

                        String host = hostField.getText();
                        String username = userNameField.getText();
                        String password = passwordField.getText();

                        Session session = jsch.getSession(username, host);
                        session.setPassword(password);
                        session.setConfig("StrictHostKeyChecking", "no");

                        session.setTimeout(20000);
                        System.out.println("Connecting to server...");
                        session.connect();

                        return session;
                    }
                    catch(Exception ex) {
                        ex.printStackTrace();
                        throw ex;
                    }
                }

                public void done(){
                    try {
                        System.out.println(get());
                    } catch (Exception ex) {
                        ex.printStackTrace();
                    }
                }
            };

        sw.execute();

    }


    public static void main(String[] egal) {
        EventQueue.invokeLater(new Runnable(){public void run() {
            SwingWorkerExample ex = new SwingWorkerExample();
            JFrame f = new JFrame("bla");
            f.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
            f.setContentPane(ex.getPanel());
            f.pack();
            f.setVisible(true);
        }});
    }

    public void remoteLs() throws JSchException, IOException {
        JSch js = new JSch();
        Session s = js.getSession("kellyseo", "192.168.0.103", 22);
        s.setPassword("S9031808z");
        Properties config = new Properties();
        config.put("StrictHostKeyChecking", "no");
        s.setConfig(config);
        s.connect();

        Channel c = s.openChannel("exec");
        ChannelExec ce = (ChannelExec) c;

        ce.setCommand("ls -l");
        ce.setErrStream(System.err);

        ce.connect();

        BufferedReader reader = new BufferedReader(new InputStreamReader(ce.getInputStream()));
        String line;
        while ((line = reader.readLine()) != null) {
          System.out.println(line);
        }

        ce.disconnect();
        s.disconnect();

        System.out.println("Exit code: " + ce.getExitStatus());

      }



      public void remoteMkdir() throws JSchException, IOException {
        JSch js = new JSch();
        Session s = js.getSession("myusername", "myremotemachine.mycompany.com", 22);
        s.setPassword("mypassword");
        Properties config = new Properties();
        config.put("StrictHostKeyChecking", "no");
        s.setConfig(config);
        s.connect();

        Channel c = s.openChannel("exec");
        ChannelExec ce = (ChannelExec) c;

        ce.setCommand("mkdir remotetestdir");
        ce.setErrStream(System.err);

        ce.connect();

        BufferedReader reader = new BufferedReader(new InputStreamReader(ce.getInputStream()));
        String line;
        while ((line = reader.readLine()) != null) {
          System.out.println(line);
        }

        ce.disconnect();
        s.disconnect();

        System.out.println("Exit code: " + ce.getExitStatus());

      }

      public void remoteCopy() throws JSchException, IOException, SftpException {
        JSch js = new JSch();
        Session s = js.getSession("myusername", "myremotemachine.mycompany.com", 22);
        s.setPassword("mypassword");
        Properties config = new Properties();
        config.put("StrictHostKeyChecking", "no");
        s.setConfig(config);
        s.connect();

        Channel c = s.openChannel("sftp");
        ChannelSftp ce = (ChannelSftp) c;

        ce.connect();

        ce.put("/home/myuser/test.txt","test.txt");

        ce.disconnect();
        s.disconnect();    
      }
}

顺便说一句,我使用命令提示符 ping 127.0.0.1 没问题,但如果我使用 telnet 127.0.0.1,它会显示无法打开与主机的连接(我打开了 putty(?双击?),在端口 23 上:连接失败。 并且,SSH = PUTTY ...对吗? (我无法在命令提示符中使用“ssh”命令)

链接: 1)http://sourceforge.net/p/jsch/mailman/message/31745775/ http://sourceforge.net/p/jsch/mailman/message/31745775/

and 2) http://javarevisited.blogspot.sg/2013/02/java-net-ConnectException-Connection-refused.html http://javarevisited.blogspot.sg/2013/02/java-net-ConnectException-Connection-refused.html

and 3) http://www.jcraft.com/jsch/examples/ http://www.jcraft.com/jsch/examples/和 4)使用 JSch 通过 SSH 运行命令 https://stackoverflow.com/questions/2405885/any-good-jsch-examples和 5)我们可以使用 JSch 进行基于 SSH 密钥的通信吗? https://stackoverflow.com/questions/4932005/can-we-use-jsch-for-ssh-key-based-communication

而且...提前致谢!!

哦,还有http://www.ganymed.ethz.ch/ssh2/ http://www.ganymed.ethz.ch/ssh2/(JSch 的替代方案......欢迎任何建议!)但是当我尝试运行该示例时,它说没有 main。哪个..我不知道>.

顺便说一句,我尝试https://serverfault.com/questions/185153/free-public-ssh-server-for-testing- Purposes https://serverfault.com/questions/185153/free-public-ssh-server-for-testing-purposes对于服务器,但是...我不知道地址、用户名和密码是什么。 (我也有一个http://sdf.org http://sdf.org帐户新创建的但当我尝试连接到它时,它说未知主机。供参考!)

忘了提及,我使用的是 Windows 7,并且“yum”不是我的命令提示符中的命令...


您正在尝试通过 SSH 协议连接到本地主机。对于 JSCH,这并不完全是套接字编程,但您的问题与套接字编程有关。

从本质上讲,您的问题是您的程序正在尝试连接到未打开的端口,特别是在本例中为端口 22。您没有 SSH 服务器,因此您的 SSH 客户端无法执行任何操作。您正在给没有电话的人打电话。

要解决此问题,您需要找到一台运行 ssh 的测试服务器来进行开发,或者在本地 PC 上安装 ssh 服务器。对于 Windows 盒子,你最好的选择是cygwin https://www.cygwin.com/,这将允许您模拟 posix 系统并在本地计算机上运行 SSHD。谷歌搜索 cygwin 和 sshd 将为您提供如何设置的示例。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

com.jcraft.jsch.JSchException:java.net.ConnectException:连接被拒绝:连接 的相关文章

随机推荐

  • Knockoutjs 当父级可观察到的更改时更新子级

    当使用 KnockoutJs 父可观察更改时 如何触发子元素的更新 在我的应用程序中 我正在构建一个翻译工具 我有一个淘汰赛类 表示某些文本的原始 默认 值 以及翻译后的子项的集合 function ParentObject id defa
  • CSS 动画 - 动画缓慢且抖动

    我想问一下 这段CSS代码有什么问题吗 它用于动画背景图像 缩放效果 media min width 1000px anim on background size 110 110 background position center cen
  • 在 Golang 中访问上传的文件

    我在访问使用 golang 上传的文件时遇到问题 我对这门语言真的很陌生 并且已经进行了多次尝试 在网上也找不到任何答案 我究竟做错了什么 在此代码中 我从未到达列出已上传文件数的块 func handler w http Response
  • 野田时间:Period.Between() 返回错误的天数?

    鉴于下面的代码片段 为什么最后四个输出周期相同 我希望这些行的天数部分为 4 3 2 1 而不是 4 4 4 4 这是一个错误还是我遗漏了一些明显的东西 已经很晚了 我也累了 所以很可能是后者 我使用的是Noda Time 1 2 0 fo
  • 阻止 robots.mouseMove 生成​​ MouseEvent?

    我有一个 3D 游戏 每次移动光标时 我希望它重置到中间 问题是 robots mouseMove 调用 MouseEvent 它确实有意义 并重置位置 所以我无法旋转 谢谢你 我更喜欢如下代码 component removeMouseL
  • 如何重写对象ArrayList的ToString方法?

    class Person public String firstname public String lastname Person p1 new Person Jim Green Person p2 new Person Tony Whi
  • 了解 STG

    GHC 的设计基于 STG 它代表 无脊椎 无标签的 G 机器 现在G machine显然是 图缩减机 的缩写 它定义了惰性是如何实现的 未评估的 thunk 存储为表达式树 执行程序涉及reducing这些都归结为正常形式 Atree是一
  • 将字符串编码为十六进制

    我有将字符串转换为十六进制的函数 function encode str str encodeURIComponent str split join return str toLowerCase example 守护村子 alert enc
  • 在vim中搜索并替换选定的文件路径

    我经常处理内部充满文件路径的文件 我希望能够在可视模式下快速选择我的文件路径并将其替换为其他文件路径 例如我有这样的文件 balvadsd mnt Windows Documents and Settings stuff file exe
  • VBA - CallByName 不接受变体参数

    解决方案 只需在 CallByName 语句中的 Value 两边加上括号即可强制对其求值 Ex CallByName MobClass TargetData vbLet Value 感谢来自另一篇文章的 Rory 我可能会删除该文章 因为
  • 使用蒙特卡罗模拟计算 π 的局限性

    我问过一个与此非常相似的问题 所以我会在最后提到以前的解决方案 我有一个website https monte carlo sjorsvanholst nl使用客户端的 CPU 计算 同时将其存储在服务器上 到目前为止我已经得到 701 7
  • 在客户端 SAPUI5 中仅过滤 sap.m.List

    我正在寻找仅在客户端过滤列表 并让其他类似表等在服务器端过滤 是否有任何选项可以添加到列表中以在客户端进行过滤 问候 您可以使用操作模式v2 ODataModel 的参数 该参数可以设置为模型级别 https openui5 hana on
  • 如何应用 django 补丁

    我想对这个错误应用补丁 http code djangoproject com ticket 13095 http code djangoproject com ticket 13095 但我以前从未这样做过 我不知道从哪里开始 谁能给我指
  • 如何使用 Spring JPA 仅获取实体的选定属性?

    我在我的项目中使用 Spring Boot 1 3 3 RELEASE 和 Hibernate JPA 我的实体看起来像这样 Data NoArgsConstructor Entity Table name rule public clas
  • 读取 jar 文件中的 zip 文件

    之前我们的 Web 应用程序中有一些 zip 文件 我们想要解析 zip 文件中的特定文本文档 这不是问题 URL url getClass getResource zipfile ZipFile zip new ZipFile url g
  • 序列或批处理项目 DataGridView

    我有一个包含 940000 行的大型 DataGridView 哎呀 通过解析 csv 文件填充 DataGridView 有一个名为序列的列 编号为 1 到 940000 我试图做的是重新编号序列以溢出到序列中DataGridView 中
  • Angular Reactive Form 提交并明确验证

    我有一个反应形式
  • 如何监控SciPy.odeint的进程?

    SciPy 可以通过 scipy integrate odeint 或其他包求解 ode 方程 但它在函数完全求解后给出结果 但是 如果 ode 函数非常复杂 程序将花费大量时间 一两天 才能给出整个结果 那么我如何监控求解方程的步骤 当方
  • 将动态添加到 IList 失败

    在下面的代码示例中调用l Add s and c Add s 是成功的 但对于泛型时会失败IList
  • com.jcraft.jsch.JSchException:java.net.ConnectException:连接被拒绝:连接

    我知道有重复的 gt gt gt 从重复的 gt gt gt 复制 只要您的本地计算机有一个正在运行的 SSH 服务器 它说 只要你的本地机器有运行的 SSH 服务器 但我不知道如何运行 SSH 服务器 我打开我的腻子 双击它 不确定这是否