首页 > computer, linux, study_note > ubuntu下实现ssh自动重连

ubuntu下实现ssh自动重连

2009年12月19日 T 发表评论 阅读评论

作个笔记,免得自己以后忘了。相关内容网上比比皆是,原始出处,已经找不到了。如果你不知道自己为什么需要看着篇文章,那你就不需要看下去了。好,我们开工。

ubuntu下使用ssh的方法很多:

  1. openssh。一般linux系统都默认安装,直接在终端(terminal)下使用即可,可以参阅我以前写的一些东西,这里
  2. PuTTY。图形化界面,无须命令行,更便于新手使用。

但两者都有一个明显的缺点:无法实现ssh断线后的自动重连。openssh是终端命令行模式,断了只能重打命令;PutTTY则自己明确说明了一点:为了安全问题不保存密码,每次都要用户自己输入。初衷是很好,但从实际应用的角度,ssh掉线的频率比较高,每次都要重输是很累的。所以更好的解决办法是:expect

首先要获取该程序,终端(terminal)下输入:

sudo apt-get install expect

完成后随便新建一个文本,这里暂定名称是:sshgfw。可以直接在终端(terminal)下输入:

sudo gedit sshgfw

在文本中粘粘如下内容:

#!/usr/bin/expect
set timeout 60

spawn /usr/bin/ssh -D 7070 -p port -l user yourserver.com
# 这里的port为你远端主机的端口名,一般为22,有变动的话一般空间商会告知你,user为你自己的用户名,yourserver.com为你自己的服务器域名或ip
expect {
"password:" {
send "password\r"
#这里的第二个password改为你自己的密码
}
}
interact {
timeout 60 { send " "}
}

再加上可执行权限,我们仍然在终端(terminal)下执行:

chmod a+x sshgfw

如果你严格的按照我所说的做下来,那么现在在直接终端(terminal)下输入:

./sshgfw


脚本就应该自动运行起来了。现在这个脚本应该是在你的帐户下,多帐户操作的话也可以把这个文件复制到 /usr/local/bin 或 /usr/bin 等目录下,以方便本机所有用户都可以快捷的使用。


以上内容参考了互联网上的相关资料,但也经过自己的实际操作,略作改动。如还有问题请提出(不保证能解决。。。)。

好了,准备收工。以twitter上看到的一句话作结尾,也不是什么惊世骇俗的名人名言,但很中肯,希望大家引以为鉴,是@yurii_yu说的:

“最好不要在自己blog上转贴技术文章,尤其是没经过验证的,最近几次查资料(尤其中文的问题)都搞到头大:原文有错误,转贴的人根本不尝试就转贴了,搜索结果前若干页都是同一篇文章,无一可行,这就是@tinyfool说的信息退化”

分类: computer, linux, study_note 标签: , , ,
  1. MC柯
    2009年12月19日20:06 | #1

    这个方法,我很早以前就知道了,但是效果还是不佳.

  2. 2009年12月20日00:59 | #2

    技术活是寂寞的

  3. 2009年12月20日01:26 | #3

    @MC柯
    具体说明?你觉得怎么样算效果好?

  4. 2009年12月21日23:07 | #4

    这几天真冷啊,网上逛一逛暖暖身,呵呵

  5. 2009年12月22日16:48 | #5

    还没用过SSH呢哈哈

  6. 2009年12月23日10:00 | #6

    好,这个好,学习了,赞一个!

  7. kimi
    2009年12月23日12:59 | #7

    其实我想说。。ssh的配置文件就有发送空包的选项。。
    汗~

  8. 2009年12月23日13:06 | #8

    @kimi
    是吗?那就是学艺不精了。。

  9. transtone
    2010年1月7日12:59 | #9

    expect是个tck/tk软件,安装它必须安装tck这个鬼东西。应该完全可以用pexpect来代替的。pxssh也很好用呀。

  10. 2010年1月7日13:18 | #10

    @transtone
    ubuntu下好像不用管那么多,相关软件要不就是默认安装了,要不就是装expect时附带装了,反正我弄的时候没啥问题。

  11. 2010年1月22日22:34 | #11

    也算不错咯。

  12. 2010年6月10日17:03 | #12

    自己写个脚本每隔1分钟检查一次,这样来得比较简单

  13. 2010年6月15日07:10 | #13

    请教博主 ,有没有方法可以开机直接启动连接?

  14. 2010年6月21日21:52 | #14

    @superz
    暂时还没想过这个问题,应该能实现,不过我现在不知道该怎么做。。。

  1. 2009年12月19日19:11 | #1
注意: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。使用'@all ',将会将评论发送给之前所有其它评论者。请务必注意user必须和评论者名相匹配(大小写一致)。