使用带密码的 scp

hum*_*nic 2 scp

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

使用SCP复制文件时如何保存密码? 这个问题很相似,但答案涉及完全取消 SSH 密码。

Yar*_*ron 5

有几种选择:

  1. 使用 sshpass

执行命令:

sshpass -p 'password' scp filename user@host:
Run Code Online (Sandbox Code Playgroud)
  • 安装 sshpass:

    • Ubuntu:

    sudo apt install sshpass

sshpass 人

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

sshpass 是一个实用程序,旨在使用称为“键盘交互”密码验证的模式运行 ssh,但在非交互模式下。

ssh 使用直接 TTY 访问来确保密码确实是由交互式键盘用户发出的。sshpass 在专用 tty 中运行 ssh,使其误以为是从交互式用户那里获取密码。

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

  1. 使用expect(或其他脚本)

编写一个脚本,该脚本将在识别 ssh 密码提示后注入密码

  1. 将 ssh 与密钥对一起使用(而不是使用密码)

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

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