关卡提示:
有一个git存储库位于ssh://bandit27-git@localhost/home/bandit27 git/repo通过端口2220。用户bandit27-git的密码与用户bandit27的密码相同。克隆存储库并查找下一级别的密码。
解题开始,建立/tmp/bdit27克隆报错:权限不足
bandit27@bandit:~$ git clone ssh://bandit27-git@localhost:2220/home/bandit27-git/repo /tmp/bdit27
Cloning into '/tmp/bdit27'...
The authenticity of host '[localhost]:2220 ([127.0.0.1]:2220)' can't be established.
ED25519 key fingerprint is SHA256:C2ihUBV7ihnV1wUXRb4RrEcLfXC5CXlhmAAM/urerLY.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Could not create directory '/home/bandit27/.ssh' (Permission denied).
Failed to add the host to the list of known hosts (/home/bandit27/.ssh/known_hosts).
_ _ _ _
| |__ __ _ _ __ __| (_) |_
| '_ \ / _` | '_ \ / _` | | __|
| |_) | (_| | | | | (_| | | |_
|_.__/ \__,_|_| |_|\__,_|_|\__|
This is an OverTheWire game server.
More information on http://www.overthewire.org/wargames
bandit27-git@localhost's password:
git clone -p ssh://bandit27-git@localhost/home/bandit27-git/repo:2220 /tmp/bdit27
Permission denied, please try again.
bandit27-git@localhost's password:
Permission denied, please try again.
bandit27-git@localhost's password:
Connection closed by 127.0.0.1 port 2220
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
难道必须进入/tmp/bdit27目录才能克隆?
bandit27@bandit:~$ pwd
/home/bandit27
bandit27@bandit:~$ cd /tmp/bdit27
bandit27@bandit:/tmp/bdit27$ git clone ssh://bandit27-git@localhost:2220/home/bandit27-git/repo
Cloning into 'repo'...
The authenticity of host '[localhost]:2220 ([127.0.0.1]:2220)' can't be established.
ED25519 key fingerprint is SHA256:C2ihUBV7ihnV1wUXRb4RrEcLfXC5CXlhmAAM/urerLY.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Could not create directory '/home/bandit27/.ssh' (Permission denied).
Failed to add the host to the list of known hosts (/home/bandit27/.ssh/known_hosts).
_ _ _ _
| |__ __ _ _ __ __| (_) |_
| '_ \ / _` | '_ \ / _` | | __|
| |_) | (_| | | | | (_| | | |_
|_.__/ \__,_|_| |_|\__,_|_|\__|
This is an OverTheWire game server.
More information on http://www.overthewire.org/wargames
bandit27-git@localhost's password:
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.
克隆完成。查找密码文件
bandit27@bandit:/tmp/bdit27$ ls -al
total 408
drwxrwxr-x 3 bandit27 bandit27 4096 Jan 15 02:07 .
drwxrwx-wt 1080 root root 405504 Jan 15 02:08 ..
drwxrwxr-x 3 bandit27 bandit27 4096 Jan 15 02:08 repo
bandit27@bandit:/tmp/bdit27$ cd repo
bandit27@bandit:/tmp/bdit27/repo$ ls
README
bandit27@bandit:/tmp/bdit27/repo$ cat README
The password to the next level is: AVanL161y9rsbcJIsFHuw35rjaOM19nR
bandit27@bandit:/tmp/bdit27/repo$
名称
git-clone - 将存储库克隆到新目录中
git clone [–template=<template_directory>]
[-l] [-s] [–no-hardlinks] [-q] [-n] [–bare] [–mirror]
[-o ] [-b ] [-u ] [–reference ]
[–dissociate] [–separate-git-dir ]
[–depth ] [–[no-]single-branch] [–no-tags]
[–recurse-submodules] [–[no-]shallow-submodules]
[–jobs ] [–] []
描述
将存储库克隆到新创建的目录中,为克隆存储库中的每个分支创建远程跟踪分支(可见使用git branch -r),并创建并签出分支存储库当前活动分支中分支的初始分支。
克隆之后,git fetch没有参数的平原将更新所有远程跟踪分支,并且git pull如果有的话,一个不带参数的远程主分支将会合并到当前主分支中(当“–single-branch”为给出;见下文)。
这种默认配置是通过创建对远程分支头的引用refs/remotes/origin以及通过初始化remote.origin.url和remote.origin.fetch配置变量来实现的。
选项
–local -l
当要克隆的存储库位于本地计算机上时,此标志绕过正常的“Git aware”传输机制,并通过复制 HEAD 和对象下的所有内容并引用目录来克隆存储库。.git/objects/如果可能,目录下的文件被硬链接以节省空间。
如果存储库被指定为本地路径(例如,/path/to/repo),这是默认的,并且 -
local 本质上是没有操作的。如果存储库被指定为 URL,那么该标志将被忽略(并且我们从不使用本地优化)。指定–no-local将在/path/to/repo给定时重写默认值,而不是使用常规 Git 传输。
–no-hardlinks
强制从本地文件系统的存储库复制进程,以复制目录下的.git/objects文件而不是使用硬链接。如果您试图对存储库进行备份,这可能是可取的。
–shared -s
当要克隆的存储库位于本地计算机上时,将自动设置.git/objects/info/alternates为与源存储库共享对象,而不是使用硬链接。生成的存储库首先没有任何对象。
注意:这是一个可能危险的操作;除非你了解它你不要使用它。如果您使用此选项克隆存储库,然后删除源存储库中的分支(或使用任何其他Git命令使任何现有的未提交的提交未引用),则某些对象可能会变为未引用(或悬挂)。这些对象可能被git commit自动调用的普通 Git 操作(如)删除git gc --auto。(请参阅 git-gc [1]。)如果这些对象被删除并被克隆存储库引用,则克隆的存储库将会损坏。
请注意,git repack如果在-l克隆的存储库中运行时没有选项,-s则会将源存储库中的对象复制到克隆存储库中的包中,从而节省磁盘空间clone -s。但是,运行是安全的,默认情况下git gc使用该-l选项。
如果要打破克隆-s在其源存储库中的存储库的依赖关系,可以简单地运行git repack -a以将源存储库中的所有对象复制到克隆存储库中的包中。
–reference-if-able
如果参考存储库位于本地计算机上,则自动设置.git/objects/info/alternates为从参考存储库获取对象。将已经存在的存储库用作备用存储库将需要从正在克隆的存储库中复制更少的对象,从而降低网络和本地存储成本。使用时–reference-if-able,会跳过一个不存在的目录,并显示警告而不是中止克隆。
注意:请参阅–shared选项的注释,以及–dissociate选项。
–dissociate
借助–reference仅使用选项指定的引用存储库借用对象,以减少网络传输,并通过制作所需的借用对象的本地副本,在克隆完成后停止借用它们。当从已经借用另一个存储库中的对象的存储库本地克隆时,也可以使用此选项 - 新存储库将借用同一存储库中的对象,并且此选项可用于停止借用。
–quiet -q
安静地操作。进度未报告给标准错误流。
–verbose -v
运行详细。不影响向标准错误流报告进度状态。
–progress
当连接到终端时,默认情况下,标准错误流中会报告进度状态,除非指定了-q。即使标准错误流未定向到终端,此标志也会强制进度状态。
–no-checkout -n
克隆完成后,不执行HEAD签出。
–bare
制作一个bareGit 存储库。也就是说,不是创建,并把行政文件/.git,使本身$GIT_DIR。这显然意味着,-n因为没有地方可以检查工作树。此外,遥控器上的分支头直接复制到相应的本地分支机构头上,而无需将其映射到refs/remotes/origin/。使用此选项时,不会创建远程跟踪分支和相关配置变量。
–mirror
设置源存储库的镜像。这意味着–bare。相比–bare,–mirror不仅映射源到目标的本地分支的地方分支,它映射所有参考文献(包括远程跟踪分支,笔记等),并设置了一个的
Refspec 构造,使得所有这些参考文献通过覆盖git remote update在目标存储库。
–origin -o
不要使用远程名称origin来跟踪上游存储库,请使用。
–branch -b
而不是将新创建的 HEAD 指向克隆存储库 HEAD 指向的分支,而是指向分支。在非裸仓库中,这是将被检出的分支。–branch也可以在生成的存储库中提交标签并分离 HEAD。
–upload-pack -u
当给定时,通过 ssh 访问要克隆的存储库,这为另一端运行的命令指定了非默认路径。
–template=<template_directory>
指定将使用模板的目录; (请参阅 git-init [1]的“TEMPLATE DIRECTORY”部分。)
–config = -c =
在新创建的存储库中设置配置变量; 这会在储存库初始化之后立即生效,但是在获取远程历史记录或检出任何文件之前。关键是与 git-config [1]预期的格式相同(例如,core.eol=true)。如果为同一个键指定了多个值,则每个值都将写入配置文件。例如,这可以安全地将其他提取参数添加到原始远程。
–depth
创建一个shallow历史截断为指定数目的提交的克隆。暗示–single-branch除非–no-single-branch给出所有分支的提示附近的历史。如果你想要简单地克隆子模块,也可以通过–shallow-submodules。
–shallow-since=
在指定时间后创建一个具有历史记录的浅表克隆。
–shallow-exclude=
创建具有历史记录的浅层克隆,但不包括从指定远程分支或标记可访问的提交。该选项可以多次指定。
–no-single-branch
只克隆导致单个分支尖端的历史记录,无论是由–branch选项指定还是主分支远程的HEAD指向。进一步提取到生成的存储库中将只会更新分支的远程跟踪分支,此选项用于初始克隆。如果在–single-branch创建克隆时远程的 HEAD 没有指向任何分支,则不会创建远程跟踪分支。
–no-tags
不要克隆任何标签,并remote..tagOpt=–no-tags在配置中设置,确保将来git pull和git fetch操作不会跟随任何标签。后续显式标记提取仍然有效,(请参阅 git-fetch [1])。
可以结合使用–single-branch来克隆和维护分支,而不是除单个克隆分支之外的引用。这对于维护某些存储库默认分支的最小克隆以实现搜索索引很有用。
–recurse-submodules=<pathspec
创建克隆后,根据提供的
pathspec 初始化和克隆子模块。如果未提供 pathspec,则将初始化并克隆所有子模块。子模块使用其默认设置进行初始化和克隆。生成的克隆已submodule.active设置为提供的 pathspec 或“。” (意思是所有子模块),如果没有提供 pathspec。这相当于git submodule update --init --recursive克隆完成后立即运行。如果克隆库不具有 worktree /结帐忽略此选项(即如果任何的–no-checkout/ -n,–bare或–mirror给出)
–no-shallow-submodules
所克隆的所有子模块将会变浅,深度为1。
–separate-git-dir=
不要将克隆的存储库放置在它应该存在的位置,而应将克隆的存储库放置在指定的目录中,然后创建一个与文件系统无关的 Git 符号链接。结果是 Git 仓库可以从工作树中分离出来。
-j --jobs
同时获取的子模块的数量。默认为submodule.fetchJobs选项。
(可能是远程)从中克隆的存储库。有关指定存储库的更多信息,请参阅下面的
URLS 部分。
要克隆到的新目录的名称。如果没有明确指定目录(repofor /path/to/repo.git和foofor host.xz:foo/.git),则使用源代码库的“人道”部分。只有当目录为空时才允许克隆到现有目录。