Tag Archives: ssh

자주 사용하는 SSH 호스트 Alias 설정하기

자주 사용하는 호스트의 경우 매번 주소를 정확히 입력하기도 번거롭고 불편한면이 없잖아 있습니다. 그래서 따로 쉘스크립트를 만들어서 사용하기도 했었는데요. SSH Config 파일을 만들어서 손쉽게 이 문제를 해결할 수 있습니다.

다음과 같은 명령어를 사용하여 Config 파일을 생성합니다.

$ touch ~/.ssh/config
$ chmod 600 ~/.ssh/config

만약에 자신의 홈디렉토리에 .ssh 디렉토리가 존재하지 않는다면 다음과 같이 생성해 주시면 됩니다.

$ mkdir ~/.ssh/
$ chmod 700 ~/.ssh/

이제 설정파일을 생성했으니 내용을 추가해 보겠습니다.

Host theeye
  HostName theeye.pe.kr
  User eye

Host cacti manage
  HostName manage.mysomesite.theeye.pe.kr

Host *
  User eye

첫번째 단락의 설정은 theeye라는 호스트를 설정한 예시입니다. 접속에 사용할 사용자의 아이디는 eye를 사용합니다. 두번째 단락의 경우 하나의 호스트네임에 두개의 별칭을 사용하였습니다. cacti 또는 manage를 사용하여 접속하면 같은 호스트에 접속을 하게 됩니다. 마지막으로 다른 모든 호스트에 특정 유저로 로그인하게 하는 옵션입니다. 가령 하나의 회사에서 보유하고 있는 모든 서버들의 계정이 admin이라면 여기에 admin을 등록해 두면 편리할 것입니다.

$ ssh eye@theeye.pe.kr

이제 위와 같은 명령어 대신에 다음과 같은 명령어를 사용하여 접속하실 수 있습니다.

$ ssh theeye

매우 간단해졌습니다.  비밀번호를 물어보는것조차 자동으로 처리했으면 하신다면 [scp, ssh, rsync등을 사용할때에 SSH 비밀번호 묻는것 피하기]을 참고하시기 바랍니다.

scp, ssh, rsync등을 사용할때에 SSH 비밀번호 묻는것 피하기

파일을 복사하기 위해 scp를 사용할때 비밀번호를 물어오게 됩니다. 또한 ssh를 통한 rsync를 사용할때에도 해당 서버의 계정과 비밀번호를 알고 있어야 사용할 수 있습니다. expect라는 명령을 사용하여 자동로그인 스크립트를 개발할 수도 있습니다만 가장 일반적으로 사용하는 공개키/비밀키 조합을 이용하는 방법을 정리해 보겠습니다.

1. 사용자가 scp/ssh/rsync등의 명령을 실행하기 위한 호스트에서 다음과 같은 방법으로 키를 발급합니다.

$ ssh-keygen -t rsa

위의 명령을 사용할 시 passphrase들을 물어오게 됩니다. 3번정도 물어오는데 이때에 모두 그냥 엔터를 치시면 됩니다. 실행이 정상적으로 된다면 비밀키와 공개키 한쌍이 생성됩니다. 변경을 하지 않았다면 기본적으로 ~/.ssh/id_rsa.pub 에 공개키가 저장됩니다.

2. 위에서 만들어진 id_rsa.pub파일을 ftp, scp, rsync, rz등 무엇을 사용해도 상관없으니 어디가로 다운받아놓도록 합시다.

3. 이제 scp/ssh/rsync를 통한 원격 접속을 하기 위한 호스트로 접속을 합니다.

4. 아까 다운받아두었던 id_rsa.pub파일을 ~/.ssh/authorized_keys로 바꿔 업로드 또는 추가 합니다.

$ cat id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 700 ~/.ssh/authorized_keys

그냥 손쉽게 mv, cp를 사용하지 않고 cat을 사용하는 이유는 이미 authorized_keys가 존재할 경우 새로운 키를 단순히 추가하기 위함입니다. 위와같이 리다이렉트(append: >>)를 사용할 경우 파일이 존재한다면 덧붙이기를 하게 되고 파일이 없을 경우 새로 생성하게 됩니다. 또한 여기서 권한을 주는 것은 매우 중요하니 chmod를 하는것을 잊지 말도록 합시다.

5. ssh는 기본적으로 root 로그인을 허용하지 않고 있습니다. root 로그인을 해야 하는 상황일 경우 /etc/ssh/sshd_config 파일을 수정하도록 합니다. 기본적으로 no로 되어있습니다.

PermitRootLogin yes

위의 설정은 root를 사용하기 위한 설정이며 꼭 필요한 경우가 아닐 경우 보안상 설정을 피하는것이 좋습니다.