우선 ssh 라는 것이 무엇인지 부터 알아보겠습니다.
1. ssh 는 scure shell의 약자로 ssh 클라이언트가 ssh 서버를 안전하게 제어하기
위해 만들어진 프로토콜이나 이 프로토콜로 만들어진 프로그램을 의미합니다.
2. 안전하지 못한 네트워크에서 안전하게 통신을 할수있게 해주고,
3. 기본적으로 SSH는 22포트를 사용합니다.
4. 통신이 노출된다 해도 ssh는 암호화 기법을 사용하기 때문에 읽을수 없는 암호로 되어있어 안전하다.
ssh 클라이언트는 ssh 서버에 접근을 하는 방법 으로
ssh 서버에 접근을 할려면 ssh 클라언트가 설치 되어있어야합니다
리눅스와 Mac같이 Unix 계열은 ssh가 기본적으로 설치가 되어있습니다.
하지만 윈도우는 설치가 되어 있지 않아서 프로그램을 설치해야합니다.
대표적으로 Putty, xshell 이 있습니다.
SSH는 Unix 계열의 운영체제를 원격에서 제어하기 위한 방법으로,
이것을 할려면 ssh 서버가 설치 되어있어야합니다.
Mac 에는 기본적으로 openssh 가 설치 되어있습니다.
하지만 리눅스에는 설치가 안되어 있어서 직접 설치를 하셔야 합니다.
리눅스에 open ssh를 설치해 보겠습니다.
우선 첫번째로 리눅스의 root 쉘에 들어가 주세요.
┌──(kali㉿kali)-[~]
└─$ sudo su
[sudo] password for kali:
┌──(root㉿kali)-[/home/kali]
└─#
sudo su라는 명령어를 써서 들어가 주었습니다. 지금은sudo su가 무슨 명령어 인지 모르셔두 됩니다.
그다음으로 open ssh 서버와 클라이언트를 설치 해보겠습니다.
┌──(root㉿kali)-[/home/kali]
└─# sudo apt-get install openssh-sever openssh-client
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package openssh-sever
sudo apt-get install openssh-sever openssh-client 명령어를 사용하셔서 두개다 받으시면 됩니다.
ssh key란 서버에 client가 접속할때 비밀번호 대신 key를 재출하는 것 입니다.
key를 사용하는 경우는 크게 두가지가 있습니다.
1. 비밀번호 없이 서버에 로그인 할때
2. 비밀번호 보다 더 높은 수준의 보안을 필요로 할때
ssh key의 동작 방식에 대해 알아보겠습니다.
ssh key의 종류는 private key랑 public key가 있습니다.
ssh key를 만들면 비공개 키 랑 공개 키가 생기는데,
이중 비공개 키는 ssh client에 위치해야하고 공개 키는 ssh sever에 위치해야합니다.
ssh 서버에 접근을 시도하면 ssh 클라이언트가 클라이언트의 비공개 키랑,
서버의 공개키를 비교해서 둘이 일치하는지를 확인한다. 이런방식으로 ssh key가 작동한다
이제 ssh 키를 만드는 방법에 대해 알아보겠습니다.
우선 ssh 키를 만들려면 keygen이라는 프로그램을 쓰셔야합니다.
┌──(root㉿kali)-[~]
└─# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:lcavgSiyAhvDMFXleEpndIIKIfNgwji3yfmfU6fVtGw root@kali
The key's randomart image is:
+---[RSA 3072]----+
|Oo...o+ . |
|B*. .+ o . . |
|o=.=o = = |
|o.*. = . + .. |
|+...o . S .+.. |
|.+ o.. . ooE |
|o . . o +.. |
| . + . |
| . |
+----[SHA256]-----+
이런식으로 영어들이 뜨는데 이쪽에서 그냥 다 엔터 눌르시면 됩니다.
Enter file in which to save the key (/root/.ssh/id_rsa):
이것은 파일을 넣을 위치를 적으라는 말인데, 만약 그냥 엔터를 치면 저기 나와있는 경로에 생깁니다.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
이것은 비밀번호를 적고 비밀번호를 다시 한번 적으라는 뜻인데 그냥 비밀번호를 없이 엔터를 치셔도 됩니다.
만약 저처럼 엔터를 다 치셨다면 저같이 /root/.ssh 안에 파일들이 생겼을겁니다.
┌──(root㉿kali)-[~]
└─# ls /root/.ssh/id_rsa
/root/.ssh/id_rsa
┌──(root㉿kali)-[~]
└─# cd /root/.ssh/
┌──(root㉿kali)-[~/.ssh]
└─# ls
id_rsa id_rsa.pub known_hosts known_hosts.old
이 파일들이 뭔지 한번 설명하고 가자면 id_rsa는 private 키가 되는 것 이고, id_rsa.pub는 public 키가 되는것 입니다.
known_hosts는 어떤 사람이 서버에 접속을 했는지 로그를 보여주는 것입니다.
그리고 파일에 대한 권한을 설정해주어야 합니다.
┌──(root㉿kali)-[~/.ssh]
└─# chmod 700 ~/.ssh
이런식으로 하면 root 권한만 이 디렉토리에 들어갈수있고, 그 안에있는 파일들을 읽을수있다는 것입니다.
이제 한번 서버로 id_rsa.pub 라는 파일을 옮겨 보도록 하겠습니다.
scp /root/.ssh/id_rsa.pub 리모트 머신의 아이디@리모트 머신의 호스트 주소:저장할 파일
이렇게 하면 복사가 된다.
이제 서버에 접속을 해서 cat 명령어와 리다이렉션을 사용해서 파일을 추가하겠습니다.
cat $HOME/id_rsa.pub >> $HOME/.ssh/authorized_keys
이렇게 하면 id_rsa.pub 가 홈디렉토리에 .ssh 에 authorized_keys 에 저장이 된다.
그리고 다시 로컬 머신으로 돌아와서 서버에 접속을 시도해보겠습니다.
ssh 서버주소
를 해서 접속을 했을때 비밀번호 없이 바로되면 성공입니다.
[네트워크] 프록시(Proxy) 란? (Forward proxy, Reverse Proxy) (0) | 2023.05.21 |
---|---|
[네트워크] Port (0) | 2023.05.18 |
[네트워크] localhost (0) | 2023.05.18 |
[네트워크] 2진수, 5진수, 10진수, 16진수 (2) | 2023.05.11 |
HTTP & HTTPS의 기초 와 hyper text (0) | 2023.05.02 |