使用 scp 和密码

使用 scp 和密码

我可以将密码作为 SCP 的参数输入,而不是提示输入密码吗?

使用SCP复制文件时如何保存密码? 这个问题是类似的,但答案涉及完全废除 SSH 密码。

答案1

有几种选择:

  1. 使用 sshpass

执行命令:

sshpass -p 'password' scp filename user@host:
  • 安装 sshpass:

    • 乌班图:

    sudo apt install sshpass

sshpass 人

sshpass - 非交互式 ssh 密码提供程序

sshpass 是一个实用程序,设计用于使用称为“键盘交互”密码身份验证的模式运行 ssh,但以非交互模式运行。

ssh 使用直接 TTY 访问来确保密码确实是由交互式键盘用户发出的。 Sshpass 在专用的 tty 中运行 ssh,欺骗它认为它正在从交互式用户那里获取密码。

要运行的命令在 sshpass 自己的选项之后指定。通常它是带有参数的“ssh”,但它也可以是任何其他命令。然而,ssh 使用的密码提示当前已硬编码到 sshpass 中。

  1. 使用预计(或其他脚本)

编写一个脚本,一旦识别出 ssh 密码提示,该脚本就会注入密码

  1. 使用带密钥对的 ssh(而不是使用密码)

恕我直言 - 这是最安全的方法,并且不需要使用密码。

使用公钥/私钥来执行sshscp操作而无需输入密码。

答案2

关于如何做到这一点已经有了答案,所以我将重点讨论为什么不这样做。

  • 如果您在命令行上传递密码,则本地用户可以使用ps或任何其他进程列表器来窥探该密码。
  • 创建难以猜测且易于记住的密码很困难:因此不要在 ssh 中使用密码。

而是使用公钥/私钥,并使用密钥代理来临时记住您的密钥。

相关内容