dial tcp :: connect: connection refused
github action 돌릴 때 DB의 HOST와 ssh 접속 시 HOST 이름이 겹쳐서 문제가 있었다.
*** 이런 식으로 나와서 어떤 변수에 문제가 있는지 헷갈렸다.
DB HOST 환경변수 이름을 DB_HOST로 변경했다.
apple-boy꺼 썼는데 설정이 잘 안돼서 fifsky 껄로 바꿈 https://github.com/fifsky/ssh-action
또 다른 문제
ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain
https://github.com/appleboy/ssh-action#if-you-are-using-openssh
https://github.com/appleboy/ssh-action/issues/6
openssh key는 id_ed25519 를 환경변수로 넣고 github profile에 ssh키를 id_ed25519.pub 공개키로 넣어야 하나?
lightsail 인스턴스에 ssh로 접속해서 키를 만들고 github action key에 넣어줌
Permissions 0644 for 'xx.pem' are too open. -> chmod 600 xx.pem
~~Permission denied (publickey) -> vi /etc/ssh/sshd_config -> PasswordAuthentication yes로 수정
~~
PubkeyAuthentication yes
PubkeyAcceptedKeyTypes=+ssh-rsa
AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
/etc/ssh/sshd_config 에 추가.
Put the public key in .ssh/authorized_keys2. cat id_ed25519.pub >> authorized_keys2
Change the permissions of .ssh to 700. chmod 700 .ssh
Change the permissions of .ssh/authorized_keys2 to 640. chmod 640 authorized_keys2
LightsailDefaultKey-ap-northeast-2.pem ssh 파일에 있는 값 등록해보기? -> 안됨
ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain
인증 관련 로그 확인
sudo tail -f /var/log/auth.log
github profile setting에 이거 써야하나?
cat /etc/ssh/lightsail_instance_ca.pub -> 기존에 있던거 하면 잘 안되는 것 같음..
sudo service sshd restart
명령어로 설정 적용
~/.ssh/authorized_keys 파일에 새로 만든 id_ed25519.pub 값 넣어주고 github profile -> setting -> ssh and gpg keys 에도 등록해야 함. SSH_PRIVATE_KEY_DEV 키는 id_ed25519 넣어줘야 함
key 줄바꿈 안되면 엔터 쳐서 이런 모양 만들어야함.
-----BEGIN OPENSSH PRIVATE KEY-----
...
-----END OPENSSH PRIVATE KEY-----
deploy:
name: Deploying
needs: [ test_project ]
runs-on: ubuntu-latest
steps:
- name: Deploying Application
uses: appleboy/ssh-action@master
with:
host: 3.37.34.129
username: ubuntu
key: ${{ secrets.SSH_PRIVATE_KEY_DEV }}
port: 22
script: |
whoami
cd ~/app/.scripts
./docker-deploy-dev.sh
또 다른 문제 발생
can't set password and key at the same time
이번엔 DB에서 쓰이는 PASSWORD 환경변수가 ssh에서 접속에 쓰이는 이름과 같아서 key와 password를 함께 인식하는 문제였다
DB PASSWORD 이름을 DB_PASSWORD로 변경함
Pseudo-terminal will not be allocated because stdin is not a terminal.
args: "-tt"
https://github.com/fifsky/ssh-action/issues/4
./docker-deploy-dev.sh: Permission denied
chmod 600으로 파일 권한 수정? git clone {repo} .
이후 docker-deploy-dev.sh 파일을 생성해야함.
docker-deploy-dev.sh
작성
ssh로 인스턴스 접속해서 sudo bash .scripts/docker-deploy-dev.sh
로 실행해보기
접속
{고정IP주소}:8000/admin/
db 컨테이너 접속
sudo docker exec -it core_db bash
로그인
psql -U postgres
db 지정
\c {db명}
테이블 조회
\dt
docker 명령어 permission denied
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/prune": dial unix /var/run/docker.sock: connect: permission denied
사용자를 도커 그룹에 추가.
sudo groupadd docker
sudo usermod -a -G docker $USER
newgrp docker
모든 컨테이너 중지
docker stop $(docker ps -a -q)
모든 컨테이너 삭제
docker rm -f $(docker ps -aq)
모든 이미지 삭제
docker rmi $(docker images -q)
사용하지 않는 이미지 삭제
prune(가지치기)은 dangling(태그가 없는) 이미지를 삭제함. 같은 이름으로 이미지를 빌드할 때 기존 이미지가 언태깅되면서 dangling 상태가 됨
docker image prune
모든 볼륨 삭제
docker volume rm $(docker volume ls -q)
안쓰는 거 한번에 싹 삭제
docker system prune
Remove all unused containers, networks, images (both dangling and unreferenced), and optionally, volumes.