mac) Terminal로 ssh config 설정하기
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에 접속이 된다.