我需要在几台服务器上测试 SSH 身份验证。假设这些服务器的 IP 地址保存在ip.txt
文件中
我已经使用 Pythonparamiko
和netmiko
module 编写了类似的脚本。
现在的问题是我必须从没有 Python3 或互联网连接的服务器上测试它。
因此,这里不能选择安装第 3 方工具或 Python 模块。
expect
,sshpass
也不可用。
唯一可用的是 bash 脚本。是否可以单独在 Bash 上执行此操作?我如何传递password
到 ssh?
答案1
尝试SSH_ASKPASS
人SSH
...
SSH_ASKPASS
如果 ssh 需要密码,如果从终端运行,它将从当前终端读取密码。如果 ssh 没有与之关联的终端,但设置了 DISPLAY 和 SSH_ASKPASS,它将执行 SSH_ASKPASS 指定的程序并打开 X11 窗口来读取密码。当从 .xsession 或相关脚本调用 ssh 时,这特别有用。 (请注意,在某些计算机上,可能需要重定向 /dev/null 中的输入才能使其工作。)
...
$ cat echoPass
echo passwordHere
$ cat sshSession
export SSH_ASKPASS='~/echoPass'
setsid ssh user@server
$./sshSession
user@server:~$ whoami
user
user@server:~$