V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
summerlv
V2EX  ›  程序员

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

  •  
  •   summerlv · 2023-03-22 21:20:00 +08:00 · 1411 次点击
    这是一个创建于 644 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需求是这样的,我现在想编辑一个 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 执行后登录到的其他主机?

    13 条回复    2023-03-23 13:41:46 +08:00
    piku
        1
    piku  
       2023-03-22 21:26:36 +08:00 via Android
    有没有一种可能,.ssh 可以从别处复制过来一份
    piku
        2
    piku  
       2023-03-22 21:27:25 +08:00 via Android
    ssh 进程到后台,然后杀进程?
    summerlv
        3
    summerlv  
    OP
       2023-03-22 21:28:34 +08:00
    @piku 怎么无痛退出啊?感觉直接杀掉进程有点不好呢?
    ShineyWang
        4
    ShineyWang  
       2023-03-22 21:32:21 +08:00 via Android
    不能同时连三个主机吗?
    开三个 tab 不就行了?
    dode
        5
    dode  
       2023-03-22 21:32:56 +08:00 via Android
    Ansible
    dode
        6
    dode  
       2023-03-22 21:34:08 +08:00 via Android
    ssh-copy-id 工具
    luanjia
        7
    luanjia  
       2023-03-22 21:34:14 +08:00 via Android
    可以 ssh 到 localhost 再退出?
    nightwitch
        8
    nightwitch  
       2023-03-22 21:52:42 +08:00 via Android
    用 ssh-copy-id ,不用自己写脚本
    cwcc
        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
    summerlv
        10
    summerlv  
    OP
       2023-03-22 22:42:05 +08:00
    谢谢大家,我找到答案了,一开始没找到所以来问了
    https://blog.csdn.net/PlatoWG/article/details/84618566

    可以在脚本里这样执行 ssh $host "exit"
    这样就可以不用为了自动生成 .ssh 文件而远程到另一台主机而无法退出了。
    cnfczn
        11
    cnfczn  
       2023-03-22 22:49:47 +08:00 via Android
    公司时不时就要给服务器配秘钥,还要禁用密码登录,以前写过一个半自动化脚本。ssh-copy-id 还是会要求输入密码的。后来就将就用了。
    SinceJune
        12
    SinceJune  
       2023-03-23 13:18:44 +08:00
    那我再教你一个小技能,没有互信关系的可以通过 expect 执行。
    yinmin
        13
    yinmin  
       2023-03-23 13:41:46 +08:00
    生成.ssh 目录,可以直接 mkdir ~/.ssh ,不一定需要使用 ssh 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3279 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 11:56 · PVG 19:56 · LAX 03:56 · JFK 06:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.