gpt4 book ai didi

bash - 通过脚本连接多个ssh连接

转载 作者:行者123 更新时间:2023-11-29 09:28:03 27 4
gpt4 key购买 nike

我一直在尝试使用脚本自动进入 ssh 连接。 This到目前为止,以前的 SOF 帖子对我有帮助。使用一个连接有效(第一个 ssh 语句)。但是,我想在连接后创建另一个 ssh 连接,我认为它可能如下所示:

#! /bin/bash
# My ssh script

sshpass -p "MY_PASSWORD1" ssh -o StrictHostKeyChecking=no *my_hostname_1*
sshpass -p "MY_PASSWORD2" ssh -o StrictHostKeyChecking=no *my_hostname_2*

运行脚本时,我只连接到 my_hostname_1 并且第二个 ssh 命令在我退出第一个 ssh 之前不会运行连接。

我试过使用这样的 if 语句:

if [ "$HOSTNAME" = my_host_name_1 ]; then
sshpass -p "MY_PASSWORD2" ssh -o StrictHostKeyChecking=no *my_hostname_2*
fi

但在退出第一个连接之前,我无法读取任何命令。

最佳答案

这是@lihao 建议的 ProxyCommand 示例:

#!/bin/bash

sshpass -p "MY_PASSWORD2" ssh -o StrictHostKeyChecking=no \
-o ProxyCommand='sshpass -p "MY_PASSWORD1" ssh m_hostname_1 netcat -w 1 %h %p' \
my_hostname_2

您正在代理通过第一台主机到达第二台主机。这假设您在 my_hostname_2 上安装了 netcat。如果没有,您需要安装它。

你也可以在你的 ~/.ssh/config 文件中设置它,这样你就不需要命令行上的代理东西了:

Host my_hostname_1
HostName my_hostname_1

Host my_hostname_2
HostName my_hostname_2
ProxyCommand ssh my_hostname_1 netcat -w 1 %h %p

但是,这在密码处理方面有点棘手。虽然您可以将 sshpass 放在这里,但使用纯文本形式的密码并不是一个好主意。使用基于 key 的身份验证可能会更好。

关于bash - 通过脚本连接多个ssh连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25643637/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com