2 jichenhui2012 jichenhui2012 于 2015.06.02 20:23 提问

求大神指教libcurl问题:使用ssh登录服务器时报错了。

刚接触libcurl,菜鸟一个。我的libcurl的版本是:
curl 7.42.1 (x86_64-unknown-linux-gnu) libcurl/7.42.1 OpenSSL/1.0.1f zlib/1.2.8 libidn/1.28 libssh2/1.4.3 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp
Features: IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP UnixSockets
然后我用命令:curl -u username sftp://123.123.123.123
回车后输入密码后就出现了以下错误:
curl: (51) SSL peer certificate or SSH remote key was not OK。
纠结了两天了,求大神指导!

6个回答

devmiao
devmiao   Ds   Rxr 2015.06.02 20:30

显示证书无效,看下是不是证书有问题

jichenhui2012
jichenhui2012 怎么看证书是否出问题?我不太懂。 我用ssh-keygen重新生成ssh key,也不行。
2 年多之前 回复
jichenhui2012
jichenhui2012   2015.06.02 20:32

怎么看证书是否出问题?我不太懂。
我用ssh-keygen重新生成ssh key,也不行。

nswcfd
nswcfd   2015.06.02 20:36

SSL相关,如果关闭安全选项,使用-k参数。

   -k, --insecure
          (SSL)  This  option  explicitly  allows  curl  to perform "insecure" SSL connections and
          transfers. All SSL connections are attempted to be made secure by using the CA  certifi‐
          cate  bundle installed by default. This makes all connections considered "insecure" fail
          unless -k, --insecure is used.

          See this online resource for further details: http://curl.haxx.se/docs/sslcerts.html
jichenhui2012
jichenhui2012 回复nswcfd: 恩,我打的命令是curl -k -u username sftp://......com.
2 年多之前 回复
nswcfd
nswcfd 回复jichenhui2012: 小写的k,不是大写的K
2 年多之前 回复
jichenhui2012
jichenhui2012 结果还是不可以。
2 年多之前 回复
jichenhui2012
jichenhui2012 我试过了,结果是:
2 年多之前 回复
jichenhui2012
jichenhui2012   2015.06.02 20:41

我加了-k以后,结果是:

  Trying 123.57.151.149...
* Connected to zhoulinjun.com (123.57.151.149) port 22 (#0)
* SSH MD5 fingerprint: 04d00b045a6ce105456ab98c47aa7d54
* SSH authentication methods available: publickey,password
* Using SSH public key file '(nil)'
* Using SSH private key file '/home/chen-h12/.ssh/id_rsa'
* SSH public key authentication failed: Unable to extract public key from private key file: Method unimplemented in libgcrypt backend
* Initialized password authentication
* Authentication complete
。。。。。。
* Connection #0 to host zhoulinjun.com left intact
然后就推出了。
nswcfd
nswcfd 估计是 CURLOPT_SSL_VERIFYPEER 或 CURLOPT_SSL_VERIFYHOST ,没用过,自己研究一下吧。
2 年多之前 回复
nswcfd
nswcfd 回复jichenhui2012: 这里说的sftp不是sftp协议,而是sftp客户端,作为ssh工具包的一部分。之前不知道你要用c语言调用libcurl的API,没用过所以不好回答。不过既然curl自己的命令行都支持,那libcurl必然也是可以的。(curl是基于libcurl的)。建议找curl的源代码,看看-k选项对于哪个API。
2 年多之前 回复
jichenhui2012
jichenhui2012 回复nswcfd: 还有一个问题:如果我用c++写代码实现你说的-k参数,应该怎么设置curl_easy_setopt里的参数啊?
2 年多之前 回复
jichenhui2012
jichenhui2012 还有一个问题:如果我用c++写代码实现你说的-
2 年多之前 回复
jichenhui2012
jichenhui2012 我用的就是sftp。输入的命令是:curl -k -u username sftp://....com;然后输入密码后就会出现说认证错误。
2 年多之前 回复
nswcfd
nswcfd 交互的话,还是用sftp吧。
2 年多之前 回复
nswcfd
nswcfd ssl内部的一些信息,可以忽略。curl是文件下载工具,不能进行交互。比如curl ftp://xxxx也只是下载文件,不能在ftp上执行命令。
2 年多之前 回复
jichenhui2012
jichenhui2012 回复nswcfd: 对的,接下来还要进行一些操作。SSH public key authentication failed: Unable to extract public key from private key file: Method unimplemented in libgcrypt backend这句话是什么意思?
2 年多之前 回复
nswcfd
nswcfd 我这里也是列出目录就退出了,你还想一直保持登录?
2 年多之前 回复
nswcfd
nswcfd 至少有改进吧 ^-^。
2 年多之前 回复
jichenhui2012
jichenhui2012 退出了。
2 年多之前 回复
oyljerry
oyljerry   Ds   Rxr 2015.06.02 22:08

你服务器生成的证书有问题,你没正确配置。

t1172400887
t1172400887   2016.01.08 14:02

你好,最近我也遇到了同样的问题(症状和你的一模一样 T _ T ),不知道你的问题解决了吗?,如果有解决方式的话求将解决方法发我一份 li_tianone@163.com
谢谢

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!