我无法通过bash脚本为ssh连接传递密码。我有一切正常,但它仍然提示我输入密码而不是提取存储的密码。请看下面脚本的部分,让我知道是否有明显的错误:
#! /bin/bash
echo "Please enter a username:"
read user
echo "please enter a password:"
read password
echo please enter an IP address:"
read ip
ssh "$user"@"$ip"
expect "password:"
send "<password>\r"
interact
我尝试了“发送”行的不同变体。例如,我尝试过“密码\ r \ n”和密码\ r \ n。我还尝试修改“expect”行以镜像尝试的SSH连接返回的确切文本。
感谢您提供的任何帮助。
答案 0 :(得分:1)
SSH包含通过重定向标准I / O来防止密码被盗的代码。
正确的解决方案是使用ssh-keygen
生成私钥/公钥对。在远程端安装公钥。 ssh-copy-id
会有所帮助。
然后您可以使用SSH代理将私钥加载到内存中,SSH不会要求输入密码或关键短语。
相关: