Secure Shell의 약자로, 네트워크를 통해 서버에 원격으로 안전하게 접속하고 명령을 실행하기 위한 프로토콜
접속방식 1 : 비밀번호
접속방식 2 : 공개키key & 개인key
원격 테스트 시, 호스트의 방화벽에서 TCP 22번 포트를 개방한 상태더라도 공유기(라우터) 또는 ISP에서 TCP 22번 포트를 막아버려 접속이 불가한 경우가 있다. (보통 ssh 접속 포트는 22번이 고정인듯, AWS EC2 사용할때도 마찬가지로)
22번 포트가 안될때 대응방법
출처: 나무위키
내가 사용하는 서버 제공자가 같이 프로젝트 했던 팀원분이신데 서버 네트워크는 그분 집의 공유기로 라우팅되고있다.
sk브로드밴드를 사용중이신데 22번 80번 포워딩이 차단되어있었다.
그래서 2022번을 뚫어서 주셨다.
githubAction과 같은 배포자동화 도구는
push할 서버 접속시 기본적으로 22번 포트로 접근한다.
22번 포트가 아니라면 반드시 스크립트에 지정 포트를 작성해야한다.
#deploy.yml
- name: Deploy to Raspberry Pi
uses: appleboy/ssh-action@v1.0.0
with:
host: $
username: $
key: $
port: 2022 # 이 줄 추가
-> 모든 SSH 단계에 port: 2022 추가
GitHub Secrets에 ssh key(개인키) 등록시
—–BEGIN OPENSSH PRIVATE KEY—–부터 —–END OPENSSH PRIVATE KEY—–까지
그대로 전체 복붙
SSH 공개키 생성 (Linux 기반):
ssh-keygen -t rsa -b 4096 -C "github-actions"
-C “name” 은 키를 구별하기 위해 이름 붙이는것(생략가능). 용도별로 키 여러개 생성 가능
-> ~/.ssh/id_rsa.pub 생성됨
생성한 키를 사용하기 위해서 등록이 필요하다
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
SSH 개인키 확인
# 호스트에서
cat ~/.ssh/id_rsa
SSH 설정 확인
sudo nano /etc/ssh/sshd_config
Include /etc/ssh/sshd_config.d/*.conf
Port 2022
PubkeyAuthentication yes # 없으면 추가
AuthorizedKeysFile .ssh/authorized_keys #인증된 키들은 authorized_keys 에 모여있음
PasswordAuthentication yes
ChallengeResponseAuthentication no
UsePAM yes
변경사항 있을 시
sudo systemctl reload ssh
quick process
ssh-keygen -t rsa -b 4096 # or 이름 지정시 $ ssh-keygen -t rsa -b 4096 -C "name"
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
sudo nano /etc/ssh/sshd_config #PubkeyAuthentication yes 없으면 추가-> ctrl+O -> ctrl+X
sudo systemctl reload ssh
cat ~/.ssh/id_rsa #키 복사
#SSH #RaspberryPi #Linux #RSA