ssh config로 ssh 접속 간편하게 하기

😢 이 페이지는 다음 주소로 변경될 예정입니다.

일반적으로 ssh에 접속하기 위해 다음과 같은 명령어를 사용한다.

$ ssh [email protected]

사실 단순해 보이지만 개발자는 게을러야 하므로 ~/.ssh/config에 설정을 작성해두면 더 짧게 사용할 수 있다. ~/.ssh/config가 없다면 빈 파일을 만들면 된다. 파일 내용은 다음과 같다.

Host dev
    HostName dev.haruair.com
    User edward

이렇게 작성하면 다음과 같이 접속 가능하다. (만약 동작하지 않는다면 퍼미션을 확인해주세요. ChangWan Jun님이 chmod 440 ~/.ssh/config 식으로 퍼미션 지정이 필요하다고 알려주셨습니다.)

$ ssh dev

해당 서버가 ssh key를 기본값인 id_rsa를 사용하고 있다면 접속에 문제가 없다. (ssh key를 생성하는 방법은 이 페이지를 참조) 하지만 각각 서버마다 다른 키를 사용하고 있다면 여전히 -i 플래그를 이용해야 해서 번거롭다.

$ ssh dev -i ~/.ssh/haruair.dev
$ ssh company -i ~/.ssh/edward.company

각각 서버마다 어떤 키를 참조할지 config에 미리 작성해둘 수 있다.

Host dev
    HostName dev.haruair.com
    User edward
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/haruair.dev

Host company
    HostName dev.haruair.company
    User edward
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/edward.company

내 경우엔 Github용 키를 별도로 생성해서 등록했는데 다음과 같이 쓸 수 있다.

Host github.com
    User git
    IdentityFile ~/.ssh/haruair.github

이렇게 등록해두면 다음과 같이 해당 주소의 ssh를 사용할 때 해당 키를 참조하게 된다.

$ git clone [email protected]:haruair/some-repo.git

2차 도메인 등의 경우, 다음과 같이 와일드카드로도 지정이 가능하다.

Host *.haruair.com
    User edward
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/haruair.dev

config 파일은 상당히 세세한 범위까지 설정이 가능한데 그 내용은 ssh_config 메뉴얼에서 확인할 수 있다.

ssh 인증키 생성 및 서버에 등록하기

😢 이 페이지는 다음 주소로 변경될 예정입니다.

ssh key를 생성하고 서버에 등록하는 방법은 복잡하지 않다. ssh-keygen으로 공개키/비밀키 한 쌍을 생성하고, 공개키 내용을 접속할 서버에 ~/.ssh/authorized_keys에 저장하면 해당 서버에 비밀번호 없이 ssh 접속이 가능하다.

다음은 클라이언트에서 인증키를 생성하는 방법이다.

$ ssh-keygen -t rsa -C "[email protected]"
Enter file in which to save the key (/home/user/.ssh/id_rsa): /home/user/.ssh/my_ssh_key # 키이름을 넣음
Enter passphrase (empty for no passphrase): ********** # 최초 등록시 사용할 비밀문구를 입력함

-t는 키의 타입이 rsa인지 dsa인지 정하는 플래그고 -C는 코멘트를 남기는 플래그다.

위와 같이 입력하면 my_ssh_key와 my_ssh_key.pub이 생성되는데 *.pub 파일이 공개키로 서버에 등록하면 비밀번호 없이 접속이 가능해진다. 공개키의 내용을 확인하는 방법은 다음과 같다.

$ cat /home/user/.ssh/my_ssh_key.pub

위 명령어를 입력하면 터미널 상에 공개키 내용이 출력된다. 해당 내용을 복사해두자. 이제 이 내용을 서버에 접속해서 ~/.ssh/authorized_keys에 공개키를 추가해준다. 다음은 해당 서버에서 입력할 명령어다.

$ cat >> ~/.ssh/authorized_keys
(이 상태에서 복사한 공개키를 붙여 넣고 엔터를 눌러 줄을 바꾼 후 Ctrl+D를 누르면 저장된다.)

이제 비밀번호 없이 인증키로 로그인이 가능하다.