기계적 인조 인간

SSH 터널링 설정 방법 (포트 포워딩)

[오픈인터뷰]'가상화 스토리지'(IP SAN)에 관한 5가지 궁금증

[오픈인터뷰]'가상화 스토리지'(IP SAN)에 관한 5가지 궁금증

차례:

Anonim

SSH 터널링 또는 SSH 포트 전달은 서비스 포트를 릴레이 할 수있는 클라이언트와 서버 시스템간에 암호화 된 SSH 연결을 작성하는 방법입니다.

SSH 전달은 VNC 또는 FTP와 같은 암호화되지 않은 프로토콜을 사용하는 서비스의 네트워크 데이터를 전송하거나 지역 제한 콘텐츠에 액세스하거나 중간 방화벽을 우회하는 데 유용합니다. 기본적으로 모든 TCP 포트를 전달하고 보안 SSH 연결을 통해 트래픽을 터널링 할 수 있습니다.

SSH 포트 전달에는 세 가지 유형이 있습니다.

  • 로컬 포트 ​​포워딩. -클라이언트 호스트에서 SSH 서버 호스트로 연결 한 다음 대상 호스트 포트로 연결을 전달합니다. -서버 호스트에서 클라이언트 호스트로 포트를 전달한 다음 대상 호스트 포트로 포트를 전달합니다. -다양한 포트에서 통신 할 수있는 SOCKS 프록시 서버를 생성합니다.

로컬, 원격 및 동적 암호화 SSH 터널을 설정하는 방법에 대해 설명합니다.

로컬 포트 ​​포워딩

로컬 포트 ​​전달을 사용하면 로컬 (ssh 클라이언트) 시스템의 포트를 원격 (ssh 서버) 시스템의 포트로 전달한 다음 대상 시스템의 포트로 전달할 수 있습니다.

이 유형의 전달에서 SSH 클라이언트는 지정된 포트에서 청취하고 해당 포트에 대한 모든 연결을 원격 SSH 서버의 지정된 포트로 터널링 한 다음 대상 시스템의 포트에 연결합니다. 대상 시스템은 원격 SSH 서버 또는 다른 시스템 일 수 있습니다.

로컬 포트 ​​전달은 주로 데이터베이스 또는 VNC 서버와 같은 내부 네트워크의 원격 서비스에 연결하는 데 사용됩니다.

Linux, macOS 및 기타 Unix 시스템에서 로컬 포트 ​​전달을 작성하려면 -L 옵션을 ssh 클라이언트에 전달하십시오.

ssh -L LOCAL_PORT:DESTINATION:DESTINATION_PORT SSH_SERVER

사용되는 옵션은 다음과 같습니다.

  • LOCAL_PORT 로컬 시스템 IP 및 포트 번호 LOCAL_IP 가 생략되면 ssh 클라이언트는 localhost에서 바인드합니다. DESTINATION:DESTINATION_PORT 대상 컴퓨터의 IP 또는 호스트 이름 및 포트입니다. SERVER_IP 원격 SSH 사용자 및 서버 IP 주소

LOCAL_PORT 1024 보다 큰 포트 번호를 사용할 수 있습니다. 1024 보다 작은 포트 번호는 권한있는 포트이며 루트 만 사용할 수 있습니다. SSH 서버가 22 이외의 포트 (기본값)에서 청취중인 경우 -p 옵션을 사용하십시오.

대상 호스트 이름은 SSH 서버에서 확인할 수 있어야합니다.

db001.host 시스템에서 액세스 할 수있는 포트 3306의 내부 (개인) 네트워크에있는 시스템 db001.host 에서 실행중인 MySQL 데이터베이스 서버가 있고 로컬 시스템 mysql 클라이언트를 사용하여 데이터베이스 서버에 연결하려고한다고 가정하십시오. 이를 위해 다음과 같이 연결을 전달할 수 있습니다.

ssh -L 3336:db001.host:3306 [email protected]

명령을 실행하면 원격 SSH 사용자 비밀번호를 입력하라는 메시지가 표시됩니다. 입력하면 원격 서버에 로그인되고 SSH 터널이 설정됩니다. SSH 키 기반 인증을 설정하고 비밀번호를 입력하지 않고 서버에 연결하는 것이 좋습니다.

이제 로컬 머신 데이터베이스 클라이언트를 127.0.0.1:3336 으로 지정하면 중간 서버 역할을하는 pub001.host 머신을 통해 연결이 db001.host:3306 MySQL 서버로 전달됩니다.

단일 ssh 명령으로 여러 포트를 여러 대상으로 전달할 수 있습니다. 예를 들어, db002.host 시스템에서 실행중인 다른 MySQL 데이터베이스 서버가 있고 실행하려는 로컬 클라이언트에서 두 서버 모두에 연결하려고합니다.

ssh -L 3336:db001.host:3306 3337:db002.host:3306 [email protected]

두 번째 서버에 연결하려면 127.0.0.1:3337 을 사용하십시오.

대상 호스트 IP 또는 호스트 이름을 지정하는 대신 대상 호스트가 SSH 서버와 동일한 경우 localhost 를 사용할 수 있습니다.

동일한 서버에서 실행되는 VNC를 통해 원격 시스템에 연결해야하며 외부에서 액세스 할 수 없습니다. 사용하는 명령은 다음과 같습니다.

ssh -L 5901:127.0.0.1:5901 -N -f [email protected]

-f 옵션은 ssh 명령이 백그라운드에서 실행되고 -N 은 원격 명령을 실행하지 않도록 지시합니다. VNC와 SSH 서버가 동일한 호스트에서 실행 중이므로 localhost 를 사용하고 있습니다.

원격 포트 포워딩

원격 포트 전달은 로컬 포트 ​​전달과 반대입니다. 원격 (ssh 서버) 시스템의 포트를 로컬 (ssh 클라이언트) 시스템의 포트로 전달한 다음 대상 시스템의 포트로 전달할 수 있습니다.

이 유형의 전달에서 SSH 서버는 지정된 포트에서 청취하고 해당 포트에 대한 모든 연결을 로컬 SSH 클라이언트의 지정된 포트로 터널링 한 다음 대상 시스템의 포트에 연결합니다. 대상 시스템은 로컬 또는 다른 시스템 일 수 있습니다.

Linux, macOS 및 기타 Unix 시스템에서 원격 포트 전달을 작성하려면 -R 옵션을 ssh 클라이언트에 전달하십시오.

ssh -R REMOTE_PORT:DESTINATION:DESTINATION_PORT SSH_SERVER

사용되는 옵션은 다음과 같습니다.

  • REMOTE_PORT 원격 SSH 서버의 IP 및 포트 번호 빈 REMOTE 는 원격 SSH 서버가 모든 인터페이스에서 바인딩됨을 의미합니다. DESTINATION:DESTINATION_PORT 대상 컴퓨터의 IP 또는 호스트 이름 및 포트입니다. SERVER_IP 원격 SSH 사용자 및 서버 IP 주소

로컬 포트 ​​전달은 주로 외부에서 누군가에게 내부 서비스에 대한 액세스를 제공하는 데 사용됩니다.

로컬 컴퓨터에서 웹 응용 프로그램을 개발 중이며 동료 개발자에게 미리보기를 표시하려고한다고 가정 해 봅시다. 공용 IP가 없으므로 다른 개발자가 인터넷을 통해 응용 프로그램에 액세스 할 수 없습니다.

ssh -L 8080:127.0.0.1:3000 -N -f [email protected]

위의 명령은 ssh 서버가 포트 8080 을 수신하고이 포트에서 포트 3000 의 로컬 시스템으로 모든 트래픽을 터널링하도록합니다.

이제 동료 개발자는 자신의 브라우저에서 the_ssh_server_ip:8080 을 입력하고 멋진 응용 프로그램을 미리 볼 수 있습니다.

동적 포트 포워딩

동적 포트 전달을 사용하면 SOCKS 프록시 서버 역할을하는 로컬 (ssh 클라이언트) 시스템에 소켓을 작성할 수 있습니다. 클라이언트가이 포트에 연결하면 연결이 원격 (ssh 서버) 시스템으로 전달 된 다음 대상 시스템의 동적 포트로 전달됩니다.

이렇게하면 SOCKS 프록시를 사용하는 모든 응용 프로그램이 SSH 서버에 연결되고 서버는 모든 트래픽을 실제 대상으로 전달합니다.

Linux, macOS 및 기타 Unix 시스템에서 SOCKS (동적 포트 전달)를 작성하려면 -D 옵션을 ssh 클라이언트에 전달하십시오.

ssh -D LOCAL_PORT SSH_SERVER

사용되는 옵션은 다음과 같습니다.

  • LOCAL_PORT 로컬 시스템 IP 및 포트 번호 LOCAL_IP 가 생략되면 ssh 클라이언트는 localhost에서 바인드합니다. SERVER_IP 원격 SSH 사용자 및 서버 IP 주소

동적 포트 전달의 전형적인 예는 SSH 서버를 통해 웹 브라우저 트래픽을 터널링하는 것입니다.

다음 명령은 포트 9090 에 SOCKS 터널을 만듭니다.

ssh -D 9090 -N -f [email protected]

터널링이 설정되면이를 사용하도록 응용 프로그램을 구성 할 수 있습니다. 이 문서에서는 SOCKS 프록시를 사용하도록 Firefox 및 Google Chrome 브라우저를 구성하는 방법에 대해 설명합니다.

트래픽을 터널링하려는 각 응용 프로그램에 대해 포트 전달을 별도로 구성해야합니다.

Windows에서 SSH 터널링 설정

Windows 사용자는 PuTTY SSH 클라이언트를 사용하여 SSH 터널을 작성할 수 있습니다. 여기에서 PuTTY를 다운로드 할 수 있습니다.

  1. 퍼티를 시작하고 Host name (or IP address) 필드에 SSH 서버 IP 주소를 입력하십시오.

    사용자 이름과 비밀번호를 묻는 새로운 창이 나타납니다. 사용자 이름과 비밀번호를 입력하면 서버에 로그인되고 SSH 터널이 시작됩니다.

    공개 키 인증을 설정하면 비밀번호를 입력하지 않고도 서버에 연결할 수 있습니다.

결론

SSH 터널을 설정하고 보안 SSH 연결을 통해 트래픽을 전달하는 방법을 설명했습니다. 사용하기 쉽도록 SSH 구성 파일에서 SSH 터널을 정의하거나 SSH 터널을 설정할 Bash 별명을 작성할 수 있습니다.

ssh 보안