我使用curl --insecure --user user1:password1 -T test.txt sftp://company1.com/incoming/ -vvv
将文件发送到SFTP。
在输出中我看到
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Trying xxx.xxx.xxx.xxx...
0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0* Connected to transfer.dotz.com.br (xxx.xxx.xxx.xxx) port 22 (#0)
0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0* SSH MD5 fingerprint: 1954076a7e4299f00df823fa1ca2d30e
0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0* SSH authentication methods available: password,publickey
* Using SSH public key file '(nil)'
* Using SSH private key file '/home/ec2-user/.ssh/id_rsa'
* SSH public key authentication failed: Username/PublicKey combination invalid
* Failure connecting to agent
* Authentication failure
0 0 0 0 0 0 0 0 --:--:-- 0:00:04 --:--:-- 0
* Closing connection 0
curl: (67) Authentication failure
当我明确指出--user
参数时,我不明白为什么它抱怨“SSH公钥验证失败”。显然我的密码没有使用......
答案 0 :(得分:0)
为什么不使用直接sftp
命令?它也尝试按键,但是以一种相当的方式让你甚至不知道它。
这样做是因为ssh的默认行为是使用默认位置的键(参见sshd_config(5)
的手册页)。
您可以采取一些措施来避免这种情况:
PubkeyAuthentication no
中的~/.ssh/config
(可能不会受到尊重)/etc/sshd_config
中的相同选项在服务器上禁用pubkey身份验证并重新启动服务器(但这通常不是您想要执行的操作)。但无论如何,从另一个问题来看,solution更好:
curl -v --insecure sftp://user1:password1@company1.com