Linux ssh 자동 로그인을 통한 명령어 실행하기

# ssh 로 원격 실행하기 위해선 아래와 같이 대상 호스트와 명령어를 명시한다.
# 만약 10.10.10.1 에서 10.10.10.2 에 접속하여 ls 명령을 사용하고 사용하려면 아래와 같이 사용한다.
[ysoftman@10.10.10.1] ssh 10.10.10.2 ls

# 하지만 매번 접속할 암호를 써줘야 하는 불편함이 있다.
# 이를 해결하기위해서 ssh 를 사용할때 자동으로 로그인을 할 수 있도록 rsa 키를 생성하여 접속 하려는 서버에 등록한다.

# 클라이언트에서 ssh 키를 생성한다.(-t 는 암호타입으로 rsa 와 dsa 가 있다.)
ssh-keygen -t rsa

# 실행하면 여러가지를 물어 보지만 그냥 엔터치고 계속 진행한다.
# 그러면 ~/.ssh 디렉토리 안에 id_rsa (개인키, 0600권한) 와 id_rsa.pub (공개키, 0644권한) 파일이 생성된다.

# 클라에서 생성된 id_rsa.pub 파일의 내용을 접속하려는 서버의 ~/.ssh/authorized_keys 파일에 추가한다.
# (기존의 authorized_keys 에 다른 암호 내용이 있을 수 있기 때문에 덮어씌우면 안된다.)
# authorized_keys 파일 권한을 변경한다.
chmod 644 ~/.ssh/authorized_keys

# 만약 실패할 경우 root 권한으로 (ssh_config 가 아님) 아래 내용을 주석 해제시킨다.
vi /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys

# 그리고 root 권한으로 /etc/init.d/sshd restart 실행하면 된다.
# 추가로 ssh config 파일에 접속 하려는 서버 정보를 설정하면 좀 더 편하게 접속할 수 있다.
vi ~/.ssh/config

# .pub 키가 등록된 서버에 접속(인증)하기 위해선
# 디폴트로 ~/.ssh/id_rsa(id_dsa ..등)를 사용한다.
# 디폴트 대신 사용할 개인키를 명시할 수 있다.
identityfile /Users/ysoftman/.ssh/ysoftman_id_rsa_private_key
host ysoftman_server
hostname 10.10.10.2
user ysoftman
port 22

# 개인 키 파일 위치 명시
identityfile /Users/ysoftman/.ssh/ysoftman_id_rsa_private_key

# 개인키 파일 권한변경
chmod 600 ~/.ssh/ysoftman_id_rsa_private_key

# 이제 다음과 같이 호스트명만 명시하면 접속 할 수 있다.
ssh ysoftman_server

# 기타 config 파일 설정 자세한 내용은
http://man.openbsd.org/ssh_config

#####

# localhost 접속시 다음과 같은 에러가 발생한다면
ssh ysoftman@localhost -p 10022
REMOTE HOST IDENTIFICATION HAS CHANGED

# ~/.ssh/known_hsots 에서 접속대상 서버 정보를 지워(갱신)야 한다.
ssh-keygen -R "[localhost]:1022"
ssh-keygen -R "[127.0.0.1]:1022"

comments:

댓글 쓰기