서버가 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의 키에 대한 액세스를 제공하지 않습니다.nc
serverA
클라이언트 에이전트에 serverA의 키를 추가해야 합니다.
예를 들어:
ssh-add <(ssh serverA 'cat .ssh/id_rsa')
serverA에 키를 추가합니다 .ssh/id_rsa
(위의 ksh93/bash/zsh 구문).
답변2
문제:
- serverB의 비밀번호를 묻는 것이 얼마나 확실합니까? serverA에게 물어볼 수도 있습니다.
- 프록시를 전달할 필요가 없습니다. 이 경우에는 serverB와 직접 핸드셰이킹하게 됩니다. serverB와는 serverA 핸드셰이킹이 되지 않습니다.
- 서버 A의 키를 클라이언트에 추가할 필요가 없습니다. 다시 말하지만, 서버 A를 통해서만 서버 B와 직접 통신하게 됩니다. 따라서 이 작업을 수행할 이유가 없으며 보안 위험도 있습니다. .
- 언제
ssh serverA
- 비밀번호를 묻나요? 그렇다면 serverA의 Authorized_hosts에 공개 키를 설치하는 것을 고려해 보셨나요ssh-copy-id serverA
? - -vvv 및 Pastebin/filebin/post 출력으로 실행
답변3
완전한 답변은 없습니다. 몇 가지 사항만 확인하면 됩니다. 두 시스템 모두에서 unix 사용자 홈 디렉토리의 권한을 확인하십시오. 두 상자 모두에서 $HOME, $HOME/.ssh 및 .ssh 아래의 모든 파일에 대한 디렉터리 권한을 확인합니다. SSH 버전을 확인하세요. 또한 두 상자의 SSH 구성 파일을 비교하십시오.
하지만 과거에도 이런 일이 여러 번 일어났습니다. 이 두 가지 때문에 발생하는 걸까요?
1. 디렉토리 권한이 올바르지 않습니다. 2. $HOME/.ssh/에 잘못된 서버 키가 있습니다.