목록DevOps & Infra/OS (17)
오늘도 한 뼘 더
# 배경 로컬에서 서버를 ssh로 접근하고 일정 시간 입력이 없으면 다음 메시지가 뜨면서 연결이 끊기게 된다. 이 시간이 생각보다 짧아서 스크립트가 돌아가는 중 연결이 끊길까 엔터키를 몇 번 쳤던 경험이 있다. 이 시간을 늘리도록 해보자 $ client_loop: send disconnect: Broken pipe # connection 시간 늘리기 위와 같은 현상은 서버가 클라이언트가 살아있는지 확인을 하는데 응답이 없을 때 발생하기에 이 시간과 횟수를 늘리면 된다. SSH 설정 파일에 접근한다. $ sudo vi /etc/ssh/sshd_config 아래와 같이 설정값을 활성화 및 작성한다. 300초 * 3 = 900초 동안 클라이언트에게 응답을 요청한다. ClientAliveInterval 300 ..
1. 사용자 생성 $ sudo useradd [유저ID] -d /home 2. 사용자 패스워드 설정 $ sudo passwd [유저ID] 3. 사용자 정보 추가 설정 $ sudo vi /etc/passwd [유저ID]:x:1001:1001:,,,:/home/[유저ID]:/bin/bash ## 추가 내용 4. 홈 디렉터리 권한 추가 $ sudo chown -R [유저ID] /home/[유저ID] 5. ssh 로그인을 위한 설정 $ sudo vi /etc/ssh/sshd_config # 뒤의 내용으로 변경한다. PermitRootLogin no >>> PermitRootLogin yes PasswordAuthentication no >>> PasswordAuthentication yes # ssh 재시작 $..
# 배경 서버에서 불필요한 디렉터리 및 파일을 일괄적으로 삭제하고 싶었다. 서버에 temp 디렉터리와 파일을 삭제하고자 한다. find와 exec를 사용하여 삭제할 수 있다고 한다. # 특정 디렉터리 일괄 삭제하기 temp를 포함한 폴더를 일괄 삭제하는 명령어는 다음과 같다. $ find . -name "*temp*" -type d -exec -rm -r {} + . : 현재 디렉터리에서 검색함을 뜻한다. -type d : 디렉터리로 검색을 제한한다. -name "*temp*" : temp를 포함하는 디렉터리를 검색한다. -exec : 뒤에 붙는 명령어를 실행해 주기 위한 옵션 {} + : rm 명령어 끝에 검색된 폴더를 추가한다. # 특정 파일 일괄 삭제하기 temp를 포함한 파일을 일괄 삭제하는 명령..
# 배경 SSH 키를 사용해서 접근을 하려고 하는데 키에 관한 에러가 발생하면서 다음과 같은 내용이 떴다. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: POSSIBLE DNS SPOOFING DETECTED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ The ECDSA host key for gitlab.X.com has changed, and the key for the corresponding IP address X.X.X.X is unchanged. This could either mean that DNS SPOOFING is happening or ..
## 배경 ssh를 이용하여 gitlab에 접근하고자 했는데 gitlab을 도커 컨테이너로 설치하면서 도커 컨테이너 22번 포트가 제대로 열리지 않는 문제가 발생하였다. docker의 ssh 포트번호를 변경하고 ssh config를 통해서 변경된 포트로 연결될 수 있도록 설정하고자 한다. ## ssh config 작성 Host gitlab HostName gitlab.beautiful0.org User git Port 10022 Host : ssh 명령에 사용할 이름 HostName: Host에 지정된 이름이 매핑되는 호스트 명 User: 연결에 사용되는 계정 Port: 연결한 서버의 포트 번호 (기본 값: 22번) IdentityFile: 사용할 키의 위치 (기본값은 rsa의 경우 ~/. ssh/id_..
# 환경 변수 추가 $ export DB_PASSWORD="123456" # 비밀번호 123456 선언 # 환경변수 삭제 $ unset DB_PASSWORD # 환경변수 확인 $ env # 전체 환경변수 $ env | grep # 원하는 조건으로 찾기 $ export # 선언된 전체 환경변수 확인
리눅스에서 쉘 스크립트를 작성할 때 예약을 걸거나 파일명을 설정할 때 날짜 표기를 해야 하는 경우가 종종 발생했다. 날짜 표기법, 포맷 등에 대한 정리본! 기본 날짜 출력 방식 $ date > Thu Aug 25 02:34:50 UTC 2022 # 날짜 포맷 포맷 설명 %a 요일 약어 (e.g. Sun, Mon, ..., 일, 월, ...) %A 요일 (e.g. Sunday, Monday,.., 일요일, 월요일...) %b 달 약어 (e.g. Jan, Feb, ..., 1월, 2월, ...) %B 달 (e.g. January, Febuary, ..., 1월, 2월, ...) %c 날짜와 시간 (e.g. Wed Aug 10 11:46:50) %d 그 달의 일 (e.g. 1, 2, 3, ... 31) %D ..
# 배경 Crontab를 사용하여 자정마다 작업을 돌리는데 해당 작업이 SQL과 관련된 내용이라 따로 에러 알림을 받지 못하고 데이터를 확인했을 때 제대로 들어오지 않음을 확인했다. Crontab이 돌아갈 때의 메시지를 받고 싶어 로그를 남기는 방법을 찾아보았다 # 실행시키 파일 작성 로그에 시간별로 쌓이는 것을 확인하기 위해서 시간 작성을 하였다 test.sh #!/bin/bash NOW=`date +"%Y-%m-%d %H:%M"` echo "${NOW}" echo "Hello World" # Crontab 작성 로그 없이 예약설정 * * * * * /home/ubuntu/test.sh 로그 설정 (로그 덮어쓰기) */5 * * * * /home/ubuntu/test.sh > /home/ubuntu/t..
# 배경 crontab을 작성 후 저장을 하고 나오는데 제대로 저장이 되지 않았다! # Crontab 작성 후 저장하기 1. Crontab -e로 작성하기 Crontab -e 명령어를 입력하면 바로 편집창이 뜬다. 예약 시간과 파일을 작성한다. # Edit this file to introduce tasks to be run by cron. # # Each task to run has to be defined through a single line # indicating with different fields when the task will be run # and what command to run for the task # ... 0 0 * * * /home/ubuntu/test.sh 2. Ctrl ..
# Crontab이란? Linux에서 일정 주기, 특정 시간에 맞춰 어떠한 명령을 실행하도록 하는 스케쥴러의 기능을 가능하게 하는 것을 Crontab이라고 한다. # Crontab 기본 명령어 # crontab 리스트 보기 $ crontab -l # crontab 작성 $ crontab -b # crontab 작업 모두 삭제 $ crontab -r # Crontab 작성 방법 * * * * * Crontab은 5개의 실행주기를 설정하여 작성한다. 차례대로 분 / 시 / 일 / 월 / 요일 이다. 분 : 0 - 59 시 : 0 - 23 일 : 1 - 31 월 : 1 - 12 요일 : 0 - 7 (0,7 = 일요일 / 1 = 월요일 ...) # 매분 실행 $ * * * * * /test.sh # 매일 10시..