ssh-agent가 설정되지 않았습니다(SSH_AUTH_SOCK 및 SSH_AGENT_PID 환경 변수가 설정되지 않음).

ssh-agent가 설정되지 않았습니다(SSH_AUTH_SOCK 및 SSH_AGENT_PID 환경 변수가 설정되지 않음).

Kubuntu 12.04에서 친구의 새 사용자 계정을 설정했습니다. 그가 그것을 사용하면 ssh다음과 같은 오류가 발생합니다.

인증 프록시에 대한 연결을 열 수 없습니다.

ssh우리는 몇 가지 bash 스크립트를 실행하고 있습니다 .

이 오류를 일으킬 수 있는 다양한 요인을 살펴본 후 다음 해결책을 찾았습니다.

$ eval `ssh-agent -s`
$ ssh-add ~/.ssh/some_id_rsa

ssh그런 다음 예상대로 명령(및 bash 스크립트)을 실행할 수 있습니다.

다음 두 명령을 실행하기 전에 환경 변수가 터미널에 설정되지 않았습니다.

$ echo $SSH_AGENT_PID

$ echo $SSH_AUTH_SOCK

$ 

명령을 실행하면 환경 변수가 예상대로 설정됩니다. 그러나 설정은 유지되지 않습니다(예: 다른 셸 전체 또는 재부팅 시).

저는 그가 환경 변수를 설정하기 위해 이 두 명령을 실행할 필요가 없도록 그의 컴퓨터를 설정하는 방법을 알고 싶습니다. 내 컴퓨터에서 실행할 필요가 없습니다. 지금까지 나는 우리 기계 사이에 어떤 차이도 보지 못했습니다.

매뉴얼 페이지에서 이 정보를 보았지만 Ubuntu가 일반적으로 프록시를 자동으로 설정하는 방법이나 내 친구의 컴퓨터에서 무슨 일이 일어나고 있는지 알려주지 않았기 때문에 이 정보는 그에게 작동하지 않았습니다.

프록시를 설정하는 두 가지 주요 방법이 있습니다. 첫 번째는 프록시가 일부 환경 변수를 내보내는 새 하위 명령을 시작하는 것입니다.
ssh-agent xterm &. 두 번째는 에이전트 인쇄(sh(1) 또는 csh(1) 구문 생성 가능)에 필요한 셸 명령으로, 호출 셸에서 평가할 수 있습니다. eval `ssh-agent -s`
sh(1) 또는 ksh(1) 과 같은 Bourne 유형 쉘의 경우eval `ssh-agent -c`csh(1) 및 그 파생물의 경우.

설치 acct하고 다시 시작하면 다음과 같은 결과가 출력됩니다 lastcomm.

ssh-agent         F    newuser __         0.12 secs Wed Aug  7 11:02
ssh-agent         F    newuser __         0.00 secs Wed Aug  7 20:34
ssh-agent         F    newuser __         0.02 secs Wed Aug  7 20:02
ssh-agent         F    newuser __         0.01 secs Thu Aug  8 12:39
ssh-agent         F    newuser __         0.02 secs Thu Aug  8 07:45

매뉴얼 페이지에서:

F  -- 명령은 분기 후에 실행되지만 후속 실행은 없습니다.

이것이 중요한지 잘 모르겠습니다.

답변1

~을 위한

$ eval `ssh-agent -s`

"시작 스크립트"를 넣을 때 세션과 궁극적으로 환경이 있을 것으로 예상되는 터미널은 해당 스크립트의 하위 항목이어야 합니다( 및 fork) exec. 그 이유는 평가할 때 출력에 ssh-agent -s환경 변수가 설정되어 있기 때문입니다.쉘에서 호출됨eval. 거기에서 전해졌을 수도 있고, 도중에 잃어버렸을 수도 있습니다.

따라서 ssh-agent로그인 중에 스크립트 A에 의해 실행되지만 쉘 스크립트를 시작한 터미널 B는 다음과 같습니다.후손이 아님A의 환경이면 B의 환경을 볼 수 없습니다.

ssh-agent서비스 로 시작 하는 경우 systemd --user규칙을 사용해야 할 수도 있습니다. 즉, ssh-agent 변수를 지정하지 말고 에이전트를 시작하고 세션을 시작할 때 상식을 따르십시오. 예를 들어 내 ~/.config/systemd/user/ssh-agent.service모습은 다음과 같습니다.

[Unit]
Description=SSH agent

[Service]
Type=simple
Environment=SSH_AUTH_SOCK=%t/ssh-agent.socket
ExecStart=/usr/bin/ssh-agent -D -a $SSH_AUTH_SOCK

[Install]
WantedBy=default.target

내 I에는 ~/.profile이 줄이 있어요

export SSH_AUTH_SOCK="${XDG_RUNTIME_DIR}/ssh-agent.socket"

%t전자가 ${XDG_RUNTIME_DIR}후자 에 해당한다는 점에 유의하세요 .

노트:나는 이것에 대해 만족하지 않습니다!

답변2

사용자가 ssh로컬로 로그인하지 않고 로그인했다고 언급하셨습니다. 따라서 이것은 use-ssh-agent빨간색 /etc/X11/Xsession.options청어입니다. X11 GUI 데스크톱에 로컬로 로그인한 경우에만(또는 VNC 또는 RDP를 통해 일부 가상 X11 세션을 사용하여) SSH 세션에서 실행되지 않습니다.

libpam-ssh대신, 두 시스템 중 하나에 설치되어 있는지 확인해야 합니다 . 사용자를 인증하기 위해 SSH 개인 키 비밀번호를 사용하도록 구성할 수 있지만 이는 선택 사항이며 ~/.ssh/login-keys.d/이 기능을 위해 특별히 키를 배치해야 합니다 .

그러나 또 다른 기능은 로그인 세션에서 SSH 에이전트를 자동으로 시작하고 비밀번호가 사용자의 로그인 비밀번호와 동일한 경우 에이전트에 SSH 개인 키를 자동으로 추가하는 것입니다. 이것이 시스템 간에 서로 다른 동작을 일으키는 원인일 수 있다고 생각합니다.

답변3

당신이 언급한

$ eval `ssh-agent -s`
$ ssh-add ~/.ssh/some_id_rsa

예상대로 작동합니다. 따라서 적시에 .bash_profile 또는 .xsession에서 실행하면 됩니다. 디버깅 문을 추가하면 (date; env|sort) >> /tmp/log실행 시기를 정확히 이해하는 데 도움이 됩니다.

답변4

다중 사용자 Jupyterhub Python 환경을 위한 SSH-Keygen:

설정하는 중SSH-키 생성안에다중 사용자 Jupyter Python 환경이것은 큰 좌절로 판명되었습니다... 이는 확실히 git의 일반 텍스트 http 비밀번호보다 바람직합니다.

SSH_AUTH_SOCKcmd를 실행해도 내 컴퓨터로 전송 되지 않는다는 것을 몰랐습니다 .ssh-addeval ssh-agent@스테판위에는 모든 것을 한눈에 볼 수 있도록 아주 좋은 설명이 나와 있습니다! ssh-add 매뉴얼 페이지에 대한 더 유용한 정보여기게다가...


단일 bash cmd에서 모든 것을 실행해야 합니다!

다음은 GitHub 지침을 따르는 예입니다.여기SSH 키 생성 정보.

  • Python 유닛에서 (bang)을 사용하고 있으므로 !jupyter에서 bash 명령을 실행합니다. 추가 정보여기.
  • 또한 && \내 bash 명령은 jupyter Python 노트북 장치에 래핑되어 있으므로하나주문하다:
!ssh-keygen -t ed25519 -C "[email protected]" -f $HOME/.ssh/id_ed25519 -N "" <<< y && \
eval "$(ssh-agent -s)" && \
ssh-add $HOME/.ssh/id_ed25519

SSH 설정 확인

계속해서 SSH 키를 github에 추가하세요. 그렇다면 당신은 할 수 있어야합니다Github 인증을 확인하세요, 다음 명령을 실행할 때 나에게 효과적이었습니다.

!ssh -o "StrictHostKeyChecking no" -T user@[email protected]
  • 플래그는 다음과 같습니다 -o "StrictHostKeyChecking no".아니요이는 중간자 공격이 가능하기 때문에 권장됩니다. 프로그래밍 방식으로 이를 수락하는 방법을 잘 모르겠습니다.또는 알려진 호스트를 가져와 알려진 호스트 파일에 수동으로 추가할 수 있습니다.

관련 정보