Git: SSH 프로 토 콜 서버

    
SSH 프로 토 콜 은 Git 에 원 격 읽 기와 쓰기 동작 을 제공 하 는 데 사용 되 며 원 격 쓰기 작업 의 표준 서비스 입 니 다.
SSH 프로 토 콜 문법 형식
셸 로그 인 권한 이 있 는 사용자 계 정 은 Git 버 전 라 이브 러 리 에 아래 문법 으로 접근 할 수 있 습 니 다.
문법 1: ssh://[@] [:]/home/xxx/repo1. git 문법 2: [@]:/home/xxx/repo1. git
주의: SSH 프로 토 콜 주소 형식 은 두 가지 서로 다른 쓰기 방법 을 사용 할 수 있 습 니 다. 첫 번 째 는 ssh://로 시작 하 는 표준 SSH 프로 토 콜 URL 쓰기 이 고 두 번 째 는 SCP 형식의 쓰기 입 니 다.SSH 프로 토 콜 표준 URL 작성 법 은 다소 복잡 하지만 비 표준 SSH 포트 (비 22) 에 대해 서 는 URL 에 직접 포트 번 호 를 제시 할 수 있 습 니 다. 서버 에 있 는 사용자 계 정 입 니 다. 사용자 이름 을 생략 하면 현재 로그 인 사용자 의 사용자 이름 (호스트 별명 을 설정 하고 사용 한 경 우 는 제외) 을 사용 합 니 다. SSH 프로 토 콜 포트 입 니 다. 기본 값 은 22 입 니 다.기본 포트 가 아 닌 포트 를 사 용 했 을 때 문법 1 을 사용 하 는 것 이 좋 습 니 다.물론 문법 2 를 사용 해도 가능 하지만 ~/. ssh/config 설정 파일 을 통 해 호스트 별명 을 설정 해 야 합 니 다.경로/home/xxx/repo 1. git 는 서버 버 전 라 이브 러 리 의 절대 경로 입 니 다.상대 경 로 를 사용 하면 username 사용자 의 집 디 렉 터 리 입 니 다.암호 인증 을 사용 하려 면 연결 할 때마다 암 호 를 입력 해 야 합 니 다.공개 키 인증 을 사용 하면 암 호 를 입력 하지 않 아 도 됩 니 다.
서버 가설 방식 비교
SSH 프로 토 콜 은 Git 서 비 스 를 실현 하 는 두 가지 방식 이 있다.첫 번 째 는 표준 SSH 계 정 으로 버 전 라 이브 러 리 를 방문 하 는 것 이다.즉, 사용자 계 정 은 서버 에 직접 로그 인하 여 셸 을 얻 을 수 있 습 니 다.이런 표준 SSH 계 정 을 사용 하 는 방식 에 대해 서 는 표준 SSH 서 비 스 를 직접 이용 하면 된다.두 번 째 구현 방식 은 모든 사용자 가 같은 전용 SSH 계 정 으로 버 전 라 이브 러 리 를 방문 하고 방문 시 공개 키 인증 을 통과 하 는 방식 이다.모든 사용자 가 같은 계 정 으로 접근 하지만 연결 을 만 들 때 사용 하 는 서로 다른 공개 키 를 통 해 서로 다른 사용자 신분 을 구분 할 수 있 습 니 다.Gitolite 는 이 방식 을 실현 하 는 서버 소프트웨어 다.표준 SSH 계 정과 전용 SSH 계 정 이라는 두 가지 실현 방식 의 차이 점:
표준 SSH
Gitolite
계좌번호
사용자 당 하나의 계 정
모든 사용자 가 같은 계 정 을 사용 합 니 다.
인증 방식
암호 또는 공개 키 인증
공개 키 인증
셸 에 로그 인
예.
아니.
안전성
활용 단어 참조
좋다
관리자 셸 필요
예.
아니.
버 전 라 이브 러 리 경로
상대 경로 또는 절대 경로
상대 경로
권한 부여 방식
운영 체제 에서 사용자 그룹 과 디 렉 터 리 권한
프로필 인증
분기 쓰기 권한 부여
아니.
Gitolite
경로 쓰기 권한 부여
아니.
Gitolite
난이도
간단 하 다.
복잡 하 다.
실제로 표준 SSH 도 공개 키 인증 방식 으로 사용자 가 같은 계 정 을 공용 으로 사용 할 수 있 지만 이 는 하나의 공공 계 정의 로그 인 암 호 를 여러 사람 에 게 동시에 알려 주 는 것 과 유사 하 다.구체 적 인 조작 은 다음 과 같다. 1.    서버 쪽 에 sparker 와 같은 공공 계 정 을 만 듭 니 다.2.    관리자 가 git 서비스 에 접근 해 야 할 사용자 공개 키 를 수집 합 니 다.예 를 들 어 user1. pub, user2. pub.3.    ssh - copy - id 명령 을 사용 하여 각 git 사용자 의 공개 키 를 서버 의 공개 키 인증 목록 에 원 격 으로 추가 합 니 다.       3.1.     원 격 조작, ssh - copy - id 명령 을 사용 할 수 있 습 니 다.                 $ ssh-copy-id -i user1.pub sparker@server                 $ ssh-copy-id -i user2.pub sparker@server       3.2.     서버 에서 직접 조작 하면 authorized 에 파일 을 추가 합 니 다.keys 파일 중.                 $ cat user1.pub >> ~sparker/.ssh/authorized_keys                 $ cat user2.pub >> ~sparker/.ssh/authorized_keys4.    서버 쪽 sparker 사용자 홈 디 렉 터 리 에 git 라 이브 러 리 를 만 들 면 여러 사용자 가 같은 시스템 계 정 (sparker) 을 이용 하여 git 서 비 스 를 방문 할 수 있 습 니 다.
이렇게 하면 계 정 을 하나씩 설정 하지 않 아 도 되 고 사용자 가 구령 인증 을 하지 않 아 도 되 는 것 을 제외 하고 표준 SSH 가 git 서 비 스 를 배치 하 는 단점 도 적지 않다. 또한 사용 자 를 구분 할 수 없 기 때문에 사용자 에 게 권한 을 부여 할 수 없다.
SSH 공개 키 인증
공개 키 인증 을 실현 하기 위해 인증 클 라 이언 트 로 서 한 측은 두 개의 파일, 즉 공개 키/비밀 키 쌍 을 가 져 야 합 니 다.일반적인 상황 에서 공개 키/비밀 키 는 파일 을 사용자 의 집 디 렉 터 리 에 있 는. ssh 디 렉 터 리 에 만 듭 니 다.사용자 의 집 디 렉 터 리 에. ssh 디 렉 터 리 가 존재 하지 않 는 다 면 SSH 공개 키/비밀 키 쌍 이 생 성 되 지 않 았 음 을 설명 합 니 다.다음 명령 으로 만 들 수 있 습 니 다:
$ ssh-keygen

이 명령 은 사용자 의 집 디 렉 터 리 에. ssh 디 렉 터 리 를 만 들 고 두 개의 파일 을 만 듭 니 다. 1.    id_rsa 비밀 키 파일 은 RSA 알고리즘 을 기반 으로 만 들 어 졌 으 므 로 누설 되 지 않도록 잘 보관 해 야 합 니 다.2.    id_rsa. pub 공개 키 파일 과 idrsa 파일 은 한 쌍 으로 공개 키 파일 로 공개 할 수 있 습 니 다.자신의 공개 키/비밀 키 쌍 을 만 든 후에 아래 명령 을 사용 하여 암호 없 이 원 격 서버 에 로그 인 할 수 있 습 니 다 (즉, 암호 인증 대신 공개 키 인증).
$ ssh-copy-id -i .ssh/id_rsa.pub @

메모: 이 명령 은 사용자 에 게 server 에 있 는 SSH 로그 인 암 호 를 입력 하 라 고 알려 줍 니 다.이 명령 이 실 행 된 후 user 사용자 가 ssh 명령 으로 server 원 격 호스트 에 로그 인 할 때 암 호 를 입력 하지 않 아 도 바로 로그 인 할 수 있 습 니 다.이 명령 은 실제로. ssh/idrsa. pub 공개 키 파일 을 원 격 호스트 server 의 user 집 디 렉 터 리 에 추가 합 니 다. ssh/authorizedkeys 파일 중.공개 키 인증 이 적용 되 는 지 확인 하고 ssh 명령 을 통 해 원 격 호스트 에 연결 합 니 다. 정상 적 이면 직접 로그 인 에 성공 해 야 합 니 다.암 호 를 입력 하 라 고 요구 하면 공개 키 인증 설정 에 문제 가 있 음 을 나타 낸다.SSH 로그 인 에 문제 가 있 으 면 서버 쪽 의/var/log/auth. log 파일 을 보고 진단 할 수 있 습 니 다.
SSH 호스트 별명
실제 사용 중, 때때로 여러 세트의 공개 키/비밀 키 쌍 을 사용 해 야 한다. 예 를 들 어: 1.    기본 공개 키 를 사용 하여 서버 의 git 계 정 에 접근 하면 git 명령 을 실행 할 수 있 지만 셸 로그 인 을 할 수 없습니다.2.    특별히 만 든 공개 키 를 사용 하여 서버 의 git 계 정 에 접근 하면 셸 을 가 져 올 수 있 고 로그 인 후 Git 서버 소프트웨어 를 업그레이드, 유지 보수 등 을 할 수 있 습 니 다.3.    Github 에 가서 다른 공개 키 를 사용 합 니 다 (기본 공개 키 가 아 님).
위의 설명 을 통 해 알 수 있 듯 이 사용 자 는 공개 키/비밀 키 쌍 만 가지 고 있 을 수 있 습 니 다.서로 다른 공개 키/비밀 키 쌍 을 만 들 기 위해 서 는 ssh - keygen 명령 을 사용 할 때 - f 매개 변 수 를 통 해 서로 다른 비밀 키 이름 을 지정 해 야 합 니 다.구체 적 인 용법 은 다음 과 같다.
$ ssh-keygen -f ~/.ssh/

의미 있 는 이름 으로 바 꿔 주세요.명령 이 실 행 된 후 ~/. ssh 디 렉 터 리 에서 지정 한 공개 키/비밀 키 쌍 을 만 듭 니 다. 파일 은 비밀 키 이 고 파일. pub 는 공개 키 입 니 다.
원 격 호스트 로그 인 사용자 집 디 렉 터 리 에 새로 생 성 된 공개 키 를 추가 합 니 다. ssh/authorizedkeys 파일 에 서 는 새로 만 든 공개 키 를 사용 하여 원 격 호스트 의 계 정 에 암호 없 이 로그 인 할 수 있 습 니 다.동작 은 다음 과 같 습 니 다.
$ ssh-copy-id -i .ssh/.pub @

현재 사용자 에 게 여러 개의 공개 키/비밀 키 가 존재 합 니 다. 다음 ssh 로그 인 명령 을 실행 할 때 사용 하 는 공개 키 는 무엇 입 니까?
$ ssh @

당연히 기본 공개 키 ~/. ssh/idrsa.pub.그러면 어떻게 새로운 공개 키 로 server 를 연결 합 니까?SSH 의 클 라 이언 트 설정 파일 ~/. ssh/config 는 호스트 별명 을 만 들 고 호스트 를 연결 할 때 특정한 공개 키 를 선택 할 수 있 습 니 다.예 를 들 어 ~/. ssh/config 파일 의 다음 설정:
host abc     user git     hostname abc.xxx.com     port 22     Identityfile ~/.ssh/abc
hostname 도 IP 로 쓸 수 있 습 니 다.
다음 SSH 로그 인 명령 을 실행 합 니 다:
$ ssh abc

git 명령 을 실행 하거나:
$ git clone abc:/home/abc/repo1.git

이 두 명령 은 각각 다 르 지만 SSH 프로 토 콜 과 같은 호스트 별명: abc 를 사용 합 니 다.위 에서 ~/. ssh/config 파일 에 만들어 진 호스트 별명 을 참고 하여 다음 과 같은 판단 을 할 수 있 습 니 다. 1.    로그 인 한 SSH 호스트 이름 은 abc. xxx. com 입 니 다.2.    로그 인 할 때 사용 하 는 사용자 이름 은 git 입 니 다.3.    인증 할 때 사용 하 는 공개 키 파일 은 ~/. ssh/abc. pub 입 니 다.

좋은 웹페이지 즐겨찾기