我知道不建议这样做,但是是否有可能将用户的密码传递给scp?

我想通过scp复制一个文件,作为批处理作业的一部分,接收服务器当然需要密码,不,我不能轻易地将其更改为基于密钥的身份验证。


当前回答

Curl可以用作SCP的替代方案来复制文件,并且它支持在命令行上设置密码。

curl --insecure --user username:password -T /path/to/sourcefile sftp://desthost/path/

其他回答

上面提到的所有解决方案都可以工作,只有当你安装了应用程序,或者你应该有管理权限安装除sshpass。

我发现这个非常有用的链接可以简单地在后台启动scp。

$ nohup scp file_to_copy user@server:/path/to/copy/the/file > nohup.out 2>&1

https://charmyin.github.io/scp/2014/10/07/run-scp-in-background/

Make sure password authentication is enabled on the target server. If it runs Ubuntu, then open /etc/ssh/sshd_config on the server, find lines PasswordAuthentication=no and comment all them out (put # at the start of the line), save the file and run sudo systemctl restart ssh to apply the configuration. If there is no such line then you're done. Add -o PreferredAuthentications="password" to your scp command, e.g.: scp -o PreferredAuthentications="password" /path/to/file user@server:/destination/directory

我在这里找到了一个非常有用的答案。

rsync -r -v --progress -e ssh user@remote-system:/address/to/remote/file /home/user/

你不仅可以在那里传递密码,而且它还会在复制时显示进度条。真的太棒了。

将文件从一个服务器复制到另一个服务器(在脚本上)

在ubuntu或其他Linux机器上安装putty。Putty随pscp附带。我们可以用pscp复制文件。

apt-get update
apt-get install putty 
echo n |  pscp -pw "Password@1234" -r user_name@source_server_IP:/copy_file_path/files /path_to_copy/files

有关更多选项,请参阅pscp help。

只需生成一个SSH密钥:

ssh-keygen -t rsa -C "your_email@youremail.com"

复制~/.ssh/id_rsa.pub的内容 最后将它添加到远程计算机~/.ssh/authorized_keys

确保远程机器拥有~的权限0700。~/.ssh/authorized_keys文件夹为0600