프록시 명령을 사용하여 SSH 비밀번호 없는 로그인을 수행할 수 없습니다.

프록시 명령을 사용하여 SSH 비밀번호 없는 로그인을 수행할 수 없습니다.

서버가 2개 있습니다. 서버 A를 통해서만 서버 B에 연결할 수 있습니다. 내 ~/.ssh/config파일에서:

Host serverB
  Hostname serverb
  User root
  ForwardAgent yes
  Port 22
  ProxyCommand ssh user@serverA nc %h %p

serverA에 로그인하여 입력하면 ssh root@serverB비밀번호를 묻지 않고 연결되지만 ssh ServerB로컬 컴퓨터에 입력하면 ServerB의 비밀번호를 묻습니다. 왜?

답변1

ProxyCommand파이프를 통해 외부를 연결하기 위해 터널만 제공됩니다 ssh.

ssh serverB이렇게 하면 이전 serverA계정의 키를 사용하게 될 수 있습니다 serverA.

클라이언트 시스템에서 이 작업을 수행할 때 ssh serverB시작한 명령을 통해 연결한다는 사실이 마술처럼 serverA의 키에 대한 액세스를 제공하지 않습니다.ncserverA

클라이언트 에이전트에 serverA의 키를 추가해야 합니다.

예를 들어:

ssh-add <(ssh serverA 'cat .ssh/id_rsa')

serverA에 키를 추가합니다 .ssh/id_rsa(위의 ksh93/bash/zsh 구문).

답변2

문제:

  1. serverB의 비밀번호를 묻는 것이 얼마나 확실합니까? serverA에게 물어볼 수도 있습니다.
  2. 프록시를 전달할 필요가 없습니다. 이 경우에는 serverB와 직접 핸드셰이킹하게 됩니다. serverB와는 serverA 핸드셰이킹이 되지 않습니다.
  3. 서버 A의 키를 클라이언트에 추가할 필요가 없습니다. 다시 말하지만, 서버 A를 통해서만 서버 B와 직접 통신하게 됩니다. 따라서 이 작업을 수행할 이유가 없으며 보안 위험도 있습니다. .
  4. 언제 ssh serverA- 비밀번호를 묻나요? 그렇다면 serverA의 Authorized_hosts에 공개 키를 설치하는 것을 고려해 보셨나요 ssh-copy-id serverA?
  5. -vvv 및 Pastebin/filebin/post 출력으로 실행

답변3

완전한 답변은 없습니다. 몇 가지 사항만 확인하면 됩니다. 두 시스템 모두에서 unix 사용자 홈 디렉토리의 권한을 확인하십시오. 두 상자 모두에서 $HOME, $HOME/.ssh 및 .ssh 아래의 모든 파일에 대한 디렉터리 권한을 확인합니다. SSH 버전을 확인하세요. 또한 두 상자의 SSH 구성 파일을 비교하십시오.

하지만 과거에도 이런 일이 여러 번 일어났습니다. 이 두 가지 때문에 발생하는 걸까요?
1. 디렉토리 권한이 올바르지 않습니다. 2. $HOME/.ssh/에 잘못된 서버 키가 있습니다.

관련 정보