【发布时间】:2022-01-11 01:29:39
【问题描述】:
我正在尝试编写一个 bash 脚本,该脚本通过调试 (ssh -vvv) 针对指定的主机运行 ssh 命令。
我没有尝试登录服务器,而只是想查看服务器提供的所有 kex、mac 和密码。
在使用 -G 选项协商后,我确实创建了一个脚本来查找 kex 算法。
#!/bin/bash
for f in `cat servers.txt`;
do echo "### $f ###";
echo -e "kexalgorithms"
result=$(ssh -G $f uname -a | grep kexalgorithms)
echo $result;
done
但是,我现在意识到这个输出依赖于本地机器上的 ssh 配置,并且不会给我远程服务器提供的确切 kex。
如果我执行ssh -vvv <host>,它将在行中提供此信息
debug2:对等服务器 KEXINIT 提案
debug2:KEX 算法:curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group- exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256
debug2:主机密钥算法:rsa-sha2-512,rsa-sha2-256,ssh-ed25519 debug2:密码
但是,如果从脚本运行ssh -vvv,它将卡在用户名/密码提示符处。
有什么方法可以将标准输出保存到密码提示到文件中(可能以主机名作为文件名)并在密码提示下中断脚本运行?
提前致谢
【问题讨论】: