通过脚本连接到多个ssh连接

索拉利托

我一直在尝试使用脚本自动输入ssh连接。至今以前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

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

您也可以在~/.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此处输入密码,但以纯文本格式输入密码并不是一个好主意。使用基于密钥的身份验证可能更好。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章