ssh 연결을 이것저것 시도하던 중 알게 된게 ~/.ssh/config

 

그러다 ssh 클라이언트가 config를 어떻게 참조하는지 알아보았댜.

 

주로 git과 연결하기 위해 ssh 를 사용하다가 알아보게 되었다.

 

ssh git@gitlab.com -p 2200 -i ~/.ssh/id_rsa

 

이런 식으로 명령어를 사용하게 되는데

 

처음에는 명령어에 적힌 옵션을 먼저 반영한다.

 

이후에는 사용자의 ~/.ssh/config를 참조하고

 

사용자의 config 파일이 없으면 전체 시스템의 config 파일, /etc/ssh/ssh_config 파일을 참조한다.

 

 

 

Host my-server
    HostName 10.10.10.10
    User git
    Port 2200

 

.ssh/config 파일은 보통 이런 구성을 갖고 있다.

 

Host는 별칭이라고 보면 된다.

HostName 은 접속하려는 호스트 Url 이나 ip이다

User, Port는 접속하려는 사용자와 Port이다.

 

config 파일에 키를 등록 후

ssh my-server 

이런 식으로 별칭을 호출해서 간단하게 명령어를 사용할 수도 있다.

기존에 직접 제원정보를 명령어에 적지 않아도 되어 보안에 조금이나마 도움이 된다고 한다.

 

파일의 참조 순서와 적용 순서는 반대이다. ( )

 

참조 뒤에

/etc/ssh/ssh_config 값을 적용하고

이후에 ~/.ssh/config 값을 적용한다.

마지막으로 명령어에 적힌 옵션을 적용한다.

 

사용자의 config 파일을 읽을때

Host 를 먼저 확인한다.

이후 맞는 Host가 없는 경우 

<Host *>로 지정된 섹션의 설정을 따른다.

 

또한 특정 키를 지정할 수 있어서 여러 서버의 ssh 연결을 관리하기 용이하다.

 

Host *
   User normal
   Port 22

Host server1
    HostName 192.192.192.192
    User user1
    Port 2200
    IdentityFile ~/.ssh/id_rsa
    KexAlgorithms +diffie-hellman-group14-sha1
    
Host server2
    HostName gitlab.com
    User git
    Port 2201
    IdentityFile ~/.ssh/id_rsa_git

 

이런식으로 사용할 수 있다.

 

ssh-add 라는 녀석도 있다.

ssh key에 비밀번호를 입력해여 하는 경우

반복작업이 되지 않도록 ssh-add agent에 저장해서 한 번 입력 후에는 비밀번호를 입력하지 않아도 되는 기능이다.

 

 

+ Recent posts