1. ssh 폴더 접근하기

1-1. cd ~/.ssh 를 입력하여 ssh 폴더로 접근을 해준다.

1-2. ls 를 입력하여 폴더내에 어떤 파일이 있는지 확인 할 수 있다.

1-3. 만약에 ssh키가 없다면 ssh-keygen 을 입력하여 ssh 키를 생성해준다.

1-4. 생성하면 id_rsa.pub (Public)키id_rsa (Private)키가 생성된다.

1-5. 생성된 public키를 가지고 다양한 곳에서 활용이 가능하다.

SSH란?
Secure Shell은 보안 로그인 쉘이다.

전통적인 ftp, pop, telnet 같은 서비스들은 잘 알려진 대로 매우 보안에 취약하다. 
이런 암호화 되지 않은 인증 방법은 당신의 암호가 그대로 노출될수도 있다.

장점 : 1. 비밀번호보다 높은 수준의 보안 
	  2. 로그인 없이 자동으로 서버에 접속 할 수 있다.
      
공개키와 비공개키의 관계
공개키 : SSH Client에 저장
비공개키 : SSH Server에 저장

SSH 접속을 시도하면 SSH Client가 로컬 머신의 비공개키의 원격 머신의 비공개키를 비교해서 둘이 일치하는지 확인한다.

 

 

2. config 파일 작성하기

2-1. server에 접속할 수 있는 방법은 다양한 방법이 있지만, 크게 두가지가 있다.

2-2. terminal에 직접 작성하는 방법 / config파일을 작성하여 접속하는 방법

2-3. terminal에 직접 작성하는 방법은 아래의 명령어를 입력해주면 된다.

ssh -i ~/Privite 키 위치/Privite 키 이름/ 원격서버유저이름@IP주소 를 입력하여 서버에 접속한다.
===============================================================================
ex) ssh -i ~/develop/TEST-KEY.pem ec2-user@127.0.0.0

2-4. config파일을 작성하여 접속하는 방법

2-5. 자신에게 맞는 편집기를 사용하여 config파일을 만들어 준다.

// config파일을 만들어준다. 
// 자신에게 맞는 편집기를 사용하면 된다.
터미널 편집기 - vi config
VScode - code config.

2-6. 생성한 config 파일안에 접속할 server들을 작성해준다.

2-7. 이때 접속가능한 ssh키는 서버에 접속가능한 키를 말하며, 없다면 요청해서 받아야 접속이 가능하다.

// cofig파일 작성
Host "사용할 호스트 이름"
HostName "접속할 IP주소"
user "유저 - 보통 root로 셋팅한다." 
identityFile "접속 가능한 ssh키 경로"

=====================================

Host test-dev
HostName 127.0.0.0
user root
identityFile ~/.ssh/TEST-KEY.pem

2-8. 여기 까지 작성했으면, terminal에 ssh test-dev만 입력하면 등록해둔 IP주소와 ssh키로 서버에 접속이 가능하다.

2-9. Are you sure you want to continue connecting (yes/no/[fingerprint])? 라는 게 나오면 yes를 입력해주면 접속이 가능하다.

2-10. 하지만 서버가 늘어나면 기억하기가 쉽지 않기 때문에 쉘 스크립트로 간편하게 접속하는 방법도 있다.

 

 

3. config 쉘 스크립트 작성

3-1. 자신이 편한 편집기를 사용하여 config_list.sh 라는 파일을 생성해준뒤, 아래의 코드를 입력한다.

// config_list.sh 파일 작성
#!/bin/bash
 
value=$(<config)
 
host=[]
selectHostName=''
index=1
forIndex=0
 
echo "| SSH CONFIG CONNECT LIST -------------------------------------------------"
echo "|"
while read line;
        do
                if [[ $line =~ "Host " ]]; then
                        echo "|" $index ">" "${line#*Host }"
                        host+=("$line")
                        index=$((index+1))
                fi
        done < config
echo "|"
echo "| Connect Number >"
 
read inputKey
 
if [[ $inputKey -lt $index && $inputKey -gt 0 ]]; then
        for value in "${host[@]}"
        do
                if [[ $inputKey == $forIndex ]]; then
                        selectHostName="${value#*Host }"
                        echo ">>>>>>>>>>>>>>>>>>>>>>>>" $selectHostName
                        ssh $selectHostName
                fi
                forIndex=$((forIndex+1))
        done
else
        echo "|"
        echo "| [ERROR] Array Out Of Bound"
fi

3-2. 그런다음 config_list.sh를 사용하기 위해 환경변수에 단축키를 등록해주어야 한다.

 

 

4. 환경변수 설정하기

4-1. 환경변수를 설정하기 위해 자신의 터미널이 bash 쉘인지 zsh쉘인지 확인해야 한다.

4-2. cat /etc/shell 명령어를 입력하여 자신은 쉘을 확인한다.

4-3. 자신의 쉘에 맞는 환경변수 파일을 열어준다.

4-4. 그런뒤 아래의 명령어를 환경변수 파일 최하단에 추가해준뒤, 재실행을 시켜준다.

// 환경변수를 설정하여 단축키 설정
zsh쉘 일 경우 --> vi ~/.zshrc
bash쉘 일 경우 --> vi ~/.bashrc
맨 밑에 alias sshc(자신이 원하는 단축키)="cd ~/.ssh && sh config_list.sh" 입력 (디렉토리 확인)

zsh쉘 일 경우 --> source ~/.zshrc (변경된 환경변수 반영)
bash쉘 일 경우 --> source ~/.bashrc (변경된 환경변수 반영)

4-5. 터미널에 등록한 단축키를 쳐보면 config에 등록된 list들이 출력된다.

4-6. 원하는 서버의 number를 입력하면 server에 접속이 된다.

'공부 > Terminal' 카테고리의 다른 글

NVM - Node Version Manager  (0) 2022.06.02