Search

레이블이 ssh인 게시물을 표시합니다. 모든 게시물 표시
레이블이 ssh인 게시물을 표시합니다. 모든 게시물 표시

2017년 1월 8일 일요일

[OS] [Linux] [ssh] 여러 노드 간 비밀번호 없이 접근하기. (SSH Key 만들기)

#1. 들어가기
여러 노드를 이용해 분산처리를 하다보면 ssh를 통해 많은 명령어를 처리하게 된다. 이 때, 매번 패스워드를 입력해야 하는 번거로움을 겪거나, 애플리케이션을 이용 시 Authorization 관련 에러를 만나는 경우가 있다.
이럴 경우 어떻게 해결하는지 알아보자.


#2. 현재 상태 확인
현재 OSKAR01라는 노드에서 martin이라는 아이디를 사용중이라고 가정하자.
커맨드 창에 date 라고 입력하여 날짜를 확인해본다. (아주 잘 된다.)

하지만, 아래처럼 입력하면 어떻게 될까?
[martin@OSKAR01 ~]$ ssh martin@OSKAR01 date
ssh를 통해 내 아이디로 현재 위치에 내가 date 명령어를 수행하겠다는데, 귀찮게 비밀번호를 물어본다..

노드가 한두개라면 불편함을 감수할 수도 있겠지만, 수십대를 관리한다고 생각해보자. 매번 한 줄의 명령어를 실행하기 위해 패스워드를 수십번 입력하는 일은 참으로 번거로울 것이다. 그래서 우리는 마치 열쇠처럼 공개키를 이용해 자유롭게 드나드는 방식을 사용한다.


#3. SSH 공개키 만들기
martin이라는 아이디로 OSKAR01과 OSKAR02라는 노드에 자유롭게 드나들기 위한 공개키를 만드는 상황을 가정해보자.
우선 .ssh 폴더에 들어가서 키를 만든 후,
제대로 생성이 되었는지 확인한 다음,
키를 사용할 노드들에 복사해보자.
[martin@OSKAR01 ~]$ cd .ssh
[martin@OSKAR01 ~]$ ssh-keygen -t rsa
[martin@OSKAR01 ~]$ ls -alh
[martin@OSKAR01 ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub martin@OSKAR01
[martin@OSKAR01 ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub martin@OSKAR02

다시 한 번 date 명령어를 이용해 테스트 해보자.
[martin@OSKAR01 ~]$ ssh martin@OSKAR01 date
[martin@OSKAR01 ~]$ ssh martin@OSKAR02 date
두 노드에서 비밀번호를 묻지 않고 날짜를 잘 보여준다.



2016년 2월 18일 목요일

[Linux] [CentOS7] [ssh] SSH 포트번호를 바꾸어보자.

SSH Port 번호 변경

우분투와 마찬가지로 아래와 같은 명령으로 sshd_config파일을 열어, Port 부분의 주석을 해제하고 원하는 포트 번호를 입력하고 저장하면 된다.




위 그림에서 보여지듯이, /etc/ssh/sshd_config 파일을 수정하면 된다.


수정 후, 네트워크 서비스를 재시작해주면 완료된다.

# service network restart


하우에버, 1985번 포트로 접속이 안될것이다.

이유는 CentOS에 있는 SELinux가 SSH 포트를 기본 포트번호인 22번으로 고정하고 있기 때문이다. 해결방법은 SELinux의 SSH 포트 정의에 1985번으로 변경해주면 된다.

이 작업은 semanage 프로그램으로 해결 가능하다. semanage는 yum 프로그램을 이용해 설치한다.

# yum install policycoreutils-python


SSH 포트 정의 내용을 확인한다.

# semanage port -l | grep ssh



ssh_port_t TCP 22

ssh_port_t TCP 22

히밤 역시 22번으로 고정된것을 확인할 수 있다.
아래 명령을 이용해서 ssh_port_t 정의에 TCP 포트 1985번을 추가해주면 끝난다.

# semanage port -a -t ssh_port_t -p tcp 1985


다시 데몬을 리스타토 해준다.

# service network restart
# ss -nalt


역시 정상적으로 1985번이 오픈된것을 확인할 수 있을 것이다.
ssh로 접속 테스트를 해보면 정상적으로 작동된다.

# ssh -P 1985 localhost