sssh - 快速 ssh 登陆脚本

 原贴:http://linuxtoy.org/archives/sssh.html


sssh - 快速 ssh 登陆脚本

此 脚本对于那些需要经常 ssh 登陆远程服务器的朋友应该有点用处。尤其是需要中转服务器 ssh 2 次以上的。脚本功能包括:将服务器 IP 和密码保存于文本文件中 (明文保存,安全性要自己保证),方便登陆,支持多次 ssh 中转,支持服务器编码自动转换,支持某个用户名的通用密码。

使用方法:

最好将脚本保存在 PATH 变量包含的路径下,建议保存于 ~/bin 并确保此目录在 PATH 中。

编写 ~/.pass 文件,并执行 chmod 600 ~/.pass

安装 expect 包。

.pass 文件的写法:

  1. 最简单的,可以在文件中写下如下一行:

    name=hostA usernameA@IP-A passwordA

    就可以使用 sssh hostA 登陆此服务器了。

  2. 中转登陆:

    name=hostA usernameA@IP-A passwordA
    name-hostA=hostB usernameB@IP-B passwordB

    执行 sssh hostA hostB 就相对于先登陆 hostA,然后在 hostA 上登陆 hostB。同理,理论上可以中转 N 次,hostA->hostB->hostC->hostD……,嘿嘿……

  3. 使用通用用户名的密码:

    这是用于这样的例子:有 N 个服务器,都开通了一个通用用户名 (例如:view 用户,只有很低的权限),这些 view 用户的密码都是同一个,而且会定期同步修改。这种情况下,如果修改了 view 密码的话,.pass 文件就要修改 N 个密码了,为了避免这样的麻烦,可以使用通用用户名和密码功能:

    usualName view
    usualPSW password-of-view
    name=hostA view@IP-A
    name=hostB view@IP-B
    name=hostC view@IP-C

    这样就可以直接用 sssh hostA,sssh hostB 登陆了。可以看到,这里省略了第 3 列的密码字段。此法同样适用于多级登陆的服务器。

  4. 指定服务器使用的编码:

    usualName view
    usualPSW password-of-view
    name=hostA usernameA@IP-A passwordA gbk
    name=hostB view@IP-B | gbk

    在某行服务器的后面 (第 4 列),加上 gbk,就可以指明该服务器使用的是 gbk,登陆了以后不会出现乱码了。如果某行使用了通用用户名和密码的话,为了不致引起混乱,密码那列需要加个 | (竖线) 占位。

  5. 使用通用编码:

    usualCODING gbk

    加上此行,对于没有指定编码的服务器,将默认使用 gbk 编码。

下载:

由于脚本贴在这里会出现半角引号变全角的状况。所以,请直接在这里下载。

[撰文/bones7456]

署名 • 注明出处 • 非商业性使用

16 Comments

  1. 1 joe Commented @ 2008-07-11 1:24 pm

    在 804上运行 报如下错误:

    /home/joe/d/tools/bin/sssh: 10: [[: not found
    /home/joe/d/tools/bin/sssh: 14: [[: not found
    /home/joe/d/tools/bin/sssh: 18: [[: not found
    /home/joe/d/tools/bin/sssh: 18: -r: not found
    密码文件不存在或不可读

  2. 2 nowa Commented @ 2008-07-11 1:25 pm

    mac下测试可以的,一直想要一个这样的东西,非常感谢!

  3. 3 ANTIQQ Commented @ 2008-07-11 3:49 pm

    谢谢,正用得着。

    joe:
    第一行
    #!/bin/sh
    改成:
    #!/bin/bash

  4. 4 feiy Commented @ 2008-07-11 4:01 pm

    这个shell里面编码转换用的是luit,要转换编码得安装个luit.

  5. 5 heihei Commented @ 2008-07-11 4:02 pm

    或者把[[换成[
    -r 那个注释掉就好了,只要你保证.pass存在且可读

  6. 6 bones7456 Commented @ 2008-07-11 4:21 pm

    joe:
    我也是8.04,但是装上后就马上把 /bin/sh 指向 bash 了,所以没发现你那问题,呵呵,不好意思
    feiy:
    貌似ubuntu里 luit 是默认安装的?没装luit的话,也会给出提示的,嘿嘿

  7. 7 路过 Commented @ 2008-07-11 6:38 pm

    汗,要自动登陆怎么不用公/私钥认证?安全又方便,哪用得着expect这么麻烦。

  8. 8 雪梨 Commented @ 2008-07-11 9:00 pm

    对了,请问 Toy,为何英文引号会自作主张变成中文引号?

  9. 9 Toy Commented @ 2008-07-11 10:06 pm

    @雪梨:不清楚,可能是 wp 的问题,我再看看。

  10. 10 snowrui Commented @ 2008-07-12 12:18 am

    我可以转一下吗?就是想记录一下以后用。谢谢

  11. 11 (转)sssh - 快速 ssh 登陆脚本,记录一下 - 瑞雪 Pingbacked @ 2008-07-12 12:20 am

    [...] Toy Posted in Apps, ScriptsRSSTrackback <!– google_ad_client = “pub-9432205671574187″; //LT, 300×250 google_ad_slot = [...]

  12. 12 Toy Commented @ 2008-07-12 11:20 am

    @snowrui:在遵循 CC 的前提下,可自由转载,无须知会本站。

  13. 13 joecen Commented @ 2008-07-12 3:10 pm

    use key and ssh-agent is the best.

  14. 14 Ai.Freedom Commented @ 2008-07-12 4:24 pm

    @toy
    使用这个WP的插件, Quotmarks replacer, 能解决引号的问题.
    这个插件是个中国人开发的, 下载地址如下, 我的Blog就使用了这个插件.
    http://sparanoid.com/blog/quotmarks-replacer-21/

  15. 15 Toy Commented @ 2008-07-13 1:44 pm

    @Ai.Freedom: 感谢推荐 :)

  16. 16

你可能感兴趣的:(ssh,服务器,脚本,Google,Path,Comments)