dsh:分布式 shell
[撰文/hmy]
dsh 简单说来就是可以同时通过 ssh 来控制多台机器。
在 dsh 的配置文件里面可以把机器分组,然后在 dsh 的选项里面指定对那个组进行操作,比如
dsh -g www -c “w”
将对所有输入 www 组的机器执行 w 命令。
执行命令可以并行执行,也可以串行执行。并行执行是把命令同时发给所有机器,串行执行是一个一个机器的执行。等上一个机器执行完了再执行下一个机器。
这个命令对维护多个机器的同学应该有用。不用老是用 for 循环了。
Home » dsh:分布式 shell
[撰文/hmy]
dsh 简单说来就是可以同时通过 ssh 来控制多台机器。
在 dsh 的配置文件里面可以把机器分组,然后在 dsh 的选项里面指定对那个组进行操作,比如
dsh -g www -c “w”
将对所有输入 www 组的机器执行 w 命令。
执行命令可以并行执行,也可以串行执行。并行执行是把命令同时发给所有机器,串行执行是一个一个机器的执行。等上一个机器执行完了再执行下一个机器。
这个命令对维护多个机器的同学应该有用。不用老是用 for 循环了。
好东西
我刚搞完……
用for来弄的……very nasty
toy早点介绍就好了……
这个…
把机器的ssh功能打开,用xshell就可以实现这个功能了
可以多部同时发送同一个命令
xshell有home/free版本
@slackcode
xshell 好像还没听说过,能提交一个文章详细推荐下吗,呵呵,有什么好东西别藏着揶着,借toy这个宝地推荐一下。帮助一些人少走弯路。
见识了,我用不到。
dsh是怎么避免每台机器上的口令输入的呢? ssh-agent还是?
@giv
ssh用证书登录,不用密码。证书登录比密码安全很多。
@hmy
你的意思是说用无密码保护的证书?
是这样的, 我们一般都是用有密码保护的证书, 为了便于在机群上工作, 通常是开一个ssh-agent, 然后用ssh-add添加一个证书, 这样ssh到其他服务器时就不用再输入证书密码了
我想知道dsh是怎么做来保证安全性的?
恩,dsh是利用ssh,安全性还是ssh来保障,我也是用的ssh-agent,不过加了一个keychian软件,这个软件可以避免重复输入ssh证书的密码。
@hmy
噢, 这样, 谢谢
[...] 同 dsh 类似,通过 ssh 同时给多台机器发命令,不过 cssh [...]
请问知不知道有没有反向的SSH?
通常是在内网用ssh连外网机器,假如现在在外网,需要登录到内网机器上测试一些东西,就不行了。想过自己实现一个反向的ssh,在外网机器上开一个服务器,在内网开一个客户端,连上外网的服务器,如果要控制的话,就在外网机器上的服务器shell中执行。如果有现成的话就好了。
@可冰
假设外网ip 2.2.2.2,内部ip 192.168.0.1
内部机器先
ssh -R 222:127.0.0.1:22 root@2.2.2.2
然后在2.2.2.2这个机器上执行
ssh -p 222 root@127.0.0.1
就ok了
如果你外部机器不是常开着,你可以让需要在内部机器执行的哪个命令一直循环执行.
谢谢hmy!
不过我没有成功。
我在我的机器上以root用户执行
ssh -R 20081:127.0.0.1:20083 username@servername
会有提示Warning: remote port forwarding failed for listen port 20081
我想可能是在外网机上的权限不够吧。
然后用内网机试了一下
ssh -R 20081:127.0.0.1:20083 username@local_servername
好像是成功了,但在local_servername上执行
ssh -p 20081 root@127.0.0.1 -v
会有如下提示
OpenSSH_3.9p1, OpenSSL 0.9.7a Feb 19 2003
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to 127.0.0.1 [127.0.0.1] port 20081.
debug1: Connection established.
debug1: permanently_set_uid: 0/0
debug1: identity file /root/.ssh/identity type -1
debug1: identity file /root/.ssh/id_rsa type -1
debug1: identity file /root/.ssh/id_dsa type -1
ssh_exchange_identification: Connection closed by remote host
上网查了下,也没能解决这个问题,它是否需要其它额外的设置?