본문 바로가기
A. Development/Free Topic

SSH로 서버 설정 및 Putty 접속

by IMCOMKING 2020. 6. 21.

Server 세팅

sudo apt-get update

sudo apt install openssh-server

 

sudo systemctl enable ssh : 시스템 시작시 ssh 서버 자동 실행하기

sudo systemctl status ssh : ssh 서버 상태확인

sudo systemctl start ssh : ssh 서버 열기

sudo systemctl stop ssh : ssh 서버 닫기

 

sudo vim /etc/ssh/sshd_config : ssh 서버 설정

sudo service ssh --full-restart : 옛날 방식 서버 열기

 

 

Client에서 Putty 세팅

Putty/Puttygen 다운로드

https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

 

Putty 폰트 설정

Window-Appearance-Change-돋움체, 13포인트

 

Putty에서 ctrl+shift+c/v 로 복사붙여넣기 설정

Window-Selection-Ctrl + Shift + : System clipboard

 
 
 

Putty 접속 시 Ubuntu에서 ctrl + arrow키로 건너뛰기 옵션 사용하기

다음 파일을 만들고, 아래 내용을 저장한다.

vim ~/.inputrc

"\eOD": backward-word

"\eOC": forward-word

 

 

Putty 접속 시 Home/End/PageUp/PageDown 키 정상 작동 시키기

Connection > Data > Terminal-type string에 써 있는 문자열을 "xterm"에서 "linux"로 변경

https://qastack.kr/superuser/94436/how-to-configure-putty-so-that-homeendpguppgdn-work-properly-in-bash

 

 

 

 

공개키와 개인키

공개키와 개인키는 항상 하나의 쌍으로 존재하며, 공개키가 암호화를 할때 쓰인다면 개인키는 복호화를 할 때 쓰인다.

공개키: 모든 사람에게 공유해도 되는 키, 일종의 계좌번호와 유사하다.
개인키: 각 사용자만이 보관하고 있는 비밀 키, 공개키로 암호화된 데이터를 디코딩할 수 있는 비밀번호의 역할이다.

 

A에서 B란 사람에게 데이터를 전송할때, A는 B가 공유해준 공개키를 이용해서 데이터를 암호화한다음, 이를 전달한다. 그리고나서 B는 갖고 있던 개인키(공개키와 쌍이되는)를 이용해서 데이터를 복호화한다. 만약 이 과정에서 데이터가 탈취되더라도 암호화가 되어 있기 때문에 안전하다.

 

 

 

 

Putty with SSH keys

공개키와 개인키를 이용해서 SSH 접속을 하려면, 우선 local 머신에서 생성한 공개키를 접속할 remote 컴퓨터에 등록을 하고, 그 다음 매칭이 되는 개인키를 local 머신의 ssh에 등록해서 접속을 해야한다.

https://extrememanual.net/26803

 

1. Local 머신의 public key를 remote 머신에 등록해서 접속하기

1. Local 머신에서 ssh key pair를 생성한다.

ssh-keygen -t rsa -C "my@email.com"
(putty-gen에서 default 옵션으로 key pair를 생성하면 뭔가 설정이 다른지 길이가 짧음. ubuntu에서 실행하는게 잘 동작함)

그러면 private key와 public key가 각각 생성된다. 

 

- public key: 내가 ssh로 접속할 원격 컴퓨터에 등록해두는 용도
ssh-rsa AAAAB3NzaC1yc .....

 

 

- private key: 나의 로컬 컴퓨터에 등록하는 용도 (일종의 비밀번호가 저장된 파일에 해당한다고 볼 수 있음)
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAK

 

2. 그 다음 생성한 public key를 remote 머신에 등록한다.

ssh-keygen 으로 생성된 pub_key를 복사해서 remote 서버의 .ssh/authorized_keys 파일을 열어서 맨 아래에 붙여넣기 한다.
이렇게 pub_key를 등록하면, 그에 대응되는 priviate key로 전부 접속이 가능하다. private key를 복사해서 다른사람이 공용으로 접속하는것도 당연히 가능하다.
 
이 과정을 수동으로 remote 머신의 ~/.ssh/authorized_keys에 복사해서  붙여넣기 해도되지만, ssh-copy-id를 이용하면 매우 쉽게 가능하다.

자동 등록

ssh-copy-id user_id@remote.ip.address
 
이것을 실행하면 자동으로 .ssh/authorized_keys밑에 id_rsa.pub을 붙여넣어준다.
 

수동 등록

cat ~/.ssh/id_rsa.pub | ssh demo@198.51.100.0 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >>  ~/.ssh/authorized_keys"
 
 
 

2. Remote 머신의 private key를 가져와서 접속하기

OpenSSH SSH-2 private key (old PEM format) 문제해결

Connection - SSH 에서 Remote Command 부분에 수동으로 ssh 접속 커맨드를 작성한다.
ssh -i id_rsa.ppk azureuser@ip.add.ress
 
또는 puttygen 프로그램을 설치해서 기존에 생성해둔 키를 putty 버전의 .ppk파일로 변환하여 사용한다.
Connection - SSH - Auth 에 .ppk파일을 등록한다.
 
 
 
 
- 내가 만든 ssh private를 직접 지정하기
ssh -i deployment_key.txt demo@192.237.248.66
 
만약, 위와 같이 지정을 안하면, /home/user/.ssh/id_rsa가 자동으로 선택될 것이다
 

ssh 터널링

ssh -L 50001:localhost:50001 -i ~/ssh_pubkey/nsml_jp -p 30022 root@10.122.77.197
ssh에 존재하는 막강한 기능. ssh를 접속하면서 remote에 있는 임의의 포트를 맵핑시켜서 내맘대로 사용할 수 있다. ssh로 접속하면서 -L로 이렇게 위와같이 입력하면, 50001포트를 특정 URL과 포트로 맵핑시킬 수 있음. 그래서 docker container 만들 때 포트를 안열어뒀더라도 마음대로 임의의 포트를 사용할 수 있음. 단 이걸하려면 매번 ssh가 접속되어 있어야함. 그게 싫으면 도커 컨테이너를 새로 만들어야함.
 
 

 

 

 

댓글