有没有办法将输入包含在bash文件中,这样我就不会在每次运行bash脚本时都在命令行中键入所需的输入

有没有办法将输入包含在bash文件中,这样我就不会在每次运行bash脚本时都在命令行中键入所需的输入,bash,Bash,我利用bash脚本在Ubuntu服务器的实时站点上执行自动部署 其中一行有如下内容: scp build.zip user_name@ip_address:/path/to/releases/$release 一旦Ubuntu执行此命令,它将在命令行中要求我输入密码,如: Enter passphrase for key '/home/user_name/.ssh/id_rsa': 有没有办法将输入包含在bash文件中,这样我就不会在每次运行bash脚本时都在命令行中键入密码?通过运行此命令

我利用bash脚本在Ubuntu服务器的实时站点上执行自动部署

其中一行有如下内容:

scp build.zip user_name@ip_address:/path/to/releases/$release
一旦Ubuntu执行此命令,它将在命令行中要求我输入密码,如:

Enter passphrase for key '/home/user_name/.ssh/id_rsa':

有没有办法将输入包含在bash文件中,这样我就不会在每次运行bash脚本时都在命令行中键入密码?

通过运行此命令并设置新的空白密码,您可以永久删除
id\u rsa
密钥上的密码短语:

ssh-keygen -p


对于通用解决方案,您可以使用
expect
脚本以编程方式驱动终端会话并与之交互。

您可以使用另一个文件来编写所需的输入行

./your_script.sh < your_input_file.txt
/your\u script.sh

但这似乎不是最好的主意,我宁愿尽量避免在每个子命令中都需要输入。

是的,这是可能的,但这不是要求命令行输入的唯一一行。例如,数据库密码,每个程序将有一个不同的方式来处理这个问题。我建议发布另一个问题;也可能最好在或上询问。我添加了一个替代方案…请参阅ssh代理等。这因操作系统而异,可能属于不同的堆栈。请使用
sshpass
。请参阅:
mansshpass