Password SSH authentication method in RCurl

六眼飞鱼酱① 提交于 2019-12-03 22:58:01

问题


I'm using the ftpUpload function in the RCurl package to upload files to an sftp file server. I'm having difficulty working out the authentication call.

Below is my call:

ftpUpload(what = "some-file.png",
      to = "sftp://some-ftp-server.com:22/path/to/some-file.png",
      verbose = TRUE,
      userpwd = "my_userid:my_password")

As a result I get:

* About to connect() to some-ftp-server.com port 22 (#0)
*   Trying some-ftp-server.com... * connected
* Connected to some-ftp-server.com (some ip address) port 22 (#0)
* SSH authentication methods available: publickey,password
* Using ssh public key file /home/.ssh/id_dsa.pub
* Using ssh private key file /home/.ssh/id_dsa
* SSH public key authentication failed: Unable to open public key file
* Authentication failure
* Closing connection #0
Error in function (type, msg, asError = TRUE)  : Authentication failure

I wasn't the one to setup the sftp server, and I'm somewhat of an ssh noob -- apologies. What I do know is that I'm able to login using my_userid and my_password with Filezilla and that the server has an .htaccess and .htpasswd file.

I'm hoping that there is some way to authenticate using ftpUpload with just my userid and password. It seems that password is one of the two available methods, but I can't seem to get ftpUpload to understand that I'd like to use the later alone.

The .htpasswd file seems to contain my_userid:my_password, though the password portion is encrypted. I'm open to loading that in a certain place for ftpUpload to access, but I'm not sure how to point ftpUpload in the right directions.

Finally, I've tried playing around with and looking through the libcurl options listed here: http://www.omegahat.org/RCurl/philosophy.html and more fully explained here: http://curl.haxx.se/libcurl/c/curl_easy_setopt.html

Alas, no luck. Any help appreciated!


回答1:


It seems a little late, but I am currently trying something similar (public key authentication, though) and got it working! Here is what I did:

I did set up a public key authentication basically following the instructions at http://www.howtoforge.com/set-up-ssh-with-public-key-authentication-debian-etch

That is, I run on the server the command

ssh-keygen -t rsa -C "e@mail.com" -f "ir_rsa"

to generate a public and a private key. (Just as a sidenote, I first tried to use puttygen on my local windows machine to create working keys but failed.)

Then I add the public key to the authorized keys (still on the remote server)

mkdir ~/.ssh
chmod 700 ~/.ssh
cat id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

and copy both the public and private key file on the local machine where R is running. Then I can upload a file from R using

require(RCurl)
ftpUpload(what = "myfile.txt",
    to = "sftp://myusername@my.host.com:22/path/to/myfile",
    verbose = TRUE,
    .opts = list(
        ssh.public.keyfile = "path/to/local/pubkeyfile", 
        ssh.private.keyfile = "path/to/local/privatekeyfile"
    ) 
)


来源:https://stackoverflow.com/questions/12287699/password-ssh-authentication-method-in-rcurl

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!