레이블이 login인 게시물을 표시합니다. 모든 게시물 표시
레이블이 login인 게시물을 표시합니다. 모든 게시물 표시

ssh 로그인 후 바로 종료 문제

# k8s pod 내에 sshd -D 를 기동 후
# 다음과 같이 ssh 연결을 하면 바로 연결이 close 된다.
ssh root@localhost -vvv

... 생략 ...
Last login: Sat Apr 29 07:38:26 2023 from 127.0.0.1
debug3: receive packet: type 96
debug2: channel 0: rcvd eof
... 생략 ...
Connection to localhost closed.
debug1: Exit status 255

# receive packet : type 96(SSH_MSG_CHANNEL_EOF)으로
# 보통 연결된 ssh 에서 exit/logout 하면 받는 패킷이다.

# lastlog(/var/log/lastlog) 로 마지막 로그를 봐도 로그인 된 흔적이 있다.
Username         Port     From             Latest
root             pts/3    127.0.0.1        Sat Apr 29 07:38:28 +0000 2023
... 생략 ...

# lastb(/var/log/btmp)로 실패한 로그인 기록은 보면 없다고 나오고
# last(/var/log/wtmp) | head -2 로 성공한 로그인 기록을 보면 내역에도 기록 되어 있다.
# 그런데 로그인 후 바로 로그아웃되었다.
root     pts/3        127.0.0.1        Sat Apr 29 07:38 - 07:38  (00:00)
root     pts/3        127.0.0.1        Sat Apr 29 07:38 - 07:38  (00:00)

# 혹시 root 기본 쉘을 확인해보면 bash 정상
cat /etc/passwd | grep groot
root:x:0:0:root:/root:/bin/bash

# ssh closed 시 verbose 내용에 255 종료상태가 있는것을 보고 
# 체크1
# 로그인시 ~/.profile, ~/.bashrc 를 rename 으로 로딩을 하지 않아도 closed 된다.

# 체크2
# root/.ssh/ 에 있는 environment 파일이 다른 정상 container 와 달리 꽤 커서 살펴봤다.
# pod(container)의 파일을 로컬로 복사
kubectl cp {namespace}/{pod_name_ssh_접속정상}:/root/.ssh/environment ./environment1
kubectl cp {namespace}/{pod_name_ssh_접속문제}:/root/.ssh/environment ./environment2

# environment1 파일은 500라인인데, environment2 파일은 1000라인이다.
# 문제가 있는 container /root/.ssh/environment 의 내용을 라인을 지워가면서 접속 여부를 확인해봤다.
# 확인결과 environment 내용에 상관없이 라인수를 991로 줄이면 접속이 성공한다.
# 접속시 너무 많은 environment 설정(현재 client 와 중복도 많이 되고 있었음) 문제였음...

reset mac login password

내가 암호를 변경한건지 계속 사용하던 로그인 암호가 계속 실패한다.
로그인 암호가 동작하지 않을때는 맥북 패스워드를 리셋하자.

맥북 재시작 후 Command(⌘)-R 을 애플 로고 나올때까지 계속 누루고 있으면 복구 화면이 나온다.

이때 Utilities > Terminal > resetpassword 명령을 실행한다.(복구모드 터미널에서만 작동한다.)


Linux passwd 명령으로 사용자 암호 잠금 및 풀기

# 현재 아이디의 암호를 바꾸려고 passwd 명령을 실행했을 때
# 아래와 같은 메세지가 나타나는 경우가 있다.
(current) UNIX password:
passwd: Authentication token manipulation error

# 우선 루트권한으로 바꾸고 passwd 의 다음의 옵션들을 사용해 보자.
# -d 옵션으로 해당 아이디의 암호를 지운다.
passwd -d ysoftman

# -uf 옵션으로 해당 아이디의 암호잠금을 푼다.
passwd -uf ysoftman

# 이제 해당 아이디로 바꾸고 passwd 를 실행하면 새 암호를 입력할 수 있다.
# 참고로 -l 옵션은 해당 아이디의 암호를 잠근다.
# 이후 passwd 로 암호를 바꿀수 없게 된다.

Linux login.def 와 chage 로 사용자 암호 기간 늘리기

사용자 암호기간을 늘리려면 root 권한에서 /etc/login.defs 파일의 PASS_MAX_DAYS 값을 늘려주면 된다.

PASS_MAX_DAYS   99999
PASS_MIN_DAYS   0
PASS_MIN_LEN    8
PASS_WARN_AGE   10

하지만 login.defs 파일 내용은 새로운 아이디를 만들때만 반영된다.
기존의 아이디들은 예전의 login.defs 내용이 반영되어 있는 상태이고, 변경된 login.defs 내용은 반영되지 않는다.
따라서 이미 생성된 아이디의 암호 기간은 root 권한에서 chage(change 가 아님) 명령으로 바꾼다.
암호 기간은 -M 옵션으로 바꿀 수 있다.

chage -M 99999 ysoftman

현재 암호관리 상태는 -l(소문자 엘) 옵션으로 확인 할 수 있다.

chage -l ysoftman

참고로 암호는 /etc/shadow(오래된 리눅스는 /etc/passwd) 에 암호화 되어 저장되고 여기서 직접 암호기간을 바꿀 수도 있다.
한 줄당 하나의 아이디가 아래와 같은 의미를 가지고 있다.
사용자이름:암호:1970년1월1일부터마지막으로암호를수정한날짜까지의수:암호수정최소날수:암호수정최대날수:암호수정경고알림날수:활성화날수:만료까지의날수

Linux 터미널 로그인 관련 파일들

# sshd 설정
sudo vi /etc/ssh/sshd_config

# sshd 재시작
sudo service sshd restart

# 터미널 로그인 전 나타날 메세지 설정
vi /etc/issue.net

# 터미널 로그인 후 나타날 메세지 설정
# motd(message-of-the-day)
vi /etc/motd

# 새로운 터미널을 열때 다음과 같은 마지막 로그인 시간 출력을 하지 않으려면
Last login: xxx

# hushlogin 파일을 만들어 주면 된다.
touch ~/.hushlogin

# 또는 로그인시 -q 옵션 사용
login -q

# 로그인 관련 세한 내용
man login