본문 바로가기
IT 학습 공간 ::)

리눅스 ssh 명령어 사용법 ( 원격 접속 프로토콜/centos7 )

by 에스타롯사 2019. 5. 12.

안녕하세요 롯사입니다.

 

이번 포스팅은 리눅스 서버에 원격 접속할 때 사용하는 명령어에 대해서 알아보겠습니다.

 

기본적으로 네트워크 통신에 제약이 없는 로컬 pc에서 접속 툴을 이용해서도 접속이

 

가능하고 리눅스 터미널 환경에서 다른 리눅스 서버로도 접속이 가능합니다.

 

이 시간에 다룰 내용은 리눅스 터미널 환경에서 다른 리눅스 서버로 접속하는 부분에

 

대해서 먼저 다루어보겠습니다.

 

 

what is ssh?


보안적으로 취약했던 기존 rsh, rlogin, telnet 등을 대체하기 위해 설계되었고 ( Secure shell )의 

약자입니다. 기본 22번 port를 사용해서 네트워크로 연결돼 다른 리눅스 서버로 접속할 때 사용하는

프로토콜로써 기본 암호화 방식을 지원하고 중간에 암호를 해킹을 당해도 원본을 알 수 없고 강력한

인증 방식을 지원하기 때문에 보안적으로 우수한 프로토콜이라고 할 수 있겠습니다.

ssh 서버 실행 파일 : /etc/sbin/sshd

ssh 클라이언트 실행 파일 : /etc/bin/ssh

 

 

 

그럼 본론으로 들어가서 사용방법에 대해서 알아보겠습니다.

 

 

 

1. openssh-server 설치


* rpm -qa | grep sshd* ( ssh 설치 확인 )

 

전 이미 설치가 되어있습니다.

 

* yum install openssh-server ( ssh 설치 )

 

이미 설치가 되어있지만 편의를 위해서 진행했습니다.

 

* systemctl enable sshd ( 재부팅 후 자동등록 )

* systemctl start sshd ( 서비스 시작 )

* systemctl status sshd  ( 서비스 상태 확인 )

* ps -ef | grep sshd ( 프로세스 상태 확인 )

 

다음과 같이 서비스 시작과 상태를 확인합니다.

정상적으로 잘 동작하고 있네요.

 

 

2. /etc/ssh/sshd_config 설정 및 확인 ( ssh 접속 시 규칙을 정의합니다 )


* vi /etc/ssh/sshd_config

 

vi/vim /etc/ssh/sshd_config 파일을 편집기로 열어서 필요한 부분만 정책에 맞게 수정해줍니다.

 

#Port 22 : ssh 기본 접속 port는 22번입니다. 임의의 port 번호를 지정해서 사용하고 계신 환경이라면

             번호 지정 후에 주석을 해제합니다.

 

#ListenAddress 0.0.0.0 : 기본 default 값은 주석이 처리되어 있어서 정책이 동작하지 않지만 

                               주석을 해제하고 특정 ip를 지정하면 해당하는 ip에서만 접속이 허용됩니다.

 

HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
                              :  ssh 접속을 할 때 필요한 암호화 키가 저장되는 위치로 기본으로 default

                                ECDSA_KEY 암호화 방식을 사용합니다.

#PermitRootLogin no : root 계정으로 원격 접속 시 허용 여부를 정의합니다.

                              허용하려면 주석을 해제하고 no --> yes로 바꿔 주시면 root로 접속이 허용됩니다.

                              보안상 리스크가 있기 때문에 권장드리지는 않습니다.

 

* systemctl restart sshd ( ssh 서비스 재시작 )

 

위의 설정 파일의 내용을 변경하였다면 ssh 서비스 재시작을 해줍니다.

 

 

 

3. 방화벽 설정


* firewall-cmd --zone=public --add-port=22/tcp --permanent ( centos 7 이상 )

  firewall-cmd --permanent --zone=public --add-port=22/tcp  ( 위와 동일 )

  firewall-cmd --reload

 

* iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT ( iptables )

 

centos 7 이상 환경에서 방화벽 (firewalld)와 iptables를 운영하고 계신다면 필수적으로 22번 port를

허용해줍니다.

 

 

 

4. ssh 접속 ( 원격지 접속 )


* ssh [사용자 계정]@[원격지 ip]

  ssh root@192.168.159.129

  exit

 

다음과 같은 형식으로 192.168.159.129 원격지 서버에 접속을 할 수 있습니다.

해당 서버의 password를 입력하고 접속이 성공하게 되면 원격 호스트의 쉘을 사용하게 됩니다.

exit를 누르고 logout 하면 원래의 쉘로 돌아오게 됩니다.

 

 

*~. ssh/know_hosts (홈 디렉터리의. sss/known_hosts)

위와 같이 한번 원격 접속이 이루어지고 나면 사용자 홈 디렉터리의. ssh/know_hosts 파일에 

원격지(192.168.159.129) 접속에 필요한 키 값이 생성되게 됩니다.

 

 

 

특정 옵션을 제외하고 많이 사용하지는 않지만 ssh 접속 시 사용하는 옵션도 한번 체크해 보시고 

넘어가시기 바랍니다.

 

옵션 내요
-a 인증 에이전트 전송을 불허
-e 세션에 대한 이스케이프 문자를 설정
-f 인증과 전송이 설정된 후에 백그라운드에서 ssh를 설정
-l 원격 시스템에 사용할 로그인 이름을 설정
-p 원격 호스트에 연결할 포트를 지정
-v 디버깅모드 자세한 정보 표시 모드를 활성
-x X11 전송을 불가능하게 설정
-L 지정된 원격 호스트와 포트에 전송할 로컬 포트 설정
-R 로컬 호스트와 지정된 포트로 전송될 원격 포트 설정

ex ) ssh [원격 계정]@[원격지_ip] -p [변경할 포트]    ( 포트 변경 시 지정해서 접속 )

      ssh [원격 계정]@[원격지_ip] netstat -ntl          ( 원격 접속 후 바로 수행할 명령문 입력도 가능합니다.)

      


 

이만 포스팅을 마치겠습니다.

 

모두 열공하세요 ^^