我知道不建议这样做,但是是否有可能将用户的密码传递给scp?
我想通过scp复制一个文件,作为批处理作业的一部分,接收服务器当然需要密码,不,我不能轻易地将其更改为基于密钥的身份验证。
我知道不建议这样做,但是是否有可能将用户的密码传递给scp?
我想通过scp复制一个文件,作为批处理作业的一部分,接收服务器当然需要密码,不,我不能轻易地将其更改为基于密钥的身份验证。
当前回答
另一种方法是将用户密钥的公共部分添加到目标系统上的授权密钥文件中。在发起传输的系统上,可以运行ssh-agent守护进程,并将密钥的私有部分添加到代理中。然后可以将批作业配置为使用代理获取私钥,而不是提示输入密钥的密码。
这应该可以在UNIX/Linux系统或Windows平台上使用pageant和pscp实现。
其他回答
我在这里找到了一个非常有用的答案。
rsync -r -v --progress -e ssh user@remote-system:/address/to/remote/file /home/user/
你不仅可以在那里传递密码,而且它还会在复制时显示进度条。真的太棒了。
另一种方法是将用户密钥的公共部分添加到目标系统上的授权密钥文件中。在发起传输的系统上,可以运行ssh-agent守护进程,并将密钥的私有部分添加到代理中。然后可以将批作业配置为使用代理获取私钥,而不是提示输入密钥的密码。
这应该可以在UNIX/Linux系统或Windows平台上使用pageant和pscp实现。
Curl可以用作SCP的替代方案来复制文件,并且它支持在命令行上设置密码。
curl --insecure --user username:password -T /path/to/sourcefile sftp://desthost/path/
我有一个简单的方法:
使用相同的scp cmd,因为您使用ssh密钥,即
scp -C -i <path_to打开sshkey> <'local file_path'> user@<ip_address_VM>: <'remote file_path'>
用于从本地传输文件到远程
但是不要提供正确的<path_to_opensshkey>,而是使用一些垃圾路径。由于错误的密钥路径,您将被要求输入密码,而不是你现在可以简单地通过密码来完成工作!
一旦像上面解释的那样设置了ssh-keygen,就可以这样做了
SCP -i ~/。Ssh /id_rsa /local/path/to/file remote@ip.com:/path/in/remote/server/
如果希望减少每次输入的次数,可以修改.bash_profile文件并将
alias remote_scp='scp -i ~/.ssh/id_rsa /local/path/to/file remote@ip.com:/path/in/remote/server/
然后从您的终端执行source ~/.bash_profile。然后,如果您在终端中输入remote_scp,它应该运行没有密码的scp命令。