본문 바로가기

개발/Linux

SSH

SSH(Secure Shell)은 네트워크, 운영 체제 및 구성을 관리한다.

ssh 프로토콜은 암호화를 사용하여 클라이언트와 서버 사이의 연결을 보호한다.

개인키-공개키 방식으로 중간에 암호를 해킹당해도 원본을 알 수 없고 강력한 인증 방식을 지원하기 때문에 보안적으로 우수한 프로토콜.

보안적으로 취약했던 기존 rsh, ftp, rlogin, telnet 등을 대체하기 위해 설계됨.
기존의 유닉스 시스템 셸에 원격 접속하기 위해 사용하던 텔넷은 암호화 X.

기본 22번 port를 사용해서 네트워크로 연결되어 다른 리눅스 서버로 접속할 때 사용한다.

ssh 서버 실행 파일 : /etc/sbin/sshd
ssh 클라이언트 실행 파일 : /etc/bin/ssh

 

원격 서버에 ssh 프로토콜을 사용하여 터미널에 접속하려면

  1. 22번 tcp 포트가 방화벽에서 열려 있어야 함
  2. ssh 서버 프로그램이 설치 및 구동되고 있어야 함
    • 리눅스 대부분의 최신 배포판은 ssh 서버를 기본적으로 탑재했을 수 있음
  3. ssh 프로토콜로 접속할 수 있는 ssh 클라이언트가 필요함
    • centos7을 설치한 도커 컨테이너의 경우 ssh 명령어가 바로 되지만,
      systemctl 명령어가 되는 centos/systemd 도커 이미지로 만든 컨테이너의 경우 ssh를 설치해 주어야 함


rpm -qa | grep sshd ( ssh 설치 확인 )
yum install openssh-server ( ssh 서버 설치)
systemctl enable sshd
systemctl start sshd
systemctl status sshd


vi /etc/ssh/sshd_config 에서

Port 22 주석해제
PermitRootLogin yes/no 주석해제 (root 로그인 허용/차단)

systemctl restart sshd

systemctl status sshd



방화벽 설정 - 22번 포트 허용

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

 

 

ssh 접속

ssh [사용자 계정]@[원격지 ip] [명령문]

  • 서버의 호스트 주소는 ifconfig 또는 ip addr 명령어로 확인 가능. (yum install net-tools로 설치)

exit → logout

 

ssh -i identity_file : 공용 키 인증을 위한 개인 키를 읽는 파일
ssh -l login_name : 현재와는 다른 계정으로 서버에 접속 시도

ssh -E log_file : 디버그 로그를 로그 파일에 추가

ssh -p port : 원격 호스트에 연결할 포트 명시

ssh -F configfile : 유저의 구성 파일을 명시 (디폴트 파일은 ~/.ssh/config)

더보기



ssh key 만들기

  1. ssh-keygen -f [filename] -t rsa -b 4096
    ssh-keygen -f ~/foo -t rsa -b 4096
  2. -t: 어떤 타입의 암호화 방식을 사용할 것인지 지정. rsa가 디폴트. 4096 비트로 사용하는 것이 권장됨
  3. 키를 생성할 경로 입력 (엔터를 누르면 기본경로에 저장됨)
  4. Enter passphrase(비밀번호 설정)
  5. 서버에 공용 키 복사
    ssh-copy-id -i ~/.ssh/ssh user@host

 

 

파일 복사

scp [복사될 파일명] [원격지id]@[원격지 ip주소]:[파일 받는 위치]

  • 원격지에 있는 파일을 클라이언트 측에 원하는 위치에 복사

'개발 > Linux' 카테고리의 다른 글

SSH pem keygen 만들기  (0) 2021.11.11