我知道不建议这样做,但是是否有可能将用户的密码传递给scp?
我想通过scp复制一个文件,作为批处理作业的一部分,接收服务器当然需要密码,不,我不能轻易地将其更改为基于密钥的身份验证。
我知道不建议这样做,但是是否有可能将用户的密码传递给scp?
我想通过scp复制一个文件,作为批处理作业的一部分,接收服务器当然需要密码,不,我不能轻易地将其更改为基于密钥的身份验证。
当前回答
Curl可以用作SCP的替代方案来复制文件,并且它支持在命令行上设置密码。
curl --insecure --user username:password -T /path/to/sourcefile sftp://desthost/path/
其他回答
您可以使用像expect这样的工具编写脚本(也有方便的绑定,比如Python的Pexpect)。
Curl可以用作SCP的替代方案来复制文件,并且它支持在命令行上设置密码。
curl --insecure --user username:password -T /path/to/sourcefile sftp://desthost/path/
只需生成一个SSH密钥:
ssh-keygen -t rsa -C "your_email@youremail.com"
复制~/.ssh/id_rsa.pub的内容 最后将它添加到远程计算机~/.ssh/authorized_keys
确保远程机器拥有~的权限0700。~/.ssh/authorized_keys文件夹为0600
如果你观察到一个严格的主机密钥检查错误,那么使用-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null选项。
完整示例如下 sshpass -p "password" scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@domain-name.com:/tmp/from/psoutput /tmp/to/psoutput
使用sshpass:
sshpass -p "password" scp -r user@example.com:/some/remote/path /some/local/path
所以密码不会显示在bash历史记录中
sshpass -f "/path/to/passwordfile" scp -r user@example.com:/some/remote/path /some/local/path
上面的操作将路径的内容从远程主机复制到本地。
安装:
ubuntu / debian 安装sshpass centos / fedora Yum安装sshpass MAC / macports 端口安装sshpass MAC / brew brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb