이것은 내가 오랫동안 겪고 있었던 문제이지만, 내가 잃어버린 것을 알아 내려고 할 때마다 더 많은 경험이있는 누군가가 나를 도울 수있는 곳에서 더 잘 물어볼 수있을 것이라고 생각했습니다.
배경
내 Raspberry Pi는 Raspbian Jessie를 실행 중이며 SSH를 사용하여 자주 로그인하고 명령을 원격으로 실행합니다. 첫 번째 SSH 세션 중에는 로그인 할 때마다 RPi에ssh-agent
프로세스가 생성 되었지만 로그인 할 때 죽지 않았다는 것을 알았 습니다. 여러 번 로그인 및 로그 아웃하면 아무 것도하지 않고 여러 프로세스가 생성됩니다. 나는 여기저기서 매뉴얼 페이지와 답변을 읽고 읽으면서 최근의 목적을 이해했으며 로그 아웃 할 때 정상적으로 죽어야한다는 것을 알았으므로 왜 그렇지 않은지 스스로에게 묻기 시작했습니다. 또한 발행으로 인해 다른 인스턴스 가 생성되는 것으로 나타났습니다. 상대 매뉴얼 페이지를 읽었습니다.exit
ssh-agent
ssh-agent
source ~/.bashrc
ssh-agent
프로그램이 출력을 실행하고 변수 SSH_AGENT_PID
를 정의하기 위해 ssh-agent
프로그램을 시작해야 하기 때문에 환경 변수 를 정의해야 합니다.이 변수 는 (현재 세션 eval
과 관련된 ssh-agent -k
에이전트를 종료하는 것을 포함하여) 다른 SSH 관련 명령에 의해 사용됩니다. 실행 echo $SSH_AGENT_PID
하고 echo $SSH_AUTH_SOCK
,하지만 그들은 모두 비어 있었다. 나는 갑자기 깨달았다 : 아마도 ssh-agent -k
설정되지 않은 환경 변수에서 PID를 읽으려고 시도하기 때문에 로그 아웃시 프로세스가 종료 되지 않을 것입니다.
문제
이후로는 ssh-agent
로그 아웃에 사망하고, 확실히이 필요한 환경 변수가 설정되지 않기 때문에, 그것은 단지 평균 하나 일 수 있습니다 발생하지 않을 : 호출 누구든지 ssh-agent
로그인에 아마 (될 것이라고 적절한 방법으로하지 않습니다 eval "$(ssh-agent -s)"
) . 그래서 나는 생각했다 : 무엇이 문제인가? 에이전트를 시작하고 수동으로 수정하기 위해 실행되는 구성 파일, 서비스 또는 로그인 스크립트를 찾을 수 있습니다! 지구상의 어디에있을 수 있습니까?
내가 시도한 것
ssh-agent
내가 호출 할 때마다가 생성되는 것을 알았으므로 source ~/.bashrc
이것이 처음으로 검사 한 파일이지만 SSH와 관련된 것을 원격으로 참조 한 것은 없습니다. 다음 파일 모두에서 문자열을 계속 사용 했지만 아무것도 찾지 못했습니다vi
ssh
.
~/.bashrc
~/.profile
/etc/bash.bashrc
/etc/profile
/etc/profile.d/ (every file in this folder)
/etc/environment
관련 될 수있는 파일이 더 source ~/.bashrc
있습니까? 나는 정말로 모른다.
그런 다음 관련 systemd
서비스를 검색 했지만 ssh.service
, 즉을 찾았 WantedBy=multi-user.target
으므로 로그인 할 때 실행되지 않습니다 (SSH 서버 데몬이기 때문에 분명합니다).
또한 폴더의 모든 단일 파일을 /home/pi
임시 폴더로 이동 하고 로그 아웃했다가 다시 로그인했지만 ssh-agent
여전히 생성되었습니다.
결국, 나는 또한 챔버에서 마지막으로 찍은 샷을 발사했습니다. 나는 find / -name 'ssh-agent'
루트 /usr/bin/ssh-agent
로 실행하여 실행 파일 만 인쇄 했으므로 기본적으로 부모 명령 만 기록 한 가짜 실행 파일을 만들었습니다 .
#! /bin/bash
ps -o args= $PPID > /home/pi/LOG
cat /proc/$PPID/cmdline >> /home/pi/LOG
실제 이름을 바꾸고 /usr/bin/ssh-agent
올바른 권한 / 사용자 / 그룹을 설정 한 가짜 파일로 바꾸고 source ~/.bashrc
다시 실행 한 다음 LOG
파일 을 인쇄했습니다 .
-bash
-bash
무슨 일이 일어나고 있는지에 대한 단서가 아닙니다.
더 자세한 내용
더 자세한 내용을 추가하고 있는데 도움이 될지 모르겠지만 미안보다 안전합니다.
여기 내
.bashrc
입니다.을
dummy
사용하여 이름이 지정된 새 사용자를 만들었고useradd -m dummy
로그인해도 시작되지 않습니다ssh-agent
(이것이 뭔가 의미가 있다고 생각합니다).diff /home/pi/.bashrc /home/dummy/.bashrc
에 대한 동일 쇼 기본적으로 아무것도 (내가 만든 단지 주석)diff /home/pi/.profile /home/dummy/.profile
.에이전트 소켓이
SSH_AUTH_SOCK
설정되지 않은 경우에도 문제없이 작성 됩니다.pi:~$ ls -lAh /tmp/ssh-vQRTAyj7DJry/ total 0 srw------- 1 pi pi 0 Jan 28 03:12 agent.1328
이유는 확실하지 않지만 소켓 파일 이름의 숫자는 항상
ssh-agent
프로세스 PID 직전의 숫자입니다 .니펫
htop
:PID USER PRI NI VIRT RES SHR S Command 1 root 20 0 5472 3900 2728 S /sbin/init 1329 pi 20 0 3696 224 16 S └─ ssh-agent -s
일치하는 설치된 패키지
ssh
:pi:~$ apt list --installed | grep ssh libpam-chksshpwd/oldstable,now 1.1.8-3.1+deb8u2+rpi3 armhf [installed] libssh-gcrypt-4/oldstable,now 0.6.3-4+deb8u2 armhf [installed,automatic] libssh2-1/oldstable,now 1.4.3-4.1+deb8u1 armhf [installed,automatic] openssh-client/oldstable,now 1:6.7p1-5+deb8u4 armhf [installed,automatic] openssh-server/oldstable,now 1:6.7p1-5+deb8u4 armhf [installed,automatic] openssh-sftp-server/oldstable,now 1:6.7p1-5+deb8u4 armhf [installed,automatic] ssh/oldstable,now 1:6.7p1-5+deb8u4 all [installed] sshpass/oldstable,now 1.05-1 armhf [installed]
검색
ssh-agent -s
재귀 적 사용grep
에/etc
및/lib
어떤 결과를 얻을 수 있습니다.데스크탑 환경이 설치되어 있지 않지만
/etc/X11
구성 파일 이 포함 된 폴더가 있습니다. 폴더의 이름을 바꾸고 다른 경우로 재부팅하려고 시도했지만 프로세스가 여전히 생성되므로 분명히 그와 관련이 없습니다.
결론
이제 가능한 한 간단하게하기 위해 두 가지 질문 만 있습니다.
- 이것은 어디에서 어떻게
ssh-agent
생성되며 누가 명령을 내립니까? - 필요한 환경 변수를 설정하지 않고 프로세스를 무기한 중단하지 않고 올바른 방식으로 호출되지 않는 이유는 무엇입니까?
~/.bashrc
그때 당신이 무엇을 가지고 있는지 궁금합니다 .