免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 8344 | 回复: 14

请教linux客户端ssh登录relay server后,自动ssh登录目标服务器的方法 [复制链接]

论坛徽章:
0
发表于 2011-09-28 11:22 |显示全部楼层
网络结构如下

linux client ---> relay server ---> target server
    C         --->      R        --->    S

C无法直接登录S,只能通过R跳转

但是
1、R的环境不是完整的Linux Shell环境,登录后,只能执行ssh命令,没有其他权限
2、R的ssh server设置禁用了tcp tunnel





希望做一个脚本,运行后能自动登录R,然后自动登录S,之后等待用户操作

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
发表于 2011-09-28 12:43 |显示全部楼层

  1. #! /bin/bash
  2. # \
  3. exec expect $0 ${1+"$@"}
  4. spawn ssh relaysever -u rsuser
  5. expect "*assword: "
  6. send "rspasswd\r"
  7. expect "* "
  8. send "uname -a\r"
  9. expect "* "
  10. send "ssh targetserver -u tgsuser \r"
  11. expect "*assword: "
  12. send "tgspasswd\r"
  13. expect "* "
  14. send "uname -a\r"
  15. interact
复制代码

论坛徽章:
0
发表于 2011-09-28 14:09 |显示全部楼层
这个expect的例子,经过修改能够达到目的了
但是
  1. exec expect $0 ${1+"$@"}
复制代码
  1. ${1+"$@"}
复制代码
没看懂 能否解释下

论坛徽章:
0
发表于 2011-09-28 14:14 |显示全部楼层
另外一个问题,在这个结构下,是否可以通过R把本地的文件传输到S上

当前考虑到一个比较笨拙的方法,本地文件进行base64编码,然后作为expect脚本的一部分写入目标服务器,之后在服务器上进行解码

有没有更加高效的方法?

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
发表于 2011-09-28 14:50 |显示全部楼层
本帖最后由 rdcwayx 于 2011-09-28 14:52 编辑

删了,没看到已经禁止了tunnel

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
发表于 2011-09-28 16:53 |显示全部楼层
另外一个问题,在这个结构下,是否可以通过R把本地的文件传输到S上

当前考虑到一个比较笨拙的方法,本地 ...
net_robber 发表于 2011-09-28 14:14



    uuencode以后直接用expect传嘛
..........
send "Rpasswd\r"
.........
send "Tpasswd\r";#已经连接到目标机器
  1. expect {$ }
  2. set FD [open "|uuencode File2transfer -"]
  3. send "uudecode >savefile\r"
  4. sleep 1
  5. send [read $FD]
  6. send \004
  7. expect {$ }
  8. interact
复制代码

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
发表于 2011-09-28 16:56 |显示全部楼层
这个expect的例子,经过修改能够达到目的了
但是中没看懂 能否解释下
net_robber 发表于 2011-09-28 14:09



    ${1+"$@"}
看置顶的13问

论坛徽章:
0
发表于 2011-09-30 11:04 |显示全部楼层
expect子命令,set的用法,man手册中找不到阿
文档去哪里找??

uuencode这里是需要用base64之类的变法方式替换,还是expect子命令的一部分??

论坛徽章:
0
发表于 2011-09-30 11:10 |显示全部楼层
昨天完成了相关下载操作,实现思路如下

1、log_user 0
2、login R
3、login S
4、log_file -a XXX.tmp
5、base64 src file #store in XXX.tmp
6、decode XXX.tmp

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
发表于 2011-09-30 12:32 |显示全部楼层
expect子命令,set的用法,man手册中找不到阿
文档去哪里找??

uuencode这里是需要用base64之类的变法 ...
net_robber 发表于 2011-09-30 11:04



    http://wiki.tcl.tk
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会,7折限时优惠重磅来袭!
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。

限时七折期:2019年8月31日前


----------------------------------------

大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP