안녕하세요 상훈입니다. Linux Ubuntu 에서 ssh 용 Key를 generate 하는 방법에 대해 포스팅 하겠습니다.

 

서버에서 ssh-keygen 이라는 명령어를 쳐주세요

ssh-keygen

그러면 아래와 같이 (윈도우로 예시를 들었습니다만 원래는 linux-server 에서 사용합니다.) 
특정 경로에 해당하는 id_rsa 가 생성되었습니다.

그리고 비밀번호를 입력하면되는데, 만약 입력하지 않을 것이면 바로 엔터로 넘어가주시면 됩니다.

 

그러면 .ssh 라는 폴더 안에 아래와 같이 생성되셨을 겁니다.

리눅스의 경로는 ~/.ssh 입니다.

리눅스-우분투의 경우 기본 경로는 ~/.ssh 이기 때문에 cd ~/.ssh 하면 확인 가능합니다.

id_rsa 파일 중 확장자 .pub 를 가지고 있는 파일이 public key
그리고 확장자가 없는 것이 private key 입니다!

이제 자유롭게 사용하시면 됩니다!

 

이상입니다.

반응형

안녕하세요 상훈입니다.

Github Action 기능을 사용하여 Ubuntu 서버에 소스를 push 했을 때 자동으로 build, deploy 를 하는 방법을 기록하도록 하겠습니다.

 

환경 🚩

Ubuntu 18.04
Code: Spring boot (Java, jdk11, gradle)
Action 동작 시기 : push 후
동작 방법: ssh

 

목차 ✅

1. Server 에서 ssh private_key 발급
2. GitHub Action 작성
3. GitHub secret 변수 설정
4. Activate

그 다음에는 Github Action 코드를 작성할건데요,

Actions - New workflow 를 눌러서 새로운 workflow를 생성합니다.
set up a workflow yourtself 를 눌러서 진행

 

set up a workflow yourtself 를 눌러서 진행하거나, 아래 MarketPlace 에 이미 작성되어져 있는 초안을 가져와도 무방합니다.

 

set up 되어있는 marketplace!

 

*.yml 이라는 파일 형식을 지키고 원하는대로 만들어줍니다. (파일명이라 원하는대로 만들어도 무방합니다.)

main.yml !

name: Gradle Package

on:
  push:
    branches:
      - master

jobs:
  build:
    runs-on: ubuntu-18.04  #build 하는 환경 설정
    permissions:
      contents: read
      packages: write

    steps:
    - uses: actions/checkout@v3        
    - name: Set up JDK 11        
      uses: actions/setup-java@v3            
      with:
        java-version: '11'              #java 버전 설정
        distribution: 'temurin'
        server-id: github # Value of the distributionManagement/repository/id field of the pom.xml
        settings-path: ${{ github.workspace }} # location for the settings.xml file
        
    #grant : 권한 할당을 통하여 gradlew 명령어를 통해 build 가능하도록 설정
    - name: Run chmod to make gradlew executable
      run: chmod +x ./gradlew
      
    #build : 위에서 권한을 준 명령어로 build
    - name: Build with Gradle
      run: ./gradlew build
      
    #전송할 파일을 담을 디렉토리 생성
    - name: Make Directory for deliver
      run: mkdir deploy

    #Jar 파일을 deploy 디렉토리에 Copy
    - name: Copy Jar
      run: cp ./build/libs/*.jar ./deploy/
      
    #서버에 Deploy 
    - name: Deploy to server
      env:
          PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}        # private key
          HOST: ${{ secrets.SERVER_HOST }}                   # server host (ip addr)
          USERNAME: ${{ secrets.SERVER_USERNAME }}           # username (로그인할 id)
          PORT: ${{ secrets.SERVER_PORT }}                   # port (포트포워딩한 포트번호)
          #password: ${{ secrets.NPC_DEV_SERVER_PASSWORD }}  # 비밀번호설정했을 경우 작성(저는 enter로 뺐습니다.)
      run: |
          echo "$PRIVATE_KEY" > private_key.pem              # private key 값-> private_key.pem 로 생성
          chmod 400 private_key.pem                          # 권한 설정 600이상일경우 안되는 경우가 있음
          
          # scp: 서버간 파일전송 명령어 : 위치= /var/www/html/test에 넣었는데, 원하는 경로로 변경해주세요
          scp -i private_key.pem -P $PORT -o StrictHostKeyChecking=no -r build/libs/*.jar $USERNAME@$HOST:/var/www/html/test/
          
          # ssh 통해서 서버에 접속하여 bash 명령어 실행, 마찬가지로 위에서 변경한 경로와 일치시켜주세요
          ssh -i private_key.pem -p $PORT -o StrictHostKeyChecking=no $USERNAME@$HOST 'bash -s' <<- EOF
            pgrep java | xargs kill -9 || true
            nohup java -jar /var/www/html/test/*.jar > /dev/null 2>&1 & disown  
            exit
          EOF
          rm -f private_key.pem   #작업완료 후 pem 삭제

env: 의 내용은 github action 의  [3. GitHub secret 변수 설정] 에서 설정할 것입니다.

각각의 내용의 주석을 꼼꼼히 읽어주시고, 작성 후 create commit 을 해서 remote 에 넣어주세요!

파일 생성 완료!

.yml 파일 생성 완료!

 

3. GitHub secret 변수 설정 🔨

위에서 작성한 내용중 env : 에서 써놓은 key 값들을 작성하려고 합니다.

분리하는 이유: 누군가 제 repository 에 들어와서 모든  값들을 yml 파일로 확인할 수 있기 때문에 github 의 secret 기능을 설정. (환경변수 설정과 동일)

settings - secrets and variables - actions 탭에 들어갑니다.

[ Settings - Secrets and variables - Actions ] 탭에 들어갑니다.

 

New repository secret 을 눌러 새로운 키를 생성한다고 말해줍니다.

새로운 키 생성

json 형태의 Key: value 라고 생각하면 간단합니다.

이녀석들을 작성합니다.

여기서 다른것들은 그냥 작성하면 되는데, PRIVATE_KEY 는 양식이 있었습니다.

함께 복사해서 붙여넣기해야하는 항목

이미지처럼 BEGIN~ 에 해당하는 내용을 입력해서 넣어야합니다. (그래야 저같은 삽질을 하지 않을 수 있습니다 ㅎㅎ)

ssh-gen 을 하게되면 public 과 private  Key가 각각 생성되는데, .pub 자가 붙지 않은 것이 private key 입니다. 참고 바랍니다.

 

4. Activate ✨

그리고 이제 대망의 action을 활성화 해본다면?

 

끝입니다.

제가 고생한 흔적

실패의 연속...

 

반응형

안녕하세요 상훈입니다.

AWS - MySQL - DBeaver
ec2 Ubuntu 에 올려진 MySQLDBeaver로 접속하는 도중 에러가 발생하였습니다.

Public Key Retrieval is not allowed

 

서버측 문제인줄 알고 계속 서버쪽을 뒤지고 방화벽 건드려보고 해도 안됐었다. 결국, 서버측 문제가 아니었다.

 

😎 해결방법

Dirver properties - allowPublicKeyRetrieval

Driver properties - allowPublicKeyRetrieval 를 true 로 변경하고 test connection 을 시도해보도록 하자.

MySQL 8.0 버전이후부터 ssh 연결 시, publicKey를 사용할 경우 위의 옵션을 켜주어야한다고 한다.

그것도 모르고,,, ㅠ

 

Connection success!!!

 

도움이 되셨다면, 여유롭게 커피 한 잔 사주시면 감사합니다~

 

출처 : https://upload.wikimedia.org/wikipedia/commons/thumb/b/b5/DBeaver_logo.svg/1200px-DBeaver_logo.svg.png

 

반응형

putty ssh-key 발급방법입니다.

 

1. puttygen 접속

 

2. Generate 클릭

Generate 클릭

 

3. 진짜로 마우스 오버해서 흔들어야 됨..

진짜로 마우스 오버해서 흔들어야 됨..

 

4. 사용할 id, pw 작성

Key comment : id
Key passphrase : pw
Confirm passphrase : pw chk

 

5. Save Private Key 클릭

Save Private Key

저장해주세요. (putty 에서 파일 불러오기 할 것이기 때문에 삭제 하시면 안됩니다)

 

6. putty 실행

putty 실행

 

7. ppk 파일 open 해주세요

ppk 파일 삽입

 

완료.

 


 

 

 

8. 만약 GCP (구글 클라우드 플랫폼) 을 사용중이라면,
권한이 있는 사람에게 key 값을 보내주어 해당 key 의 접속허용 설정해야한다.

 

 

 

 

참고

 

구글 클라우드 플랫폼에서 SSH키 생성 후 PuTTY 접속하기

구글 클라우드 플랫폼에서 SSH로 접속할 때, 기본적으로 제공하는 브라우저 접속은 로그인이 필요하고, 반응…

blog.wsgvet.com

 

gcp(google cloud platform)으/로 Ubuntu linux 서버를 만들고, ssh 외부 접속 허용을 해놨는데 계속 접속이 안되나 했네요.

 

반응형

 

SSHLINUX 혹은 다른 IP에 접속해서 VSCode로 내부 파일을 수정하려고 하는데 저장할 때에 에러가 발생.

해결방법은 해당 파일이나 폴더 등에 계정에 대한 권한을 할당하는 것이다.

## /var/www/html/example/ 경로일 때
sudo chown -R  계정명  경로명

이렇게 적용하면 바로 저장 혹은 수정할 수 있게 된다.

 

위와 같이 /var/www/html/example/  라는 폴더 내부의 파일들을 모두 수정할 수 있는 권한을 주고 싶을 때,

## 현재 내가 있는 위치 :  /var/www/html/
sudo chown -R  username ./example

하면 우측하단에 에러 알림이 왔던 내용이 사라지고 저장 혹은 수정할 수 있게된다.

 

 

참고

https://pinkwink.kr/1343

 

VSCODE로 SSH로 접근해서 편집 파일을 저장할때 permission 문제

예전에 저는 VSCODE를 이용해서 SSH로 젯슨 나노나 라즈베리파이에 접근하는 방법을 이야기했었는데요. 그렇게 쓰다보면 아주 가끔 권한 문제로 파일을 저장할 수 없다는 에러가 날 수 있습니다.

pinkwink.kr

 

반응형

 

VsCode - ssh 이용 해서 원격으로 특정 파일을 수정하거나 추가할때 에러가 발생하였다.

 

NoPermissions (FileSystemError): Error: EACCES: permission denied, open

 

 

■ 에러 이유

- 해당 파일에 대한 권한의 문제이다.

 

■ 해결 방법

- 접속자에게 권한 할당을 해주어 파일을 수정할 수 있게 해준다.

 

sudo chown -R  '접속계정명'   '권한을 할당할 경로'

 

예시) 

sudo chown -R sanghoon /var/www/html/*

 

하시면 이제 정상적으로 값이 수정·추가 되는 것을 확인할 수 있다.

반응형

+ Recent posts