I've written an R package that I keep in a (bare) git repository on an SSH server, and I want to be able to install it on a local machine without needing to clone the repository by hand.
I've attempted the following:
devtools::install_git("ssh://user_name@remote/path/to/repository")
but I get the error
Downloading git repo ssh://user_name@remote/path/to/repository
Error in git2r::clone(x$url, bundle, progress = FALSE) :
Error in 'git2r_clone': Failed to start SSH session: Unable to exchange encryption keys
I'm on a Windows 7 machine, using R 3.1.2, git2r version 0.11.0 and devtools version 1.9.1. Any help would be greatly appreciated. Thanks!
Ran into this issue myself. I know this question is a bit old, but for anybody else running into the same issue (like me), here's what I've found.
The Problem
Likely you don't have the library that
git2r
(the package thatdevtools
uses to interact withgit
) uses to communicate over SSH.The Solution
Install it. The example below assumes Ubuntu.
git2r
uses a library called LibSSH2 to enable transport over SSH. You can install it using your package manager if you're on Linux.NOTE if you're on Windows,As ofgit2r
does not support the SSH protocol yet :/git2r
version 0.11.0 (which uses an updated version oflibgit2
) it looks like SSH is supported on Windows as well. As of this edit, the newest version ofgit2r
is 0.15, so if you don't have SSH support on Windows, try updatinggit2r
(shout out to zeehio for the news).After you've installed LibSSH2 you'll need to reinstall the
git2r
package to enable SSH transport (since it's enabled/disabled during the package build).Sources
Issues on GitHub:
Why do I need LibSSH2 at all?
git
doesn't use it, right?You're right!
git
doesn't use it (to my knowledge). However, libgit2, which is the pure Cgit
API implementation thatgit2r
uses, does.