我一直在尝试使用脚本自动输入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] 删除。
我来说两句