需求是这样的,我现在想编辑一个 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-03-22 21:26:36 +08:00 via Android
有没有一种可能,.ssh 可以从别处复制过来一份
|
2
piku 2023-03-22 21:27:25 +08:00 via Android
ssh 进程到后台,然后杀进程?
|
4
ShineyWang 2023-03-22 21:32:21 +08:00 via Android
不能同时连三个主机吗?
开三个 tab 不就行了? |
5
dode 2023-03-22 21:32:56 +08:00 via Android
Ansible
|
6
dode 2023-03-22 21:34:08 +08:00 via Android
ssh-copy-id 工具
|
7
luanjia 2023-03-22 21:34:14 +08:00 via Android
可以 ssh 到 localhost 再退出?
|
8
nightwitch 2023-03-22 21:52:42 +08:00 via Android
用 ssh-copy-id ,不用自己写脚本
|
9
cwcc 2023-03-22 22:19:48 +08:00
#!/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-03-22 22:49:47 +08:00 via Android
公司时不时就要给服务器配秘钥,还要禁用密码登录,以前写过一个半自动化脚本。ssh-copy-id 还是会要求输入密码的。后来就将就用了。
|
12
SinceJune 2023-03-23 13:18:44 +08:00
那我再教你一个小技能,没有互信关系的可以通过 expect 执行。
|
13
yinmin 2023-03-23 13:41:46 +08:00
生成.ssh 目录,可以直接 mkdir ~/.ssh ,不一定需要使用 ssh 。
|