Level Goal
There is a git repository at ssh://bandit31-git@localhost/home/bandit31-git/repo. The password for the user bandit31-git is the same as for the user bandit31.
Clone the repository and find the password for the next level.
Commands you may need to solve this level
git
0. 문제 풀기위한 개념
- git 사용법
1. bandit31 로그인 비밀번호
47e603bb428404d265f59c42920d81e5
2. git 다운로드
bandit31@bandit:/tmp/kokonut$ git clone ssh://bandit31-git@localhost/home/bandit31-git/repo
home 에 쓰기권한이 없어 /tmp/kokonut디렉토리를 생성후 해당 명령어를 입력했다.
3. 파일 조회
bandit31@bandit:/tmp/kokonut/repo$ cat README.md
This time your task is to push a file to the remote repository.
Details:
File name: key.txt
Content: 'May I come in?'
Branch: master
파일 내용은 다음과 같다. May I come in?이라는 문장을 가진 key.txt 파일을 생성하고 master branch에 push 하라고 한다.
4. 파일 생성 및 추가하기
bandit31@bandit:/tmp/kokonut/repo$ vi key.txt
bandit31@bandit:/tmp/kokonut/repo$ cat key.txt
May I come in?
파일 편집 프로그램인 vi로 key.txt를 생성하고 May I come in? 의 내용을 적어 저장을 했다.
bandit31@bandit:/tmp/kokonut/repo$ git add key.txt
The following paths are ignored by one of your .gitignore files:
key.txt
Use -f if you really want to add them.
bandit31@bandit:/tmp/kokonut/repo$ cat .gitignore
*.txt
bandit31@bandit:/tmp/kokonut/repo$ git add key.txt -f
key.txt 파일을 추가해서 배포를하기위해 git add 명령어를 사용한다. 다음과같이 .gitignore 파일로 인해 추가가 불가능하니 f 옵션을 사용하라고 한다. .gitignore 파일은 repository에 포함시키지 않는 것을 명시하는 파일이다. f 옵션으로 진행하면 파일이 추가가된다.
Tip. 원격서버 저장소 조회
bandit31@bandit:/tmp/kokonut/repo$ git remote -v
origin ssh://bandit31-git@localhost/home/bandit31-git/repo (fetch)
origin ssh://bandit31-git@localhost/home/bandit31-git/repo (push)
git remote -v
를 사용해 원격 repository를 확인할 수 있다.
5. 추가한 파일 commit 그리고 push 하기
bandit31@bandit:/tmp/kokonut/repo$ git commit
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
(use "git push" to publish your local commits)
nothing to commit, working tree clean
bandit31@bandit:/tmp/kokonut/repo$ git push
git commit 명령어를 입력해 진행하자. 진행중에 파일 수정이 필요한데 파일 경로가 있는 # 부분을 삭제하고 저장한다. 그후 git push 명령어를 사용하면 과정이 끝나게 된다.
bandit31-git@localhost's password:
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 329 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: ### Attempting to validate files... ####
remote:
remote: .oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.
remote:
remote: Well done! Here is the password for the next level:
remote: 56a9bf19c63d650ce78e6ec0354ee45e
remote:
remote: .oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.
remote:
To ssh://localhost/home/bandit31-git/repo
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'ssh://bandit31-git@localhost/home/bandit31-git/repo'
원격 repository에 정상적으로 올라가고 그에대한 응답으로 암호정보를 보여준다.
6. 문제 흐름도
git 사용방법에 대한 문제로 깃 repository에 파일을 add 하여 commit으로 확정한후에 push로 배포하는 문제이다.
7. bandit32 비밀번호
56a9bf19c63d650ce78e6ec0354ee45e