다음을 사용하여 역방향 SSH 터널을 설정했습니다.
ssh -R 22100:127.0.0.1:22 remoteuser@remotehost
기계 1에서. 기기는 키를 사용하여 리모컨으로 인증합니다.
원격 호스트는 다음 sshd_config 옵션을 사용합니다.
...
PubkeyAuthentification yes
PasswordAuthentification no
...
이는 원격 서버에서 키를 인식하는 세 번째 시스템에서는 제대로 작동합니다. 즉, 터널이 처음 설정된 머신 1에 대한 올바른 로그인을 사용합니다 ssh remoteuser@remotehost -p 22100
.
그러나 원격 서버에서 인식되는 키가 없는 네 번째 컴퓨터에서 로그인하려고 하면 여전히 비밀번호를 묻는 메시지가 나타납니다. 즉, 네 번째 머신에서는 다음과 같습니다:
ssh remoteuser@remotehost
# returns Permission denied (publickey)
ssh remoteuser@remotehost -p 22100
# is asking for password for remoteuser@remotehost
역방향 터널 포트에 연결하려고 할 때 비밀번호 옵션이 나타나는 이유는 무엇입니까? 그래도 비밀번호가 작동하지 않는 것 같습니다. 키가 인식되지 않는 경우 비밀번호를 묻는 기능도 비활성화하려면 어떻게 해야 합니까?
답변1
터널이 설정되면 "remotehost"의 포트 22100에 대한 모든 연결은 "머신 1"의 포트 22에 대한 연결이 됩니다. 특히 이 포트가 ssh remoteuser@remotehost -p 22100
"네 번째 머신"에서 실행 중인 경우 더욱 그렇습니다. 따라서 중요한 매개변수는 "머신 1"의 포트 22에서 실행되는 sshd의 매개변수입니다.
OP에는 시스템이 원격 user@remotehost의 비밀번호를 요청한다고 명시되어 있지만 이는 요청된 연결이 요청하는 내용을 반영합니다. SSH 프로그램은 포트 22100이 전달되고 있다는 것을 모릅니다. 그러나 확인 중인 호스트 키는 "원격 시스템"이 아닌 "시스템 1"의 호스트 키입니다. 알려진 호스트 데이터베이스(보통 ~/.ssh/known_hosts)는 포트 및 호스트와 함께 키를 저장하므로 이 모든 것이 작동합니다.