![localhost를 통한 SSH 연결 매핑](https://rvso.com/image/1609684/localhost%EB%A5%BC%20%ED%86%B5%ED%95%9C%20SSH%20%EC%97%B0%EA%B2%B0%20%EB%A7%A4%ED%95%91.png)
내가 하려는 일이 가능한지 잘 모르겠지만 포트 전달을 사용하여 localhost를 통해 SSH 연결을 시도하고 있습니다.
제가 그렇게 하고 싶은 이유는 인스턴스가 초기화될 때마다 다른 IP 주소를 얻는 클라우드 제공자 구성이 있기 때문입니다. 즉, 실행할 때마다 개발 환경에서 몇 가지 설정을 변경해야 한다는 의미입니다. 정적 로컬 호스트 설정을 통해 어떻게든 안내할 수 있는지 궁금합니다. 조금 덜 지루하게 만들 수 있습니다.
따라서 현재 다음과 같이 연결할 수 있으며 다음과 같이 포트 전달을 추가했습니다.
ssh [email protected] -L2222:localhost:2222
내 희망은 다음과 같은 일을 할 수 있다는 것이었습니다.
ssh luca@localhost -p 2222
하지만 오류가 발생합니다.
ssh_exchange_identification: read: Connection reset by peer
놀랐습니다. 연결 거부나 시간 초과 등이 아니므로 이것이 설정 문제인지 궁금합니다.
답변1
인스턴스가 초기화될 때마다 다른 IP 주소를 얻는 클라우드 공급자의 일부 구성이 있는데, 이는 실행할 때마다 개발 환경에서 몇 가지 설정을 변경해야 함을 의미합니다. 정적 로컬 호스트 설정을 통해 어떻게든 안내할 수 있는지 궁금합니다. 조금 덜 지루하게 만들 수 있습니다.
이 문제를 해결하는 일반적인 방법은 DNS입니다. TTL이 매우 낮은 하위 도메인을 생성하고 다시 생성될 때마다 새 인스턴스를 가리키도록 A/AAAA 레코드를 업데이트합니다. 일부 클라우드 제공업체는 이를 자동화할 수도 있습니다.
(글로벌 DNS가 작동하지 않으면 /etc/hosts도 작동합니다.)
따라서 현재 다음과 같이 연결할 수 있으며 다음과 같이 포트 전달을 추가했습니다.
ssh [email protected] -L2222:localhost:2222
원격 서버는 포트 2222에서 SSH 연결을 수신하도록 구성되지 않았을 수 있습니다. 이는 표준 포트 22에 대해서만 구성되어 있습니다. 따라서 원하는 전달 옵션은 다음과 같습니다.
-L 2222:localhost:22
다음은 2222
컴퓨터에서 열리는 포트이며, localhost:22
서버가 연결을 시도하는 최종 목적지입니다.
놀랐습니다. 연결 거부나 시간 초과 등이 아니므로 이것이 설정 문제인지 궁금합니다.
SSH -L
전달은 라우터의 포트 전달처럼 패킷 수준에서 작동하지 않습니다. TCP 수준(클라이언트)에서 작동합니다.그 자체연결을 수신하고 연결을 수신할 때마다 서버에 최종 대상에 연결하도록 요청합니다.
따라서 3개의 체인 연결이 있습니다: 클라이언트 #2 → 클라이언트 #1 → 서버 → 대상.
이는 서버가 연결에 실패할 경우 클라이언트 #1(전달 수행)이 실제로 로컬 연결이 끊어졌기 때문에 클라이언트 #2에 대해 "연결 거부" 오류를 생성할 수 없음을 의미합니다.수락됨이미. 할 수 있는 유일한 일은 데이터를 전송하지 않고 기존 연결을 닫는 것입니다. 따라서 "피어에 의한 연결 재설정"입니다.