ssh连接的奇怪问题

问题描述

小弟最近遇到一个头疼万分的问题,修改一个程序,具体功能是先从本地连接到服务器A,然后再从A连接到B,然后再投入命令执行,比如ls。原先都是telnet连接,现在按照要求改成都是ssh2连接,先连接A,使用的是jsch-0.1.39.jar,/***sshconnect*@paramuser*@paramhost*@parampwd*@paramcommand*/publicvoidconnectSshByJsch(Stringuser,Stringhost,Stringpwd,Stringcommand)throwsException{jsch=newJSch();//user&hostsession=jsch.getSession(user,host);//passwordsession.setPassword(pwd);session.setUserInfo(MyUserInfo);java.util.Propertiesconfig=newjava.util.Properties();config.put("StrictHostKeyChecking","no");session.setConfig(config);session.connect();channel=session.openChannel("shell");channel.connect();//Getinputandoutputstreamreferencesin=channel.getInputStream();//out=newPrintStream(channel.getOutputStream());}

然后在A上投入命令sshusername@hostB接着password这个时候出现类似控制台的界面。然后由用户输入命令比如ls问题出来了,A与B都可以成功连接上,然后等待操作者输入命令,这时报错连接失败,在cmd命令下sshA再sshB却不会有这问题。最奇怪的是连接成功后,在内部投入命令却可以实施,我曾经试过20次“ll”都没断开ireader=newInputStreamReader(in);intintChar=ireader.read();//这里结果intChar=-1,表明连接已经丢失

但是telnet时候却没有任何问题。。。。是什么原因呢?inputStream问题?还是jsch的session.connect();channel.connect()问题望各位高手解答。

解决方案

解决方案二:
这个没见过耶。。。问个问题你这个是连数据库还是连什么?没太懂你的意思!数据库好像用工具配置好就行了
解决方案三:
帮顶
解决方案四:
引用楼主lunchstrike的帖子:

小弟最近遇到一个头疼万分的问题,修改一个程序,具体功能是先从本地连接到服务器A,然后再从A连接到B,然后再投入命令执行,比如ls。原先都是telnet连接,现在按照要求改成都是ssh2连接,先连接A,使用的是jsch-0.1.39.jar,Javacode/***sshconnect*@paramuser*@paramhost*@parampwd*@paramcommand*/publicvoidconnectSshByJsch(Stringuse…

具体功能是先从本地连接到服务器A,然后再从A连接到B,然后再投入命令执行?这个为什么要这样呢,可以简化,为什么还要再次连接到B,然后投入命令执行呢
解决方案五:
帮顶下!
解决方案六:
帮顶
解决方案七:
引用3楼yinyuan1987的回复:

引用楼主lunchstrike的帖子:小弟最近遇到一个头疼万分的问题,修改一个程序,具体功能是先从本地连接到服务器A,然后再从A连接到B,然后再投入命令执行,比如ls。原先都是telnet连接,现在按照要求改成都是ssh2连接,先连接A,使用的是jsch-0.1.39.jar,Javacode/***sshconnect*@paramuser*@paramhost*@parampwd*@paramcommand*/public…

很多用户环境不允许直连。
解决方案八:
楼主,这种问题,仅通过你的描述要找到原因可能比较复杂。如果你怀疑所使用的包有问题,你可以换一下:http://www.trilead.com/Download/Trilead_SSH_for_Java/我过去几个项目都用这个,挺好用的。
解决方案九:
今天仔细研究了一下,发现是jsch的session.java的run方法里的这段代码try{channel.write(foo,start[0],length[0]);Stringt=newString(foo,start[0],length[0]);}catch(Exceptione){try{channel.disconnect();//这里调用了disconnect方法//抛出的Exception是PipedInputStream的checkStateForReceive()方法的//if(readSide!=null&&!readSide.isAlive()){//thrownewIOException("Readenddead");}catch(Exceptionee){}break;}

对于IOException("Readenddead");有什么好的解决方法么,向各位求教
解决方案十:
补充说明:out=newPrintStream(channel.getOutputStream());

write方法里out.println(value);out.flush();//这里会走到8楼的代码里

解决方案十一:
帮顶
解决方案十二:
学习~~~~~
解决方案十三:
学习了!
解决方案十四:
ireader=newInputStreamReader(in);in这个参数能确定不是空的吗
解决方案十五:
看看,帮顶
解决方案:
逛逛
解决方案:
学习,帮顶
解决方案:
想学习串口,路过关注

时间: 2024-08-01 03:57:11

ssh连接的奇怪问题的相关文章

请问ubuntu16.04下ssh连接到远程服务器出现奇怪的乱码

问题描述 请问ubuntu16.04下ssh连接到远程服务器出现奇怪的乱码 但是在ubuntu下的虚拟机下的centos下连接是不会出现乱码的, 而在mysql下的数据库下的都不会乱码,请问这是怎么回事,谢谢.

SSH连接速度慢的解决方法

问题 使用SSH连接的时候却很慢,大概要等半分钟甚至更久.如何解决这个问题? 解决办法 这样的问题,最为常见的原因是SSHD会使用DNS查找访问客户端的主机名,如果DNS不可用或者没有相关记 录,就会造成延迟. 解决这个问题有两方面: 一.修改DNS服务器设置: vi /etc/resolv.conf 二.修改SSHD配置文件并重启SSHD服务: sed -i 's/#UseDNS yes/UseDNS no/g' /etc/ssh/sshd_config sed -i 's/GSSAPIAut

python下paramiko模块实现ssh连接登录Linux服务器

  本文实例讲述了python下paramiko模块实现ssh连接登录Linux服务器的方法.分享给大家供大家参考.具体分析如下: python下有个paramiko模块,这个模块可以实现ssh登录linux服务器,下面贴出代码,注意,我在centos5.6下,python2.6.5,paramiko-1.7的版本下测试成功. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #!/usr/bin/env python import paramiko hostname='17

Python实现建立SSH连接的方法

  本文实例讲述了Python实现建立SSH连接的方法.分享给大家供大家参考.具体实现方法如下: 我需要实现一个Windows下远程连接到SSH服务器执行命令的功能,所以就在网上找资料.我的环境是:Windows7 64位,Python 2.7 32位.按照网上的说法,需要下载pycrypto和paramiko两个模块进行安装.最后下载的版本是pycrypto2.3和paramiko1.7.6. 安装过程也比较简单,先安装pycrypto后安装paramiko,解压后在命令提示符下切换到解压后的

ssh连接失败,排错经验

一.场景描述 ssh连接服务器,发现连接失败,但是对应服务器的ip能够ping通. 场景: [root@yl-web ~]# ssh root@10.1.101.35 ssh_exchange_identification: read: Connection reset by peer [root@yl-web ~]# ping 10.1.101.35 PING 10.1.101.35 (10.1.101.35) 56(84) bytes of data. 64 bytes from 10.1.

远程SSH连接服务与基本排错

为什么要远程连接Linux系统?? 在实际的工作场景中,虚拟机界面或物理服务器本地的窗口都是很少能够接触到的,因为服务器装完系统后,都要拉到IDC机房托管,如果是购买了云主机,更碰不到服务器本地显示器了,此时,只能通过远程连接的方式管理Linux系统.因此,在装好linux系统后,学习Linux运维的第一步应该是配置好客户端软件远程(通过ssh软件进行连接)连接Linux系统进行管理   telnet连接服务器是明文的,非加密的; 默认为23端口 SSH连接服务器是加密的连接; 默认为22端口

python使用paramiko模块ssh连接远程主机,环境变量问题

问题描述 python使用paramiko模块ssh连接远程主机,环境变量问题 想写个脚本去远程维护主机,执行相应命令,但是通过python使用paramiko模块ssh连接远程主机,环境变量不跟随用户,通过export环境变量也不起作用, #!/usr/bin/python import paramiko,fileinput ssh=paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) fo

【解决】Ubuntu下使用SSH连接CentOS系统很慢

这几天在Ubuntu下使用SSH连接centos系统,发现连接很慢.建议一个连接大约需要30s.很是坑爹,如下: 后来查询相关资料,发现这个是Ubuntu的一个Bug.解决此Bug很简单,只需要修改/etc/ssh/ssh_config即可.如下: sudo vi /etc/ssh/ssh_config 把ssh_config配置文件中GSSAPIAuthentication由原来的yes修改为no即可. 然后再次使用ssh连接centos就很快了. 如果以后再遇到类似的问题,可以从以下几个方面

ssh连接失败,排错经验(转)

一.场景描述 ssh连接服务器,发现连接失败,但是对应服务器的ip能够ping通. 场景: [root@yl-web ~]# ssh root@10.1.101.35 ssh_exchange_identification: read: Connection reset by peer [root@yl-web ~]# ping 10.1.101.35 PING 10.1.101.35 (10.1.101.35) 56(84) bytes of data. 64 bytes from 10.1.