ssh-keygen 명령으로 공개키를 생성한 후 패스워드 없이 접속하려는 서버에 공개키를 복사한 후 파일이름을 authorized_keys 로 변경하고 ssh 접속을 시도했지만 여전히 패스워드를 물어보는 경우가 있음

 

공개키를 공유한 서버에서 다시한번 접속을 시도하려는 계정이랑 패스워드를 확인하고 공개키를 복사해놓은 경로(/home/사용자계정/.ssh/)와 sshd 서비스 상태, /etc/ssh/sshd_config 설정도 확인해봤지만 아무런 문제가 없다면 허공에 삽질만 계속하는 상황이 발생하게 될 수 있다. (분명히 이전에도 이렇게 해서 잘됐는데...)

 

이런 경우에는 공개키를 복사해둔 경로인 /home/사용자계정/.ssh의 권한을 확인해보고 .ssh 디렉토리의 권한이 700이 아닌 다른 권한(600, 777, 775...)으로 설정되어있다면 .ssh 디렉토리의 권한을 700으로 변경해주면 문제가 해결된다. 그리고 권한 변경 후 ssh 접속을 시도하면 패스워드 없이 ssh 접속에 성공한 것을 확인할 수 있다.

 

① 공개키를 복사해둔 경로인 /home/사용자계정/.ssh 디렉토리의 권한확인(700)

② ssh 접속 시도(패스워드 없이 접속 성공)

 

 

 

 

Single Mode 부팅 및 CLI, GUI, 복구 모드로 변경

 

 

1. 싱글모드 진입

 

리눅스 서버를 운영중에 root 패스워드를 분실해서 접속을 못하는 상황이거나 부팅중에 문제가 생겨서 정상적으로 동작하지 않을 경우 싱글모드로 접속하게 될 경우가 종종 있습니다.

(단, 원격환경이 아닌 root 패스워드를 변경하려는 시스템에 직접 접근해서 진행해야 된다.)

 

 

CentOS 6

 

① 재부팅 후 아래와 같은 화면이 뜨면 아무 키나 눌러서 다음화면으로 진입합니다.

 

 

② 그다음 'e' 키를 눌러서 다음 화면으로 진입

 

 

③ 2번째 항목에 있는 kernel 부분에서 다시한번 'e' 키를 눌러줍니다.

 

 

④ 그럼 아래와 같은 화면이 뜨고 맨마지막부분에 rhgb quiet부분에서 한칸띄우고 single 입력후 enter

 

 

⑤ 그러면 아까 지나갔던 화면이 다시 나오고여기서 'b'를 눌러주세요

 

 

⑥ 싱글모드로 진입 성공

 

 

 

 

CentOS 7

 

① 재부팅후 'e' 키를 눌러 다음화면으로 진입합니다.

 

 

② 그다음 다음과 같은 화면이 뜨면 ro, rhgb quiet 부분을 변경합니다.

 

 

③ ro, rhgb quiet 부분을 rw, init=/bin/bash 로 변경하고 Ctrl-x를 눌러 다음 화면으로 진입합니다.

 

 

싱글모드로 진입 성공

 

 

 

!TIP

싱글모드에서는 명령어가 먹히지 않으므로 다음과 같은 명령어를 통해 리부팅이 가능합니다.

#exec /sbin/init

 

 

2. CentOS 환경에서 CLI 혹은 GUI 모드로 변경하는 방법

 

CentOS 6

 

CLI 모드로 변경

#init 3 명령어를 입력하거나 vi편집기를 사용해 /etc/inittab에 id:5:initdefault: 부분을 id:3:initdefault으로 변경하고 시스템을 재시작 합니다.

 

 

 

GUI 모드로 변경

#startx 명령어를 입력하거나 /etc/inittab을 수정해서 CLI모드로 진입했었다면 /etc/inittab에 id:3:initdefault: 부분을 다시 id:5:initdefault으로 변경하고 시스템을 재시작합니다.

 

 

CentOS 7

아래와 같은 방법으로 CLI, GUI, 복구 모드로 변경 한 후 시스템을 재시작 합니다.

 

① CLI 모드로 변경 후 변경내용확인

#systemctl set-default multi-user.target

#systemctl get-default

 

② GUI 모드로 변경 후 변경내용확인

#systemctl set-default graphical.target

#systemctl get-default


③ 싱글모드로 진입한 후 CLI, GUI 변경하기

- CLI모드를 기본모드로 설정

#rm /etc/systemd/system/default.target

#ln -s /usr/lib/systemd/system/multiuser.target  /etc/systemd/system/default.target

 

- GUI모드를 기본모드로 설정

#rm /etc/systemd/system/default.target

#ln -s /usr/lib/systemd/system/graphical.target  /etc/systemd/system/default.target

 

④ 복구모드로 변경 후 변경내용확인

#systemctl set-default rescue.target

#systemctl get-default

 

 

 

'Linux' 카테고리의 다른 글

마운트 시 오류 'mount error(112): Host is down'  (0) 2019.01.25
error db5 error(11) from dbenv- open resource temporarily unavailable  (0) 2019.01.22
ffmpeg 실행시 오류  (0) 2019.01.22
vi editor  (0) 2017.10.09
crontab 사용방법  (0) 2017.08.02

vi editor

vi editor

 

1. vi editor란?

vi는 대부분의 유닉스 및 리눅스 환경의 기본 에디터로 명령 모드(command mode), 입력 모드(input mode), 실행 모드(execution mode) 3가지 모드로 구분되어 사용된다.

 

명령 모드(command mode)

- 한 문자 또는 두 문자로 구성된 vi 전용 명령어를 사용하는 모드로서 "커서 이동 / 문자 삭제 / 문자열 교체 / 문자열 검색" 등을 할 수 있는 모드를 말한다. vi를 처음 실행하면 시작하는 모드, vi에서는 대문자와 소문자를 구분해서 사용해야 한다.

 

입력모드(input mode)

- vi 편집화면에서 문자를 입력할 수 있는 상태를 의미하며 명령 모드에서 입력 모드로 전환하려면 i, a, o, I, A, O, R 등으로 명령을 내리면 입력 모드로 전환된다. 입력 모드로 전환되면 화면 화단에 " -- INSERT -- "라는 문구가 표시된다. 이 상태에서 다시 <ESC>를 누르게 되면 다시 명령 모드로 전환된다.

 

실행 모드(execution mode)

- vi의 특별한 명령어를 실행하는 실행 모드를 의미하며 명령 모드에서 콜론(:)을 누르면 vi 화면 하단 좌측에 ":"가 나타나며 이 상태에서 vi의 특별한 명령어를 사용할 수 있다.

 

 

2. vi 기초 명령어

 

1) 이동 명령

 

 h

 왼쪽으로 한 글자 이동

 l

 오른쪽으로 한 글자 이동

 k

 위쪽으로 한 줄 이동

 j

 아래쪽으로 한 줄 이동

 

단어 단위로 이동

 W

 다음 단어의 처음으로 이동

 B

 현재 단어의 처음으로 이동

 E

 다음 단어의 끝으로 이동

 

행, 문장 및 단락의 처음과 끝으로 이동

 0 또는 ^

 현재 행의 맨 앞으로 이동

 $

 현재 행의 맨 끝으로 이동

 +

 다음 행의 처음으로 이동

 -

 이전 행의 처음으로 이동

 (

 문장의 시작으로 이동

 )

 문장의 끝으로 이동

 {

 단락의 시작으로 이동

 }

 단락의 끝으로 이동

 

화면 내에서 행 단위로 이동

 H

 현재 화면의 맨 위로 이동

 M

 현재 화면의 가운데 행으로 이동

 L

 현재 화면의 맨 아래로 이동

 

한 화면씩 스크롤

 Ctrl + F

 한 화면 다음으로 이동

 n + Ctrl +F

 n 화면 다음으로 이동

 Ctrl + B

 한 화면 이전으로 이동

 n + Ctrl + B

 n화면 이전으로 이동

 Ctrl + D

 반 화면 다음으로 이동

 Ctrl + U

 반 화면 이전으로 이동

 n + Ctrl +D

 n 행 다음으로 이동

 n + Ctrl + U

 n 행 이전으로 이동

 

 

2) 입력하기

 

 현재 위치부터 입력

 I

 현재 행 맨 처음부터 입력

a

 현재 위치 다음부터 입력

 A

 현재 행의 끝부터 입력

o

 현재 행 다음 행에 입력

 O

 현재 행과 앞 행 사이에 입력 

 

 

3) 저장 및 종료

 

 :w 

 불러온 파일명으로 데이터 저장

 :w [파일명]

 지정 파일명으로 데이터를 저장

 :w >> [파일명]

 지정 파일명으로 데이터를 추가하여 저장

 :w!

 강제 저장

 :q

 종료

 :q!

 저장 없이 강제 종료

 :wq

 파일 저장 후 종료. 파일명 지정가능.

 :wq!

 강제로 파일 저장 후 종료. 파일명 지정가능.

 ZZ

 파일을 저장하고 vi종료

 :x

 파일에 변경이 있었다면 파일을 저장하고 vi를 종료

 

 

4) 삭제, 수정 및 복사

 

x

 현재 위치에서 한 글자 삭제

X

 현재 위치에서 앞 글자 삭제

dd

 현재 행 지우기

D

 현재 위치에서 행의 끝까지 지우기

dw

 단어 삭제

cw

 단어 삭제 후 입력

d$

 커서가 있는 곳부터 행의 끝까지 지우기

dG

 커서가 있는 곳부터 파일 끝까지 지우기

P

 마지막으로 지워진 내용은 커서의 뒤/아래에 삽입

p

 마지막으로 지워진 내용을 커서의 앞/뒤에 삽입

xp

 두 문자를 바꿈

deep

 두 단어를 바꿈

ddp

 두 줄을 바꿈

YY

 현재 행을 복사하기

u

 바로 전에 수행한 명령 취소하기

U

 바로 전에 수행한 행의 모든 명령 취소하기

r

 다른 파일의 내용을 읽어 들여 붙이기

 

 

 

5) 패턴 찾기

 

 /문자열

 아래 방향으로 문자열 검색

 /

 이전 패턴에 대해 아래 방향으로 검색을 반복

 ?문자열

 위 방향으로 문자열 검색

 ?

 이전 패턴에 대해 위 방향으로 검색을 반복

 n

 / 또는? 명령에 대해 같은 방향으로 반복 검색

 N

 / 또는 ? 명령에 대해 반대 방향으로 반복 검색

 

 

6) 기타 명령

 

화면상태 제어

^L

 화면을 다시 디스플레이

 :set nu

 :set number

 편집 중인 문서의 행 번호를 보여줌

 :set nonu

 :set nonumber

 편집 중인 문서의 행 번호를 보여주지 않음

 

약자의 사용

 :ab short long

 short를 long에 대한 약어로 변경 

 :ab

 약어 short를 표시 현재 약어 목록을 표시

 :una short

 편집 중인 문서의 줄 번호를 보여주지 않음

 

화면 줄 길이 조정

 r <Return>

 문자를 뉴 라인으로 변경 

 J

 줄의 결합

 :set wm=n

 오른쪽으로 n 문자 위치에서 자동적으로 줄 나눔

 

문자열 치환

 :g/search-string/s//replace-string/g

 앞부분의 문자열을 찾아서 뒷부분의 문자열로 대체

 :s/str/rep/

 현재 행의 str을 rep로 대체

 :1,.s/str/rep/

 1부터 현재 행의 str을 rep로 대체

 :%s/str/rep/g

 파일 전체 str을 rep로 전부 대체

 :.$/aaa/bbb/

 커서의 위치로부터 파일의 끝까지 있는 모든 aaa를 bbb로 대체

 

 

 

3. vi editor 단축키

 

 

vi 단축키 모음 이미지 출처: KLDP

 


to Top