2015-10-16 230 views
2

我想使用GIT Bash上传服务器上的文件。我为Windows使用msysgit。Windows上的Git bash - 不支持sftp

FTP上传正常,但sftp无法正常工作。

git ftp init --verbose

给我的错误:SFTP,不支持或libcurl中

我尝试安装libssh2 Cygwin的这一参考http://docs.oracle.com/cd/E24628_01/install.121/e22624/preinstall_req_cygwin_ssh.htm#EMBSC150

但错误依然ocured禁用。我不知道我是否必须直接向GIT Bash安装某些东西,或者我还能做些什么?

谢谢你的任何建议。


编辑:我更新了msysgit和其他软件,现在我只是不知道如何从服务器获取证书。从WinSCP我只使用接受指纹,就是这样。

curl -v --insecure sftp://user:[email protected]

  • 提供SSH认证方法:公钥,密码
  • 使用SSH公共密钥文件 '(无)'
  • 使用SSH私钥文件“C:\用户\ XXX /的.ssh/id_rsa”
  • SSH公钥验证失败:用户名/公钥组合无效

卷曲:(67)AUTHENT失败

我在这里看到https://github.com/git-ftp/git-ftp/issues/124,我可以使用另一个键,而不是我的默认值。但我不知道如何从服务器获取密钥。

回答

3

确保您没有使用Cygwin或old and obsolete msysgit 1.9.x version的git。

随着new git for windows,sftp应予以支持:

C:\Users\vonc\prog\seec>c:\prgs\git\PortableGit-2.6.1-64-bit\usr\bin\curl.exe -V 
curl 7.44.0 (x86_64-pc-msys) libcurl/7.44.0 OpenSSL/1.0.2d zlib/1.2.8 libidn/1.32 libssh2/1.6.0 
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp 
Features: Debug IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP UnixSockets Metalink 

This project which needs sftp requires only user and password without any certificate file

真,没有必要为ssl certificate with sftp,只是让没有钥匙在 'C:\Users\xxx/.ssh/id_rsa(.pub)'

From WinSCP I use only accept fingerprint and that was it.

这可能是问题:known_host必须具有远程服务器指纹。见for instance my script或这篇博客:

To get a look at the server’s public key fingerprint before attempting a connection, one can utilize the ssh-keyscan program

ssh-keyscan -t ecdsa host.example.org > tmp 
ssh-keygen -lf tmp 
256 03:ed:6d:1f:ff:56:9d:5f:f3:65:20:b5:ad:55:55:87 host.example.org (ECDSA) 

Here the -t is for type of key to be scanned (which can be rsa1 for protocol version 1, dsa, ecdsa, ed25519, or rsa for protocol version 2).
The output is redirected to a temporary file named tmp , then the file is checked with the ssh-keygen program.

Once client has verified the fingerprint, it will store a copy of the server’s public key in $HOME/.ssh/known_hosts and will check the stored key on subsequent connections to that host.
If the server has changed its keys, or another machine is attempting to spoof the real server, the client will notice and will not allow connections to that host.

+1

@ManicDepression有点像https://github.com/git-ftp/git-ftp/issues/208,我想?检查'curl -v --insecure sftp://ftp.xxx.com:22/var/www/xxx.com'返回。另请参阅http://stackoverflow.com/a/31750959/6309 – VonC

+0

您可以使用curl -v命令的输出编辑您的问题吗?以防万一我看到了什么?检查是否定义了环境变量HOME。 – VonC

+0

@ManicDepression似乎很清楚:试着从'C:\ Users \ xxx \ .ssh'移开(不删除,只是移动)'id_rsa(.pub)'ssh密钥文件,看看'user:password'作品。 – VonC