天道酬勤,学无止境

Git over ssh 无需在服务器上安装 Git(Git over ssh without Git being installed on server)

问题

我可以通过 ssh 和 scp 完全访问远程 Linux 服务器上的某个文件夹。 我可以上传和下载文件,但不能安装应用程序。 现在我想在这台服务器上放置一个 git 存储库。 当我尝试从通过 scp 复制的存储库进行克隆时,我收到以下错误消息:

sgit-upload-pack: Command not found
fatal: The remote end hung up unexpectedly

使用来自 Github 的相同命令进行克隆按预期工作。 我需要在服务器上安装 Git 吗? 如果是,是否有任何解决方法?

回答1

我认为 git 需要在那里。 但是您可以简单地将其安装在您有权访问的目录中。

回答2

您可以使用 SSHFS 并将目录挂载到本地机器上,然后在本地运行 Git。

回答3

我想您需要增强对 SSHFS 的访问。

这将是一个非常酷的除了Git的,我相信一些方法来做到这一点,虽然我还没有发现它...但。 对于类似的情况,我正在将 git 与 rsync 结合使用到远程服务器。

标签

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • devtools::install_git 通过 SSH(devtools::install_git Over SSH)
    问题 我编写了一个 R 包,我将它保存在 SSH 服务器上的(裸)git 存储库中,我希望能够将它安装在本地机器上,而无需手动克隆存储库。 我尝试了以下操作: devtools::install_git("ssh://user_name@remote/path/to/repository") 但我得到了错误 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 我在 Windows 7 机器上,使用 R 3.1.2、git2r 0.11.0 版和 devtools 1.9.1 版。 任何帮助将不胜感激。 谢谢! 回答1 自己遇到了这个问题。 我知道这个问题有点老了,但是对于遇到相同问题的其他人(如我),这就是我发现的。 问题 您可能没有 git2r( devtools用于与git交互的包)用于通过 SSH 进行通信的库。 解决方案 安装它。 下面的示例假设使用 Ubuntu。 sudo apt-get install
  • 通过SSH配置Git登录一次(Configuring Git over SSH to login once)
    问题 我已经通过ssh克隆了我的git存储库。 因此,每次我通过推或拉与原始主机通信时,都必须重新输入密码。 如何配置git,这样我就不需要多次输入密码了? 回答1 尝试ssh-add ,您需要ssh-agent来运行并按住您的私钥 (好吧,回答更新后的问题,首先按照Jefromi的说明运行ssh-keygen来生成一个公钥和私钥。将公钥放在服务器上。如果没有,请使用密码短语。私钥中的纯文本密码。但是,这样做时,实际上需要使用ssh-agent ,如下所述。) 您希望在登录时在后台运行ssh-agent 。登录后,您的想法是只运行一次ssh-add ,以便为代理提供密码,以对密钥进行解码。 然后,该代理程序就座落在内存中,您的密钥已解锁并加载,可以在每次在某处ssh使用时使用。 然后,所有ssh-family命令1将咨询代理,并自动能够使用您的私钥。 在OSX(err, macOS ),GNOME和KDE系统上,通常会自动为您启动ssh-agent 。 如果像我一样,如果您也有Cygwin或其他Windows环境,但我肯定不会为您做这些,那么我将详细介绍。 从这里开始: man ssh-agent 。 有多种自动运行代理的方法。 如手册页所述,您可以运行它,使其成为所有登录会话其他进程的父级。 这样,它提供的环境变量将自动存在于您的所有shell中。 当您(稍后)调用ssh
  • SSL证书被拒绝尝试通过防火墙后的HTTPS访问GitHub(SSL certificate rejected trying to access GitHub over HTTPS behind firewall)
    问题 我被困在防火墙后面,因此必须使用HTTPS来访问我的GitHub存储库。 我在Windows XP上使用cygwin 1.7.7。 我尝试将遥控器设置为https://username@github.com/username/ExcelANT.git ,但是在提示输入密码时提示我,但是一旦输入密码就什么也没做。 https://username:<password>github.com/username/ExcelANT.git并从头开始克隆空的https://username:<password>github.com/username/ExcelANT.git ,但是每次给我相同的错误 错误:SSL证书问题,请验证CA证书是否正确。 细节: 错误:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:访问https://github.com/username/ExcelANT.git/info/refs时证书验证失败 开启GIT_CURL_VERBOSE=1给我 *关于connect()到github.com端口443(#0) *尝试207.97.227.239 ... *成功设置证书验证位置: * CAfile:无 CApath:/ usr / ssl / certs * SSL证书问题,请验证CA证书是否正确。 细节: 错误
  • SSL 证书拒绝尝试通过防火墙后面的 HTTPS 访问 GitHub(SSL certificate rejected trying to access GitHub over HTTPS behind firewall)
    问题 我被防火墙挡住了,所以必须使用 HTTPS 访问我的 GitHub 存储库。 我在 Windows XP 上使用 cygwin 1.7.7。 我试过将遥控器设置为https://username@github.com/username/ExcelANT.git ,但推送提示输入密码,但一旦我输入它就不会做任何事情。 https://username:<password>github.com/username/ExcelANT.git并从头开始克隆空https://username:<password>github.com/username/ExcelANT.git ,但每次都给我同样的错误 错误:SSL 证书问题,请验证 CA 证书是否正常。 细节: 错误:14090086:SSL 例程:SSL3_GET_SERVER_CERTIFICATE:访问 https://github.com/username/ExcelANT.git/info/refs 时证书验证失败 打开GIT_CURL_VERBOSE=1给我 * 即将 connect() 到 github.com 端口 443 (#0) * 正在尝试 207.97.227.239 ... * 成功设置证书验证位置: * CA文件:无 CApath:/usr/ssl/certs * SSL证书问题,验证CA证书是否OK。 细节
  • 哪个是更聪明的git协议,ssh或git(over ssh)或https协议?(Which is the smarter git protocol, ssh or git(over ssh) or https protocol?)
    问题 哪个有效? SSH://或Git://(文件压缩) 我在Git中了解到,git协议很聪明,因为通信的两端都有协议代理来压缩文件传输,从而可以通过有效利用网络带宽来加快克隆速度。 从O'Reilly的书中,我发现以下陈述。 For secure, authenticated connections, the Git native protocol can be tunneled over an SSH connection using the following URL templates: ssh: //[user@]example.com[:port]/path/to/repo.git ssh: //[user@]example.com/path/to/repo.git ssh: //[user@]example.com/~user2/path/to/repo.git ssh: //[user@]example.com/~/path/to/repo.git* 我不确定作者是否说了他的意思。 他谈到git协议通过SSH隧道传输。 从我的角度来看,除非您连接到git端口(代理端口),否则该协议无效。 而且SSH只是未压缩的文件传输。 但是根据作者的说法,如果我们使用SSH,他说git协议是通过它传输的。 那么SSH在GIT中更智能吗? 冯C,谢谢您的回答。 “网络协议
  • git ssh 代理_Git通过SSH隧道作为代理
    git ssh 代理 git is a great tool and it is common to have a git server over SSH possibly managed by gitolite. However, there are situations that we can not directly connect to the git server but be able to SSH to another node that can connect to the git server. The git server may allow only internal connections because of security. With the node that we can SSH to, we can still use the git server “directly” by setting up a SSH tunnel as a proxy for the git connection. git是一个很棒的工具 ,通常有可能由gitolite管理的基于 SSH的git 服务器 。 但是,在某些情况下,我们无法直接连接到git服务器,但能够SSH到可以连接到git服务器的另一个节点。 由于安全性,git服务器可能只允许内部连接。
  • 克隆有效,远程推送无效。 Copssh上的远程存储库(Clone works, remote push doesn't. Remote repository over copssh)
    问题 我已经按照Tim Davis的指南“在Windows上安装了带有copssh的msysgit服务器”,并且按照Jason Meridth的指南,我现在正在学习如何使用git命令,并且我已经设法获得了一切工作正常,但现在我无法传递push命令。 我已经将服务器和客户端设置在同一台机器上(现在),即win7-x64。 这是一些有关如何设置的信息: CopSSH Folder : C:/SSH/ Local Home Folder : C:/Users/rvc/ Remote Home Folder: C:/SSH/home/rvc/ # aka /cygdrive/c/SSH/home/rvc/ git remote rep : C:/SSH/home/rvc/myapp.git # empty rep 在'/SSH/home/rvc/.bashrc'和'Users / rvc / .bashrc'中: export HOME=/cygdrive/c/SSH/home/rvc gitpath='/cygdrive/c/Program Files (x86)/Git/bin' gitcorepath='/cygdrive/c/Program Files (x86)/Git/libexec/git-core' PATH=${gitpath}:${gitcorepath}:${PATH
  • 使Git与代理服务器一起使用-因“请求超时”而失败(Getting Git to work with a proxy server - fails with “Request timed out”)
    问题 如何让Git使用代理服务器? 我需要从Git服务器中签出代码,但每次都会显示“请求超时”。 我该如何解决? 另外,如何设置代理服务器? 回答1 使用命令: git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080 将proxyuser更改为您的代理用户将proxypwd更改为您的代理密码将proxy.server.com更改为您的代理服务器的URL 将8080更改为在代理服务器上配置的代理端口 请注意,这适用于http和https仓库。 如果您决定随时重置此代理并在没有代理的情况下工作: 使用命令: git config --global --unset http.proxy 最后,检查当前设置的代理: git config --global --get http.proxy 回答2 在公司防火墙后面的Windows XP中,这对我有用。 除了http://code.google.com/p/msysgit/downloads/list上的git v1.771之外,我无需安装任何本地代理或任何其他软件?can = 3 $ git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
  • Jenkins项目部署,Jenkins+GitHub/GitLab
    环境准备:一台nginx,一台gitlab,一个能使用的github账号 样例:github项目地址 git@github.com:13331033844/test.git nginx:10.1.1.28 1.下载java环境 官网指路:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 版本: Linux x64185.16 MB jdk-8u231-linux-x64.tar.gz 具体下载地址:https://download.oracle.com/otn/java/jdk/8u231-b11/5b13a193868b4bf28bcb45c792fce896/jdk-8u231-linux-x64.tar.gz?AuthParam=1573475025_69f85eeb325c1a8e2037d76d4964650c 注:这个下载地址不保证直接能用,常规节奏是进入Oracle官网进行点击下载(还要求注册Oracle会员),然后用ftp上传服务器。 如果好使,可以直接在shell里wget它。本文是进行了Oracle会员注册后,再shell中就可以下载了。不知道这个注册是不是影响了下载能力。 2.安装Java环境 以本文为例,我们按照管理将文件jdk-8u231
  • Centos使用jenkins+maven+svn/git实现springboot项目的自动化部署过程
    说明:部署springboot项目的jar 一、准备工作: 1.安装JDK:安装JDK 2.安装Tomcat:安装Tomcal 3.安装maven:安装maven 4.安装svn:安装svn 5.安装git: 安装git 6.安装jenkins: 安装jenkins 二、插件管理(Manage Plugins) 1.Publish over SSH**(远程部署时需要,和Jenkins不在同一个服务器上时)** 3.安装完重启 三、系统配置(Configure System) 1.Publish over SSH (注:如果是同一台服务器可以不用配置) 注:Remote Directory,后面会有用处说明,下面只会说Remote Directory 四、全局工具配置(Global Tool Configuration) 1.JDK配置(红框内是jdk的安装目录) 2.Maven配置(红框内是maven 的安装目录) 3.Git配置,如果不使用 Git,删除即可 4.点击保存,自动退出 五、创建任务 1.新建任务 如果没有构建一个maven项目,那是因为没有安装maven插件,去插件管理中安装Maven Integration 2.配置项目 1)General 勾选丢弃旧的构建,选择是否备份被替换的旧包。我这里选择备份最近的10个。描述可以不填 2)源码管理 ①.(
  • 设置Git远程SSH(git-upload-pack / git-receive-pack)(Setup Git Remote SSH (git-upload-pack / git-receive-pack))
    问题 我有一台具有SSH访问权限的服务器,我想在此处放置一个Git原始存储库。 我刚刚在本地创建了一个--bare --shared回购协议,并根据SCP将其复制到服务器中。 现在,我想按SSH网址克隆此存储库。 我试过了 ssh://USERNAME@HOST/folder1/folder2/gifolder.git ssh://USERNAME:PASSWORD@HOST/folder1/folder2/gifolder.git ssh://USERNAME@HOST:PORT/folder1/folder2/gifolder.git ssh://USERNAME@HOST:/folder1/folder2/gifolder.git 以及以上的一些组合。 但是Git总是说 "fatal: The remote end hung up unexpectedly" 尽管已启用通过SSH将USERNAME和PASSWORD连接到HOST的功能。 是否可以按照我想要的方式使用git,还是必须将其设置为完全不同? 更新: 我将Git Extension配置为使用OpenSSH而不是Putty,现在OpenSSH要求我在“克隆”之后输入密码。 输入正确的密码时,出现以下错误: bash: git-upload-pack: command not found
  • Visual Studio Code总是要求git凭据(Visual Studio Code always asking for git credentials)
    问题 我开始使用Visual Studio Code,并且试图将测试项目保存到GitHub中,但是Visual Studio Code总是要求我提供GitHub凭据。 我已经在我的PC GitHub Desktop和Git上安装了,我已经运行了: git config --global credential.helper wincred 但是Visual Studio Code仍在要求提供凭据。 有什么帮助吗? 这是我的.gitconfig文件,位于用户个人资料以下: [filter "lfs"] clean = git-lfs clean %f smudge = git-lfs smudge %f required = true [user] name = ddieppa [user] email = fake@live.com [credential] helper = wincred 这是要求提供凭据的弹出窗口: 我在弹出窗口中输入我的GitHub凭据,但仍在Visual Studio Code的Git输出窗口中收到此错误: remote: Anonymous access to ddieppa/LineOfBizApp.git denied. fatal: Authentication failed for 'https://github.com/ddieppa
  • jenkins代码部署服务器技术文档
    jenkins安装 windows操作系统 Jenkins是由Java开发的,所以需要提前准备Java环境,安装Jenkins之前,还需要先安装Tomcat,因为Tomcat是针对Java的一个开源中间件服务器(容器),基于Java Web的项目需要借助Tomcat 才能运行起来。 Tomcat的官网是: http://tomcat.apache.org/ 打开之后,找到最新的版本安装即可,如下图: 下载后解压,其目录如下图所示: 然后进入bin文件夹,执行startup.bat即可安装启动Tomcat服务器,如下图: 3.安装Jenkins 进入Jenkins官网: https://jenkins.io/zh/ 我们选择针对Windows的稳定版本,如下图: 大概一百多兆,下载有点慢,下载完成后直接点击安装,一路next,但是选择目标路径的时候,记得一定要把Jenkins安装到Tomcat的Webapps路径下(这样才能用浏览器打开Jenkins),如下图: 4. 配置Jenkins Jenkins 安装完成会自动启动 TomCat , 并通过默认浏览器打开:http://localhost:8080/ (你也可以手动进Tomcat的bin/目录下启动startup.bat ,通过浏览器访问:http://localhost:8080/) 如下图: 根据提示,打开: D
  • 如何通过SSH使用Sublime(How to use Sublime over SSH)
    问题 当我通过SSH进入工作服务器时,我试图使用Sublime Text 2作为编辑器,但我感到很困惑。 我发现此http://urbangiraffe.com/2011/08/13/remote-editing-with-sublime-text-2/(在许多其他帖子中)看起来可能会有所帮助,但我并不完全遵循,尤其是在第5行中应为远程变量输入的值。我将“ / Users / path / to / local / copy”设置为本地根目录,但我不知道这是否正确或是否还有更多内容去做。 有什么想法吗? 我在OSX10.8上 回答1 有以下三种方式: 使用SFTP插件(商业)http://wbond.net/sublime_packages/sftp-我个人建议这样做,因为在使用密码设置了公共SSH密钥后,它是安全,容易并且值得每一分钱的http://opensourcehacker.com/2012/针对开发人员的10/24 / ssh密钥和无密码登录基础/ 如注释中所述,使用osxfuse和sshfs将远程作为本地文件系统osxfuse 。 根据OSX版本和您对UNIX文件系统的熟练程度,这可能会有点困难。 像rmate一样,可以使用某种本地守护程序通过远程隧道进行文件编辑(非常困难,麻烦,但与sudo兼容)http://blog.macromates.com/2011
  • GitLab git用户密码(GitLab git user password)
    问题 我刚刚安装了GitLab。 我创建了一个名为project-x的项目。 我已经创建了几个用户并将其分配给该项目。 现在我尝试克隆: git clone git@192.168.0.108:project-x.git 它提示我输入密码。 我应该使用什么密码? 回答1 它提示我输入密码。 不应该这样如果您具有代表有权访问project-x的用户的正确公钥/私钥,则gitlab不会要求您任何东西。 但这假设ssh -vT git@192.168.0.108首先工作。 回答2 与当前方案不严格相关。 有时,当系统提示您输入密码时,是因为您添加了错误的*原始格式(HTTPS而不是SSH) HTTP(S)协议通常用于具有强大用户名和密码的公共存储库 SSH身份验证在内部项目中更为常见,在内部项目中,您可以使用ssh-key-file和简单的密码短语进行身份验证 GitLab用户更有可能使用SSH协议 使用查看您的远程信息 git remote -v 如果看到HTTP(S)地址,这是将其更改为SSH的命令: git remote set-url origin git@gitlab.my_domain.com/example-project.git 回答3 来自https://github.com/gitlabhq/gitlab-shell/issues/46的解决方案为我工作。
  • git(4)服务器上的 Git
    4 服务器上的 Git 到目前为止,你应该已经学会了使用 Git 来完成日常工作。然而,如果想与他人合作,还需要一个远程的 Git 仓库。尽管技术上可以从个人的仓库里推送和拉取修改内容,但我们不鼓励这样做,因为一不留心就很容易弄混其他人的进度。另外,你也一定希望合作者们即使在自己不开机的时候也能从仓库获取数据 — 拥有一个更稳定的公共仓库十分有用。因此,更好的合作方式是建立一个大家都可以访问的共享仓库,从那里推送和拉取数据。我们将把这个仓库称为 "Git 服务器";代理一个 Git 仓库只需要花费很少的资源,几乎从不需要整个服务器来支持它的运行。 架设一台 Git 服务器并不难。第一步是选择与服务器通讯的协议。本章第一节将介绍可用的协议以及各自优缺点。下面一节将介绍一些针对各个协议典型的设置以及如何在服务器上实施。最后,如果你不介意在他人服务器上保存你的代码,又想免去自己架设和维护服务器的麻烦,倒可以试试我们介绍的几个仓库托管服务。 如果你对架设自己的服务器没兴趣,可以跳到本章最后一节去看看如何申请一个代码托管服务的账户然后继续下一章,我们会在那里讨论分布式源码控制环境的林林总总。 远程仓库通常只是一个裸仓库(bare repository) — 即一个没有当前工作目录的仓库。因为该仓库只是一个合作媒介,所以不需要从硬盘上取出最新版本的快照;仓库里存放的仅仅是 Git 的数据
  • 使用Git push部署项目(Deploy a project using Git push)
    问题 是否可以使用git push部署网站? 我有一种直觉,它与使用git钩子在服务器端执行git reset --hard有关,但是我将如何实现呢? 回答1 我在此站点上找到了此脚本,它似乎运行得很好。 将.git目录复制到Web服务器在本地副本上,修改.git / config文件并将您的Web服务器添加为远程服务器: [remote "production"] url = username@webserver:/path/to/htdocs/.git 在服务器上,用此文件替换.git / hooks / post-update(在下面的答案中) 添加对文件的执行访问权限(同样,在服务器上): chmod +x .git/hooks/post-update 现在,只需本地推送到您的Web服务器,它将自动更新工作副本: git push production 回答2 使用下面的更新后文件: 将.git目录复制到Web服务器在本地副本上,修改.git / config文件并将您的Web服务器添加为远程服务器: [remote "production"] url = username@webserver:/path/to/htdocs/.git 在服务器上,将.git / hooks / post-update替换为以下文件添加对文件的执行访问权限(同样,在服务器上): chmod
  • 使用Git时如何解决权限被拒绝(公钥)错误?(How to solve Permission denied (publickey) error when using Git?)
    问题 我在Mac Snow Leopard上,并且刚刚安装了git 。 我刚试过 git clone git@thechaw.com:cakebook.git 但这给了我这个错误: Initialized empty Git repository in `/Users/username/Documents/cakebook/.git/` Permission denied (publickey). fatal: The remote end hung up unexpectedly 我想念什么? 我也尝试过使用ssh-keygen而不设置密码,但是仍然存在相同的错误。 回答1 如果用户之前未生成ssh公用/专用密钥对 该信息在theChaw上有效,但可以应用于支持SSH pubkey身份验证的所有其他git存储库。 (例如,请参见gitolite,gitlab或github。) 首先,请设置您自己的公钥/私钥对集。 它可以使用DSA或RSA,因此基本上您设置的任何密钥都可以使用。 在大多数系统上,您可以使用ssh-keygen。 首先,您需要CD进入.ssh目录。 打开终端并运行: cd ~/.ssh && ssh-keygen 接下来,您需要将此复制到剪贴板。 在OS X上运行: cat id_rsa.pub | pbcopy cat id_rsa.pub | pbcopy
  • 【Jenkins】Jenkins + Docker + Docker Compose + Harbor 实现 Spring Boot 项目持续集成
    环境安装 安装 Docker 参考 Linux 安装 Docker 安装 Docker Compose 参考 安装 Docker Compose 安装 Jenkins 参考 Docker Compose 安装 Jenkins 安装 Harbor 镜像仓库 参考 Harbor Docker 镜像仓库的安装 以上安装完成后,需要在 Jenkins 服务器和部署服务器上配置 Harbor 的镜像仓库地址 新增 Harbor 仓库 编写 Dockerfile 和 Docker Compose 在 Spring Boot 项目中新增 Dockerfile 文件 FROM openjdk:8-jre COPY recruit-0.0.1-SNAPSHOT.jar app.jar ENTRYPOINT ["java", "-jar", "/app.jar"] EXPOSE 80 新增 docker-compose.yml 文件 version: '3.1' services: recruit: restart: always image: harbor.yuu.com/recruit/recruit container_name: recruit ports: - 80:80 networks: - boot networks: boot: external: name: recruit 创建
  • Jenkins学习笔记(二):Jenkins自动部署vue项目
    Jenkins自动部署vue项目 环境准备安装Jenkins安装NodeJS 配置插件配置任务配置 环境准备 博主主要参考这篇文章完成jenkins自动化部署vue: jenkins自动化部署vue,我这篇文章主要写我的踩坑,然后踏上成功之路! 安装Jenkins 如果还没有安装Jenkins的朋友参考这篇文章: Docker学习笔记(一):安装Jenkins及自动部署maven项目. 安装NodeJS 方法一: 由于博主用Docker安装的Jenkins,所以需要在Jenkins容器里中安装NodeJS环境。 #进入Jenkins容器 docker exec -it jenkins bash #安装NodeJS apk add --no-cache nodejs #检查环境是否安装成功 node -v npm -v 方法二: 去NodeJS官方下载*.tar包,然后解压。 #编辑 vi /etc/profile #在末尾添加 export NODE_HOME=/nodejs路径 export PATH=$PATH:$NODE_HOME/bin export NODE_PATH=$NODE_HOME/lib/node_modules #保存并退出 :wq! #生效 source /etc/profile #检查环境是否安装成功 node -v npm -v 配置 插件配置 1