OS

[ Linux ] Remote SSH

jogaknabi_1023 2024. 11. 12. 23:08

1. OpenSSH

SSH v2 Connection Process

(1) client에서 server로 접속 요청 (22번 포트)

(2) server -> client 로 public key 전송. client에서 ~/.ssh/known_hosts에 키 저장

(3) server <-> client 키 교환 알고리즘 사용해서 키 교환

(4) 대칭키가 생성되면 이후 모든 데이터 전송이 대칭키를 사용하여 암호화된다.

 

ssh-keyscan <host> -t <key 유형>

 SSH Host key(=server의 신원을 인증하는데 사용되는 암호화된 키, 즉 server 의 공개키)를 원격으로 검색하고 client의 known_hosts 파일에 추가되는데 사용된다. SSH 연결하기 전 서버의 호스트 키를 확인할 수 있는 도구. 여기서 <host> 부분에는 dns에 등록된 특정 호스트 이름이나 ip 주소 또는 도메인을 적는다. -t 옵션을 사용하면 특정 알고리즘을 사용하는 키를 찾아준다.

 

SSH Server 구성 파일 : /etc/ssh/sshd_config

1. AllowUsers : ssh 접속 허용할 사용자 목록 지정

2. DenyUsers : 접속 거부할 사용자 목록 지정

3. Protocol : 프로토콜 버전. Default 는 2.

4. ListenAddress : sshd가 listen 하고 있는 로컬 주소

5. Port : sshd listen 포트 번호

6. PasswordAutentication : 접속할 때 비밀번호 기반 인증을 사용할지 여부 설정. no로 하였을 때 공개 키 인증이나 다른 인증방법 사용해하한다. 이걸 disable 하면 UsePAM가 no로 설정됨.

7. UsePAM : PAM 사용여부.

 

SSH Client 구성 파일 : /etc/ssh/ssh_config

개인 사용자 설정 파일 : ~/.ssh/config

 

SSH Key Pair 생성방법 (ssh-keygen)

공개 키 또는 개인 키 생성 시 사용함. -t 옵션은 특정 알고리즘(=키 타입) 지정가능.

 

client에서 public key를 server로 보내는 방법

(1) scp로 client 의 public key를 server로 copy -> 복사된 키를 사용해 server 로 ssh 접속 후 cat <공개 키 이름> >> ~/.ssh/authorized_keys 명령 실행

주로 ssh 서버에 비밀번호 없이 안전하게 로그인하기 위해 사용됨. 클라이언트는 공개 키와 개인 키 쌍을 생성하고 공개 키를 SSH 등록하여 인증을 수행한다. 이와 달리 서버가 공개 키 생성할 때는 위에 얘기했던 것처럼 클라이언트와 연결 암호화 후 인증할 때 사용.

(2) 좀 더 빠른 방법 : ssh-copy-id -i <공개 키 파일 경로> <username@hostname>

 

SSH Agent 사용 & 해당 에이전트 환경 변수를 현재 쉘 세션에 설정하는 방법

1. eval $(ssh-agent -s)
ssh-agent는 클라이언트가 ssh 서버 접속할 때 비밀번호를 입력하지 않고도 개인 키를 사용할 수 있도록 도와줌. -s 옵션은 ssh 에이전트가 쉘 스크립트에서 사용할 수 있도록 환경변수 설정하는 출력을 생성함.

2. ssh-add ~/.ssh/<개인 키 이름>

개인 키를 ssh agent 에 추가함.

 

2. VNC (Virtual Network Computing)- Remote Administration

- VNC는 그래픽 데스크탑으로 사용 가능

- 오픈소스

- 두 가지 구성요소 (서버와 클라이언트)

 

VNC Server

- YaST 사용하여 구성됨.

- 방화벽 구성 옵션 사용가능함

- 3가지 옵션

   (1) 세션 관리 기능 포함한 원격 관리 요청 허용: 사용자 세션이 관리되며, 여러 사용자가 동시에 연결할 수 있음. 세션 전환 및 종료 권한 있음. 각 연결은 독립적으로 작동하며 사용자가 로그인한 세션을 유지할 수 있다.
   (2) 세션 관리 기능 불포함한 원격 관리 요청 허용: 원격으로 컴퓨터 제어 가능하되, 세션에 대한 관리 기능이 없어 기존 세션을 종료하거나 전환할 수 없음. 오로지 하나의 세션.
   (3) 원격 관리 요청 전혀 허용 안함: 걍 원격 안됨.

 

일회성(One time) VNC Session

- xineted.d 데몬 통해서 시작함.

- 구성파일은 /etc/xinetd.d/vnc

- Default
   = vnc1~vnc3 가능

   = Java applet은 웹 브라우저에서 실행될 수 있는 작은 프로그램으로, 원격 데스크탑 기능을 제공하기 위해 VNC 서버와 통신한다. 동시에 3개의 원격 VNC 세션을 동시에 연결하고 사용할 수 있다.

   = VNC 서버에서 vnc1 세션과 http 서비스인 vncttpd1 만 활성화되어 있음

- 구성 활성화 하려면 /etc/xinetd.d/vnc 첫 번째 열에 # 문자로 disable = yes 줄을 주석 처리한다. 이후 systemctl reload xinetd 명령 실행

- Xvnc 설정 관련해서는 Xvnc --help 도움받기

 

Client Access

- TCP 5901 포트 디폴트로 사용

- Java web browser 사용은 http://<ip 또는 fqdn 또는 host>:5801