타 네트워크에 소속된 PC로 리눅스 서버에 접속하여 사용할 수 있게 하기 위해서 SSH 접속 허용이 필요하다.
아래 블로그를 참조하여 SSH 접속 허용기를 작성해보겠다.
https://kim-yj-0308.tistory.com/3
https://god-logger.tistory.com/124
https://velog.io/@beneficial/%EC%9D%B8%ED%84%B4%EA%B8%B0%EB%A1%9D-ssh%EC%99%80-sshd
참조 블로그들에게 늘 감사한 마음을 느낀다.
SSH(Secure Shell)는 네트워크 상의 다른 컴퓨터에 로그인하거나 원격시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해주는 응용 프로그램 또는 그 프로토콜을 가리킨다.
SSH는 나가는 요청(outbound)이다.
telnet을 사용할 경우 통신 내용은 평문이기에 통신 경로를 읽힐 경우 어카운트 정보나 패스워드가 밝혀질 가능성이 높다. 반면 ssh에는 경로를 따라가는 데이터가 암호화되어 있기에 안정성이 높아진다.
SSHD는 SSH Daemon이다. (=Open server process)
데몬은 백그라운드 상에서 요청을 기다리는 프로그램을 뜻하며, 일반적으로 프로세스이다.
SSH 연결을 받아주기 위해(inbound) 대기하는 프로세스라고 이해하면 된다.
SSH 프로토콜을 사용하여 들어오는 연결을 수신하고 프로토콜의 서버 역할을 한다.
사용자 인증, 암호화, 터미널 연결, 파일 전송 및 터널링을 처리한다.
/etc/ssh/sshd_config : 들어오는 설정(inboud), 암호화 옵션, 인증 옵션, 파일 위치, 로깅 및 기타 다양한 매개 변수를 지정한다.
sshd_config의 주된 설정 항목으로는
가 있다.
port xx
Allowusers <username> root
Protocol 2
ListenAddress 0.0.0.0
SyslogFacility AUTH
/etc/syslog.conf 에서 정의한 로그 facility 코드이다.LogLevel INFO
#Authentication:LoginGraceTime 2m
PermitRootLogin no
root 로그인 허용여부를 결정하는 것이다. yes, no, without-password를 사용할 수 있다.root로 접속이 불가능하다.su 명령으로 root 로 전환하는 것이 보안상 안전하다.#StrictModes yes
#RSAAuthentication yes
PubkeyAuthentication yes
sshd가 public key 기반의 인증을 사용할 것인지 여부를 정의한다.#AuthorizedKeysFile .ssh/authorized_keys
RhostsAuthentication no
sshd가 rhosts 기반의 인증을 사용할 것인지 여부를 정의한다.#Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
#For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
HostsRSAAuthentication no
/etc/hosts.equiv 파일이 있으면 이것을 사용해 인증한다.PasswordAuthentication yes
PermitEmptyPasswords no
X11Forwarding no
PrintMotd yes
/etc/motd (the message of the day) 파일의 내용을 보여줄 것인지 여부결정.which sshd
which 명령어로 패키지 설치 위치를 알 수 있다.
필자의 경우 /usr/sbin/sshd 에 설치되어 있다.
# openssh-server 설치
sudo dnf install -y openssh-server
# sshd 활성화
sudo systemctl enable sshd
# sshd 가동
sudo systemctl start sshd
# ssh 포트를 방화벽에서 허용
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
같은 네트워크 또는 다른 네트워크에서 SSH 클라이언트를 통해 Rocky Linux에 접속한다.
ssh username@server-ip
현재 로컬 서버가 iptime 공유기로 물려있어 ssh 포트를 외부의 특정 포트로 포트포워딩하여 외부로부터의 접속을 허용하였다.
같은 네트워크 내에서는 ssh 포트로 직접 접속이 가능함을 확인하였고,
외부 네트워크를 핸드폰 데이터의 핫스팟으로 구성하여 포트포워딩한 포트로 접속했을 때도 접속이 가능함을 확인하였다.
성공!