Categories
SSH

PuTTY 커맨드 라인 옵션: -load 옵션과 -pw 옵션

PuTTY 를 커맨드 라인에서 실행할 때 쓸 수 있는 유용한 옵션들을 살펴보자.

1. -load 옵션

-load 옵션은 저장한 세션을 로드 (load) 할 때 쓴다.

아래 명령은 xtmci 라는 이름으로 저장된 세션의 정보를 이용해서 서버에 접속한다.

c:\putty\putty.exe -load xtmci

세션 파일은 PuTTY 설치 폴더 밑에 있는 sessions 폴더에 있다.

세션 이름에 공백이 포함되어 있을 경우에는 큰따옴표 (“) 로 세션 이름을 둘러싼다.

c:\putty\putty.exe -load “xtmci telnet”

2. -pw 옵션

-pw 옵션은 암호를 지정할 때 쓴다.

c:\putty\putty.exe -pw pass1234

-pw 옵션을 -load 옵션과 함께 쓸 수도 있다.

c:\putty\putty.exe -pw pass1234 -load xtmci

간편하게 서버에 자동으로 로그인하고자 할 때 이 명령을 쓰면 된다.

Categories
SSH

우분투에서 키 인증 방식으로 암호 없이 SSH 서버에 접속하기

키 페어 (pair) 방식으로 SSH 서버에 접속하는 방법을 알아보자.

1. 키 페어 만들기

키 페어는 클라이언트 컴퓨터에서 만든다.

아래 명령으로 키 페어를 생성한다.

ssh-keygen

명령을 실행하면 키 페어를 저장할 파일 이름을 입력받기 위해 프롬프트가 대기한다. 아무것도 입력하지 않고 엔터 키를 누르면 기본값이 사용된다. 기본값은 ~/.ssh/id_rsa 이다.

암호를 입력받는 프롬프트가 대기한다. 암호는 선택 사항이다. 아무것도 입력하지 않고 엔터 키를 누르면 암호는 사용되지 않는다.

키 페어는 프라이빗 키와 퍼블릭 키로 구성된다. 프라이빗 키는 ~/.ssh/id_rsa 파일에 저장되고 퍼블릭 키는 ~/.ssh/id_rsa.pub 파일에 저장된다.

2. 퍼블릭 키의 전송

퍼블릭 키는 서버 컴퓨터에 저장되어야 한다. 서버 컴퓨터는 SSH 서버가 동작 중인 컴퓨터이다.

아래 명령으로 퍼블릭 키를 서버 컴퓨터로 전송한다. 이 명령은 클라이언트 컴퓨터에서 수행한다.

ssh-copy-id user1@sshserver.com

user1 은 암호를 통해 SSH 서버에 접속할 수 있는 사용자 계정이다. sshserver.com 은 서버 컴퓨터의 호스트네임이다.

명령을 실행하면 연결 작업을 계속할 것인지 묻는 프롬프트가 대기한다. yes 라고 입력한다.

서버 컴퓨터 사용자 계정의 암호를 묻는 프롬프트가 대기한다. 암호를 입력한다.

전송된 퍼블릭 키는 서버 컴퓨터의 ~/.ssh/authorized_keys 파일에 저장된다.

3. 암호 기반 인증 금지

SSH 구성 파일을 수정하여 암호 기반 인증을 금지한다. 이 작업은 서버 컴퓨터에서 수행한다.

SSH 구성 파일을 연다.

sudo vi /etc/ssh/sshd_config

PasswordAuthentication 부분을 찾아 아래와 같이 수정한다.

PasswordAuthentication no

SSH 서버를 재시작한다.

sudo systemctl restart ssh

4. 테스트

아래 명령으로 SSH 서버에 접속해 보자.

ssh user1@sshserver.com

암호를 입력하는 과정 없이 서버에 로그인된다면 성공이다.

Categories
SSH

PuTTY: SSH 키 인증 방식으로 암호 입력 없이 로그인하기

1. SSH 키 페어 생성하기

윈도우에서 PuTTY 를 실행한다.

‘PuTTY Configuration’ 창 아래쪽에 있는 Keygen 버튼을 클릭한다.

PuTTY Key Generator 창이 뜬다.

‘Type of key to generate:’ 에서 ‘SSH-2 RSA’ 를 선택한다.

Generate 버튼을 클릭한다. 프로그레스 바 (progress bar) 밑의 빈 영역에서 마우스를 움직이면 키 생성 속도가 빨라진다.

SSH 키 페어 (pair) 는 퍼블릭 키와 프라이빗 (private) 키로 구성된다. 키가 생성되면 퍼블릭 키는 창에 표시된다. 프라이빗 키는 표시되지 않는다.

‘Save public key’ 버튼을 눌러서 퍼블릭 키를 저장한다. 파일 이름은 임의로 정한다. 예를 들어 rsa-key-20221012.txt 와 같이 이름붙이면 된다.

‘Save private key’ 버튼을 눌러서 프라이빗 (private) 키를 저장한다. 파일 이름은 임의로 정하면 된다. 확장자는 ppk 이다.

‘PuTTY Key Generator’ 창을 닫는다.

2. 프라이빗 키 불러오기

‘PuTTY Configuration’ 창 아래쪽에 있는 Agent 버튼을 클릭한다.

‘Pageant Key List’ 창 아래쪽에 있는 ‘Add Key’ 버튼을 클릭한다. 앞에서 저장해 둔 프라이빗 키 파일을 찾아 선택한다.

‘Pageant Key List’ 창을 닫고 PuTTY 를 종료한다.

3. SSH 서버에 퍼블릭 키 등록하기

SSH 서버가 동작하는 컴퓨터에서 ~/.ssh 디렉토리를 생성한다.

mkdir ~/.ssh

디렉토리의 퍼미션을 아래와 같이 변경한다.

chmod 700 ~/.ssh

이 디렉토리 안에 authorized_keys 라는 파일을 생성한다.

vi ~/.ssh/authorized_keys

클라이언트 컴퓨터에서 PuTTY 를 실행한다.

‘PuTTY Configuration’ 창 아래쪽에 있는 Agent 버튼을 클릭한다.

‘Pageant Key List’ 창 아래쪽에 있는 ‘Copy OpenSSH public keys’ 버튼을 클릭한다. 그러면 퍼블릭 키의 내용이 윈도우의 클립보드에 복사된다.

복사한 내용을 ~/.ssh/authorized_keys 파일에 붙여넣는다. 키의 내용이 1줄로 이루어졌는지 확인한다.

다음은 퍼블릭 키의 예이다.

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAroIMQaJALdkNzNEbCNGXQ14Dv4fXDFo6DEPWK7xUHR2FOLzPkDnSvNyjWYGu5w6RQdoWK6Od6DSmk95mSoF3wf3c1ps9XrMetix7mnkCHZl2V2QZIYAIVpohV45aLrvboILejN7UgNHnGTY+D5tymcalCnebl0mWWvFuOzuaeok+KlLko40QfJAmFuE/O6Jhn56c39Th+anSSw//2h52S3w212ES4mCnohAfqQpBCo6/pXqyTvgXZorX6Y4hCOC+Zcj/tTxVhUhcqlDELASSPWlzfhSRkm1OVqcOWba9r23Cr8TUrsnf5V2dj3IYE7nE32efJXU3mu99xZytM6g7NQ== rsa-key-20221013

~/.ssh/authorized_keys 파일을 저장하고 편집기를 닫는다.

4. 테스트

클라이언트 컴퓨터에서 PuTTY 를 통해 SSH 서버에 접속해 본다. 암호를 입력하는 과정을 거치지 않고 로그인되면 성공이다.

Categories
SSH

보안 강화를 위한 OpenSSH 서버 구성 변경

OpenSSH 서버의 구성 파일은 /etc/ssh/sshd_config 이다.

/etc/ssh/sshd_config 파일을 편집한다.

vi /etc/ssh/sshd_config

루트 계정으로 로그인하지 못하도록 한다. PermitRootLogin 항목을 no 로 설정한다.

PermitRootLogin no

암호를 통한 로그인을 금지한다.

PasswordAuthentication no

퍼블릭키를 통한 인증이 가능하도록 한다.

PubkeyAuthentication yes

퍼블릭키 방식의 로그인만 허용한다.

AuthenticationMethods publickey

SSH 의 디폴트 (default) 포트는 22번 포트이다. 보안을 위해 다른 포트로 변경한다.

Port 2424

SSH 는 모든 네트워크 인터페이스에 대하여 대기한다. 특정한 인터페이스에 대하여 대기하도록 변경한다.

ListenAddress 192.168.0.101

사용하지 않고 일정 시간이 지나면 클라이언트에 메시지를 보낸다. 시간은 초 단위이다.

ClientAliveInterval 15

클라이언트에 메시지를 보내는 회수를 지정한다. 해당 회수 만큼 메시지를 보낸 후에 응답이 없으면 접속을 끊는다.

ClientAliveCountMax 3

파일을 저장하고 편집을 마친다.

변경한 내용이 적용되도록 SSH 서버를 재시작한다.

sudo systemctl restart ssh