答案1
有几种选择:
- 使用 sshpass
执行命令:
sshpass -p 'password' scp filename user@host:
安装 sshpass:
- 乌班图:
sudo apt install sshpass
sshpass - 非交互式 ssh 密码提供程序
sshpass 是一个实用程序,设计用于使用称为“键盘交互”密码身份验证的模式运行 ssh,但以非交互模式运行。
ssh 使用直接 TTY 访问来确保密码确实是由交互式键盘用户发出的。 Sshpass 在专用的 tty 中运行 ssh,欺骗它认为它正在从交互式用户那里获取密码。
要运行的命令在 sshpass 自己的选项之后指定。通常它是带有参数的“ssh”,但它也可以是任何其他命令。然而,ssh 使用的密码提示当前已硬编码到 sshpass 中。
- 使用预计(或其他脚本)
编写一个脚本,一旦识别出 ssh 密码提示,该脚本就会注入密码
- 使用带密钥对的 ssh(而不是使用密码)
恕我直言 - 这是最安全的方法,并且不需要使用密码。
使用公钥/私钥来执行ssh
或scp
操作而无需输入密码。
答案2
关于如何做到这一点已经有了答案,所以我将重点讨论为什么不这样做。
- 如果您在命令行上传递密码,则本地用户可以使用
ps
或任何其他进程列表器来窥探该密码。 - 创建难以猜测且易于记住的密码很困难:因此不要在 ssh 中使用密码。
而是使用公钥/私钥,并使用密钥代理来临时记住您的密钥。