
需求是这样的,我现在想编辑一个 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 执行后登录到的其他主机?
1 piku 2023 年 3 月 22 日 via Android 有没有一种可能,.ssh 可以从别处复制过来一份 |
2 piku 2023 年 3 月 22 日 via Android ssh 进程到后台,然后杀进程? |
4 ShineyWang 2023 年 3 月 22 日 via Android 不能同时连三个主机吗? 开三个 tab 不就行了? |
5 dode 2023 年 3 月 22 日 via Android Ansible |
6 dode 2023 年 3 月 22 日 via Android ssh-copy-id 工具 |
7 luanjia 2023 年 3 月 22 日 via Android 可以 ssh 到 localhost 再退出? |
8 nightwitch 2023 年 3 月 22 日 via Android 用 ssh-copy-id ,不用自己写脚本 |
9 cwcc 2023 年 3 月 22 日 #!/bin/bash hosts=([email protected] [email protected]) for a in $hosts do ssh-copy-id -i ~/.ssh/id_rsa.pub $a done |
10 summerlv OP 谢谢大家,我找到答案了,一开始没找到所以来问了 https://blog.csdn.net/PlatoWG/article/details/84618566 可以在脚本里这样执行 ssh $host "exit" 这样就可以不用为了自动生成 .ssh 文件而远程到另一台主机而无法退出了。 |
11 cnfczn 2023 年 3 月 22 日 via Android 公司时不时就要给服务器配秘钥,还要禁用密码登录,以前写过一个半自动化脚本。ssh-copy-id 还是会要求输入密码的。后来就将就用了。 |
12 SinceJune 2023 年 3 月 23 日 那我再教你一个小技能,没有互信关系的可以通过 expect 执行。 |
13 yinmin 2023 年 3 月 23 日 生成.ssh 目录,可以直接 mkdir ~/.ssh ,不一定需要使用 ssh 。 |