Linux 159

[Linux] SSH 접속 시 Server unexpectedly closed network connection 에러

현상 다른 서버실에서 동작하고 있던 서버를 옮겨왔다. 서버 설정을 대충 마무리하고 SSH 접속을 시도했더니 아래와 같은 에러가 발생하면 접속이 되지 않았다. # mobaXterm Server unexpectedly closed network connection # CMD kex_exchange_identification: read: Connection reset 원인과 해결 방법을 적어둔다. 원인 이번에 들여온 서버는 다른 조직에서 관리하고 있던 서버인데, 해당 조직에서는 사용자의 접근을 제한하고 관리하는 수단으로 hosts.allow 파일을 사용하고 있었다. 관련 개념을 아래에 간단히 적어둔다. TCP Wrapper 호스트 기반 네트워킹 ACL 시스템. 리눅스와 같은 운영 처제의 인터넷 프로토콜 서버에..

Linux 2023.10.04

[Linux] root 영역 디렉터리 (proc/sys/dev)

개요 이 글에서는 https://mug896.github.io/bash-shell/etc.html 에서 설명하고 있는 / 영역 아래 일부 디렉터리에 대해 간단히 정리한다. /proc 현재 시스템에서 실행되는 프로세스에 대한 정보를 제공하기 위한 가상의 파일 시스템이다. 사용자가 커널이 가지고 있는 정보를 쉽게 사용할 수 있도록 메모리 상에 가상의 파일 시스템을 만들어 구조적으로 제공하는 것으로, 실제 파일이 존재하는 것이 아니다. 각 파일은 커널 내의 특정 함수와 연결되어 있어 실시간으로 read 하여 정보를 확인할 수 있다. 또한 프로세스 정보뿐만 아니라 커널이 가진 여러 시스템 관련 정보도 제공하고 있으며, write 하여 값을 변경할 수도 있다. 즉, 파일 시스템을 통해 직접 커널 옵션 설정을 변경..

Linux 2023.09.15

[Shell Script] Login Shell VS Non-Login Shell

개요 2023.09.13 - [Shell Script] 대화형 VS 비대화형 쉘에서 쉘의 종류를 대화형과 비대화형으로 구분해 봤는데, 이 글에서는 관점을 달리하여 Login Shell과 Non-Login Shell로 쉘의 실행 환경을 구분해 본다. Login Shell Login Shell은 원격 서버에 SSH나 Telnet으로 접속해 login 과정을 거쳐 사용하는 환경이다. 프롬프트 상에서 아래 명령을 실행했을 때, 첫 문자가 '-'이면 로그인 쉘임을 나타낸다. echo $0 또는 아래 명령을 통해 알아볼 수 있다. shopt -q login_shell; echo $? # -q : 나열된 옵션이 모두 활성화되어 있으면 0을 반환한다. Login Shell을 시작할 때는 아래의 파일을 순서대로 읽어 들..

Linux/Shell Script 2023.09.14

[Shell Script] 대화형 VS 비대화형 쉘

쉘 실행 환경 Shell이 실행되는 환경은 크게 두 가지로 구분할 수 있다. 대화형 (Interactive) : 프롬포트를 통해 사용자로부터 직접 명령을 입력받아 실행한다. 비대화형 (Non-Interactive) : 스크립트 파일 등을 실행한다. history, alias, job control과 같은 기능은 기본적으로 대화형 쉘에서 사용하기 위한 기능이므로 비대화형 쉘에서는 비활성화된다. 쉘 실행 환경 확인 아래 명령을 통해 실행 중인 쉘이 대화형인지, 비대화형인지 확인할 수 있다. case $- in *i*) echo interactive shell ;; *) echo non-interactive shell ;; esac set 명령에 의해 설정된 option flags를 저장하고 있는 $- 변수의..

Linux/Shell Script 2023.09.13

[Shell Script] 스크립트 실행 방법

개요 쉘 스크립트를 실행하는 방법에는 여러 가지가 있는데 이 글에서는 각 방법에 대해 간단히 적어둔다. 실행 권한 부여 후 실행 작성한 스크립트 파일에 실행 권한을 부여하여 실행한다. 참고 : 2021.06.08 - chmod - 파일 권한 설정 # 실행 권한 부여 chmod 775 /path/script.sh ## 또는 chmod +x /path/script.sh # 스크립트 실행 /path/script.sh bash/sh 명령으로 실행 python 명령어에 실행할 코드를 지정하여 python 프로그램을 실행할 수 있는 것처럼 python /path/code/python.py 쉘 스크립트도 bash 또는 sh 명령으로 실행할 수 있다. 이때 스크립트를 호출하는 것과 달리 실행 권한이 없어도 된다. ba..

Linux/Shell Script 2023.08.31

[Linux] tee - 실행 결과를 파일/터미널로 쓰기

개요 어떤 디렉터리에 저장된 파일 목록을 확인할 때는 ls -al 등의 명령을 사용한다. 이 결과를 파일로 저장하고 싶을 때는 파일 리다이렉션을 사용한다. COMMAND > FILE # 예시 ll /var/ > tee ll_var_20230813.txt 이 경우 표준 출력을 파일로 리다이렉션 했기 때문에 터미널로 실행 결과를 확인할 수 없다. 실행 결과를 확인하기 위해서는 저장한 파일을 읽어야 한다. 만약 어떤 명령어의 실행 결과를 터미널로 확인하면서 파일로 저장하고 싶다면 tee 명령을 사용할 수 있다. tee 표준 입력을 읽어 표준 출력과 파일에 쓰는 명령어 tee [OPTION]... [FILE]... 보통 어떤 명령어와 tee 명령어를 파이프로 연결하여 명령어의 실행 결과를 특정 파일에 기록함과 ..

Linux 2023.08.30

[Linux] 디렉터리 내 모든 파일/디렉터리 권한 확인

개요특정 디렉터리 내 모든 하위 경로에 대한 읽기/쓰기/실행 권한을 확인하고자 한다. 명령어를 찾아보자.   ls - find 명령find 명령으로 특정 경로에 존재하는 파일과 디렉터리를 찾아 ls 명령의 인수로 전달한다. 하위 디렉터리만 조회ls -dl `find /PATH -type d`# -d, --directory : 디렉터리만 나열# 예시ls -dl `find /var -type d` 파일만 조회ls -dl `find /PATH -type F`# -d, --directory : 디렉터리만 나열# 예시ls -dl `find /var -type f`  find -ls 옵션 사용find 명령의 -ls 옵션은 ls -dils 형식으로 파일 목록을 출력한다. 하위 디렉터리만 조회find /PATH -ty..

Linux 2023.08.14

[Linux] sed - 파일의 특정 범위 출력

개요 crontab 설정 등 파일의 행 수가 너무 길어서 특정 행 범위만큼만 출력하여 확인하고자 한다. 방법을 정리해 둔다. 기존 sed 명령어 사용법을 정리한 글은 아래와 같다. 2021.08.24 - sed - 문자열 치환 2021.07.26 - sed - 쉘에서 파일 내용 일부 삭제 명령어 파일이나 표준 입력의 특정 행 범위를 출력할 때는 -n 옵션에 p 패턴을 사용한다. 패턴 p는 현재 패턴 공간을 인쇄하라는 명령이다. sed -n ', p' # 예시 man sed | sed -n '10, 20p' 만약 특정 행부터 마지막 행까지 출력하고 싶을 때는 아래와 같이 사용한다. sed -n ', \$p' # 예시 man sed | sed -n '200, \$p' 참고 문서 https://jhnyang...

Linux 2023.08.04

[Linux] SSH 접속 시 WARNING: UNPROTECTED PRIVATE KEY FILE! 에러

현상 pem 키를 이용해 서버에 SSH 접속 시도 시 아래와 같은 에러가 발생하면서 연결에 실패했다. 해결해보자. 원인 Public key로 SSH 인증을 시도하면 SSH Client는 Private Key가 위치한 디렉터리와 Private Key 파일의 권한을 확인한다. SSH Private Key 파일은 민감한 정보이기 때문에 소유자 이외의 다른 사용자가 읽을 수 있으면 위에 같은 UNPROTECTED PRIVATE KEY FILE! 에러가 발생하면서 동작하지 않는다. 해결 파일을 소유자만 읽을 수 있도록 group, other 권한을 제거하면 된다. 600 또는 400 정도로 설정하면 된다. cd ~/.ssh chmod 600 *.pem chmod 400 *.pem 권한을 정리한 후에 SSH 접속을..

Linux 2023.08.03

[Linux] rsync - 특정 디렉터리 제외하고 복사

개요 데이터 복사를 해야 하는데 저장 공간이 조금 부족해서 불필요한 경로는 제외하고 복사하려고 한다. 방법을 적어둔다. rsync rsync 명령은 cp와 비슷한 파일 복사 도구로, 서로 다른 두 개의 시스템 간에 파일과 디렉터리를 동기화하기 위해 사용한다. 즉, 파일의 타임스탬프와 크기를 검사하여 변경이 발생한 파일만 복사한다. 또 로컬 복사도 할 수 있지만 SSH를 통한 원격 복사도 할 수 있다. 즉, scp처럼 사용할 수도 있다. rsync [OPTION...] SRC... [DEST] 소스 경로만 지정하는 경우, 파일을 나열한다. 특정 디렉터리 제외하고 복사 복사에서 특정 디렉터리를 제외하고 싶을 때는 다음과 같이 사용한다. rsync -avz --exclude SRC DEST # -a : 아카이..

Linux 2023.07.26