想问问有三台主机,如何 ssh 到一台主机后再执行 exit 自动退出?

2023-03-22 21:20:00 +08:00
 summerlv

需求是这样的,我现在想编辑一个 sshgen.sh 脚本文件想自动配置三台主机能实现免密登录。

但是有一个问题是,如果当前机器的 /home/user/.ssh/ 目录不存在的话需要使用 [ ssh 主机 ip ] 一下给自动生成 .ssh 目录,但是又会连接到 ssh 到一台主机,在远程连接到一台主机后我区分是否当前主机并需要手动输入 exit 退出远程主机,这样会有点不方便。

所以我的问题是:如何在脚本中写好在 ssh 远程到一台主机后再自动执行 exit 退出到当前主机? 在自动化脚本 sshgen.sh 中如何写这样的命令?

比如我我执行脚本是这样的逻辑: sshgen.sh hadoop152 hadoop153 hadoop154

现在 hadoop152 /home/user/ 下没有 .ssh 目录 所以我在执行 sshgen.sh hadoop152 hadoop153 hadoop154 的时候 在 sshgen.sh 中有: for host in $@ do ssh $host ... done 的逻辑,我如何在 ssh $host 这条命令执行后怎样写可以自动退出 ssh $host 执行后登录到的其他主机?

1198 次点击
所在节点    程序员
13 条回复
piku
2023-03-22 21:26:36 +08:00
有没有一种可能,.ssh 可以从别处复制过来一份
piku
2023-03-22 21:27:25 +08:00
ssh 进程到后台,然后杀进程?
summerlv
2023-03-22 21:28:34 +08:00
@piku 怎么无痛退出啊?感觉直接杀掉进程有点不好呢?
ShineyWang
2023-03-22 21:32:21 +08:00
不能同时连三个主机吗?
开三个 tab 不就行了?
dode
2023-03-22 21:32:56 +08:00
Ansible
dode
2023-03-22 21:34:08 +08:00
ssh-copy-id 工具
luanjia
2023-03-22 21:34:14 +08:00
可以 ssh 到 localhost 再退出?
nightwitch
2023-03-22 21:52:42 +08:00
用 ssh-copy-id ,不用自己写脚本
cwcc
2023-03-22 22:19:48 +08:00
#!/bin/bash

hosts=(name@host.ip2 name2@host.ip2)

for a in $hosts
do
ssh-copy-id -i ~/.ssh/id_rsa.pub $a
done
summerlv
2023-03-22 22:42:05 +08:00
谢谢大家,我找到答案了,一开始没找到所以来问了
https://blog.csdn.net/PlatoWG/article/details/84618566

可以在脚本里这样执行 ssh $host "exit"
这样就可以不用为了自动生成 .ssh 文件而远程到另一台主机而无法退出了。
cnfczn
2023-03-22 22:49:47 +08:00
公司时不时就要给服务器配秘钥,还要禁用密码登录,以前写过一个半自动化脚本。ssh-copy-id 还是会要求输入密码的。后来就将就用了。
SinceJune
2023-03-23 13:18:44 +08:00
那我再教你一个小技能,没有互信关系的可以通过 expect 执行。
yinmin
2023-03-23 13:41:46 +08:00
生成.ssh 目录,可以直接 mkdir ~/.ssh ,不一定需要使用 ssh 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/926334

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX