Azure App Service의 컨테이너에 대한 SSH 세션 열기
SSH(Secure Shell) 를 사용하여 컨테이너에 원격으로 관리 명령을 실행할 수 있습니다. App Service는 Windows 사용자 지정 컨테이너에 호스트되는 앱에 직접 SSH 지원을 제공합니다.
Windows 사용자 지정 컨테이너는 브라우저 SSH 세션이 작동하기 위한 특별한 설정이 필요하지 않습니다. Azure CLI를 통한 SSH 세션은 지원되지 않습니다.
SSH(Secure Shell) 를 사용하여 컨테이너에 원격으로 관리 명령을 실행할 수 있습니다. App Service는 Linux 컨테이너(기본 제공 또는 사용자 지정)에서 호스트되는 앱에 직접 SSH 지원을 제공합니다.
기본 제공 Linux 컨테이너에는 SSH 세션을 사용하도록 설정하는 데 필요한 구성이 이미 있습니다. Linux 사용자 지정 컨테이너는 SSH 세션을 사용하도록 설정하기 위해 추가 구성이 필요합니다. SSH 사용을 참조하세요.
SSH 및 SFTP를 사용하여 로컬 개발 컴퓨터에서 직접 컨테이너에 연결할 수도 있습니다.
브라우저에서 SSH 세션 열기
컨테이너와 직접 SSH 세션을 열려면 앱을 실행해야 합니다.
브라우저에 다음 URL을 붙여넣고 <app-name>
을 앱 이름으로 바꿉니다.
https://<app-name>.scm.azurewebsites.net/webssh/host
아직 인증을 받지 못한 경우 연결하기 위해서는 Azure 구독에서 인증을 받아야 합니다. 인증되면 컨테이너 내부에서 명령을 실행할 수 있는 브라우저 내부 셸을 확인합니다.
Azure CLI를 사용하여 SSH 세션 열기
TCP 터널링을 사용하면 인증된 WebSocket 연결을 통해 개발 머신과 Linux 컨테이너 간에 네트워크 연결을 만들 수 있습니다. 선택한 클라이언트의 App Service에서 실행 중인 컨테이너를 사용하여 SSH 세션을 열 수 있습니다.
시작하려면 Azure CLI를 설치해야 합니다. Azure CLI를 설치하지 않고 작동 방식을 확인하려면 Azure Cloud Shell을 엽니다.
az webapp create-remote-connection 명령을 사용하여 앱에 원격 연결을 엽니다. 앱에 <구독 이름>, <그룹 이름> 및 <앱 이름>을 지정합니다.
az webapp create-remote-connection --subscription <subscription-id> --resource-group <resource-group-name> -n <app-name> &
팁
명령의 끝에 &
은 Cloud Shell을 사용하는 경우 단지 편의를 위해 제공됩니다. 동일한 셸에서 다음 명령을 실행할 수 있도록 백그라운드에서 프로세스를 실행합니다.
참고 항목
이 명령이 실패할 경우 다음 명령으로 원격 디버깅을 ‘사용하지 않도록 설정’해야 합니다.
az webapp config set --resource-group <resource-group-name> -n <app-name> --remote-debugging-enabled=false
명령 출력은 SSH 세션을 여는 데 필요한 정보를 제공합니다.
Verifying if app is running....
App is running. Trying to establish tunnel connection...
Opening tunnel on addr: 127.0.0.1
Opening tunnel on port: <port-output>
SSH is available { username: root, password: Docker! }
Ctrl + C to close
출력(<port-output>
)에 제공된 로컬 포트를 사용하여 선택한 클라이언트를 사용하여 컨테이너로 SSH 세션을 엽니다. 예를 들어 Linux ssh 명령을 사용하면 다음과 같은 java -version
단일 명령을 실행할 수 있습니다.
ssh root@127.0.0.1 -m hmac-sha1 -p <port-output> java -version
또는 전체 SSH 세션을 입력하려면 다음을 실행합니다.
ssh root@127.0.0.1 -m hmac-sha1 -p <port-output>
메시지가 표시되면 yes
을 입력하여 연결을 계속합니다. 그러면 암호를 입력하라는 메시지가 나타납니다. 앞부분에 표시된 Docker!
을 사용합니다.
Warning: Permanently added '[127.0.0.1]:21382' (ECDSA) to the list of known hosts. root@127.0.0.1's password:
인증되면 세션 시작 화면이 표시되어야 합니다.
_____ / _ \ __________ _________ ____ / /_\ \___ / | \_ __ \_/ __ \ / | \/ /| | /| | \/\ ___/ \____|__ /_____ \____/ |__| \___ > \/ \/ \/ A P P S E R V I C E O N L I N U X 0e690efa93e2:~#
이제 커넥터에 연결되어 있습니다.
top 명령을 다시 실행합니다. 프로세스 목록에서 앱의 프로세스를 확인할 수 있어야 합니다. 아래 예제 출력에서는 PID 263
이 있는 출력입니다.
Mem: 1578756K used, 127032K free, 8744K shrd, 201592K buff, 341348K cached CPU: 3% usr 3% sys 0% nic 92% idle 0% io 0% irq 0% sirq Load average: 0.07 0.04 0.08 4/765 45738 PID PPID USER STAT VSZ %VSZ CPU %CPU COMMAND 1 0 root S 1528 0% 0 0% /sbin/init 235 1 root S 632m 38% 0 0% PM2 v2.10.3: God Daemon (/root/.pm2) 263 235 root S 630m 38% 0 0% node /home/site/wwwroot/app.js 482 291 root S 7368 0% 0 0% sshd: root@pts/0 45513 291 root S 7356 0% 0 0% sshd: root@pts/1 291 1 root S 7324 0% 0 0% /usr/sbin/sshd 490 482 root S 1540 0% 0 0% -ash 45539 45513 root S 1540 0% 0 0% -ash 45678 45539 root R 1536 0% 0 0% top 45733 1 root Z 0 0% 0 0% [init] 45734 1 root Z 0 0% 0 0% [init] 45735 1 root Z 0 0% 0 0% [init] 45736 1 root Z 0 0% 0 0% [init] 45737 1 root Z 0 0% 0 0% [init] 45738 1 root Z 0 0% 0 0% [init]
다음 단계
Azure 포럼에 질문 및 문제를 게시할 수 있습니다.
컨테이너용 웹앱에 대한 자세한 내용은 다음을 참조하세요.