17.2. 원격 연결 및 연결 해제
원격 컨테이너에 연결하는 방법은 다음 두 가지가 있습니다. Red Hat Fuse 명령 쉘을 이미 실행 중인 경우 console 명령을 호출하여 원격 컨테이너에 연결할 수 있습니다. 또는 명령줄에서 직접 유틸리티를 실행하여 원격 컨테이너에 연결할 수도 있습니다.
17.2.1. 원격 컨테이너에서 독립 실행형 컨테이너에 연결
17.2.1.1. 개요
컨테이너의 모든 명령 콘솔을 사용하여 원격 컨테이너에 액세스할 수 있습니다. SSH를 사용하여 로컬 컨테이너의 콘솔은 원격 컨테이너에 연결되고 원격 컨테이너의 명령 콘솔로 작동합니다.
17.2.1.2. ssh:ssh console 명령 사용
ssh:ssh
console 명령을 사용하여 원격 컨테이너의 콘솔에 연결합니다.
ssh:ssh 명령 구문
ssh:ssh -l username -P password -p port hostname
-l
-
원격 컨테이너 연결에 사용되는 사용자 이름입니다.
관리자
권한이 있는 유효한 JAAS 로그인 자격 증명을 사용합니다. -P
- 원격 컨테이너 연결에 사용되는 암호입니다.
-p
-
원하는 컨테이너의 원격 콘솔에 액세스하는 데 사용되는 SSH 포트입니다. 기본적으로 이 값은
8101
입니다. 포트 번호 변경에 대한 자세한 내용은 17.1.2절. “원격 액세스를 위한 독립 실행형 컨테이너 구성” 을 참조하십시오. hostname
- 원격 컨테이너가 실행 중인 시스템의 호스트 이름입니다. 호스트 이름 변경에 대한 자세한 내용은 17.1.2절. “원격 액세스를 위한 독립 실행형 컨테이너 구성” 을 참조하십시오.
etc/users.properties
파일에서 사용자 이름과 암호를 사용자 지정하는 것이 좋습니다.
원격 컨테이너가 Oracle VM Server for Cryostat 인스턴스에 배포된 경우 기본 SSH 포트 값 8101
이 이미 Logical Domains Manager 데몬에 의해 사용되고 있을 가능성이 높습니다. 이 경우 17.1.2절. “원격 액세스를 위한 독립 실행형 컨테이너 구성” 에 설명된 대로 컨테이너의 SSH 포트를 재구성해야 합니다.
올바른 컨테이너에 연결되어 있는지 확인하려면 Karaf 콘솔 프롬프트에 shell:info
를 입력하여 현재 연결된 인스턴스에 대한 정보를 반환합니다.
17.2.1.3. 원격 콘솔에서 연결 해제
원격 콘솔에서 연결을 끊으려면 logout
을 입력하거나 프롬프트에서 Ctrl+D 누릅니다.
원격 컨테이너의 연결이 끊어지고 콘솔은 다시 로컬 컨테이너를 관리합니다.
17.2.2. 클라이언트 명령줄 유틸리티를 사용하여 컨테이너에 연결
17.2.2.1. 원격 클라이언트 사용
원격 클라이언트를 사용하면 전체 Fuse 컨테이너를 로컬로 시작하지 않고도 원격 Red Hat Fuse 컨테이너에 안전하게 연결할 수 있습니다.
예를 들어 동일한 머신의 서버 모드에서 실행되는 Fuse 인스턴스에 빠르게 연결하려면 명령 프롬프트를 열고 다음과 같이 클라이언트[.CAST]
스크립트( InstallDir/bin
디렉터리에 있는) 스크립트를 실행합니다.
client
일반적으로 원격 인스턴스에 연결할 호스트 이름, 포트, 사용자 이름 및 암호를 제공합니다. 더 큰 스크립트 내에서 클라이언트를 사용하는 경우(예: 테스트 모음) 다음과 같이 console 명령을 추가할 수 있습니다.
client -a 8101 -h hostname -u username -p password shell:info
또는 -p
옵션을 생략하면 암호를 입력하라는 메시지가 표시됩니다.
독립 실행형 컨테이너의 경우 관리자
권한이 있는 유효한 JAAS 사용자 자격 증명을 사용합니다.
클라이언트에 사용 가능한 옵션을 표시하려면 다음을 입력합니다.
client --help
Karaf 클라이언트 도움말
Apache Felix Karaf client -a [port] specify the port to connect to -h [host] specify the host to connect to -u [user] specify the user name -p [password] specify the password --help shows this help message -v raise verbosity -r [attempts] retry connection establishment (up to attempts times) -d [delay] intra-retry delay (defaults to 2 seconds) [commands] commands to run If no commands are specified, the client will be put in an interactive mode
17.2.2.2. 원격 클라이언트 기본 인증 정보
자격 증명을 제공하지 않고 bin/client
를 사용하여 Karaf 컨테이너에 로그인할 수 있다는 것을 알게 되어 반가운 경우가 있을 수 있습니다. 이는 원격 클라이언트 프로그램이 기본 자격 증명을 사용하도록 미리 구성되어 있기 때문입니다. 인증 정보를 지정하지 않으면 원격 클라이언트는 다음과 같은 기본 인증 정보(순위)를 자동으로 사용하려고 합니다.
-
기본 SSH 키 Cryostat- Cryostattries를 사용하여 기본 Apache Karaf SSH 키를 사용하여 로그인합니다. 이 로그인이 성공할 수 있도록 허용하는 해당 구성 항목은
etc/keys.properties
파일에서 기본적으로 주석 처리됩니다. -
기본 사용자 이름/암호 자격 증명 모음 - 사용자 이름 및 암호의
admin
/admin
조합을 사용하여 로그인할 수 있습니다. 이 로그인이 성공할 수 있도록 허용하는 해당 구성 항목은etc/users.properties
파일에서 기본적으로 주석 처리됩니다.
따라서 users.properties
의 기본 admin
/admin
자격 증명의 주석을 제거하여 Karaf 컨테이너에 새 사용자를 생성하면 bin/client
유틸리티에서 인증 정보를 제공하지 않고 로그인할 수 있습니다.
보안을 위해 Karaf 컨테이너를 처음 설치할 때 Fuse에서 기본 인증 정보를 사용하지 않도록 설정했습니다. 그러나 기본 암호 또는 SSH 공개 키를 변경 하지 않고 이러한 기본 인증 정보의 주석을 간단히 제거하는 경우 Karaf 컨테이너에 보안 허점이 열립니다. 프로덕션 환경에서는 절대 이 작업을 수행하지 않아야 합니다. 인증 정보를 제공하지 않고 bin/client
를 사용하여 컨테이너에 로그인할 수 있는 경우 컨테이너가 안전하지 않으며 프로덕션 환경에서 이를 해결하기 위한 단계를 수행해야 합니다.
17.2.2.3. 원격 클라이언트 콘솔에서 연결 해제
원격 클라이언트를 사용하여 원격 콘솔을 열 때 명령을 전달하는 대신 명령을 전달하는 데 사용하는 경우 연결을 해제해야 합니다. 원격 클라이언트의 콘솔에서 연결을 끊으려면 logout
을 입력하거나 프롬프트에서 Ctrl-D 를 누릅니다.
클라이언트가 연결을 해제하고 종료합니다.
17.2.3. SSH 명령줄 유틸리티를 사용하여 컨테이너에 연결
17.2.3.1. 개요
ssh
명령줄 유틸리티(UNIX와 같은 운영 체제의 표준 유틸리티)를 사용하여 인증 메커니즘이 공개 키 암호화를 기반으로 하는 Red Hat Fuse 컨테이너에 로그인할 수도 있습니다(공개 키를 먼저 컨테이너에 설치해야 함). 예를 들어 컨테이너가 TCP 포트 8101에서 수신 대기하도록 구성된 경우 다음과 같이 로그인할 수 있습니다.
ssh -p 8101 jdoe@localhost
키 기반 로그인은 현재 Fabric 컨테이너가 아닌 독립 실행형 컨테이너에서만 지원됩니다.
17.2.3.2. 사전 요구 사항
키 기반 SSH 로그인을 사용하려면 다음 사전 요구 사항을 충족해야 합니다.
-
컨테이너는
PublickeyLoginModule
이 설치된 독립 실행형(Fabric은 지원되지 않음)이어야 합니다. - SSH 키 쌍이 생성되어 있어야 합니다( 17.2.3.4절. “새 SSH 키 쌍 생성”참조).
- SSH 키 쌍의 공개 키를 컨테이너에 설치해야 합니다( 17.2.3.5절. “컨테이너에 SSH 공개 키 설치”참조).
17.2.3.3. 기본 키 위치
ssh
명령은 기본 키 위치에서 개인 키를 자동으로 찾습니다. 위치를 명시적으로 지정하는 데 문제가 저장되므로 기본 위치에 키를 설치하는 것이 좋습니다.
*NIX 운영 체제에서는 RSA 키 쌍의 기본 위치는 다음과 같습니다.
~/.ssh/id_rsa ~/.ssh/id_rsa.pub
Windows 운영 체제에서 RSA 키 쌍의 기본 위치는 다음과 같습니다.
C:\Documents and Settings\Username\.ssh\id_rsa C:\Documents and Settings\Username\.ssh\id_rsa.pub
Red Hat Fuse는 RSA 키만 지원합니다. DSA 키가 작동하지 않습니다.
17.2.3.4. 새 SSH 키 쌍 생성
ssh-keygen
유틸리티를 사용하여 RSA 키 쌍을 생성합니다. 새 명령 프롬프트를 열고 다음 명령을 입력합니다.
ssh-keygen -t rsa -b 2048
앞의 명령은 키 길이가 2048비트인 RSA 키를 생성합니다. 그러면 키 쌍의 파일 이름을 지정하라는 메시지가 표시됩니다.
Generating public/private rsa key pair. Enter file in which to save the key (/Users/Username/.ssh/id_rsa):
return을 입력하여 기본 위치에 키 쌍을 저장합니다. 그런 다음 전달 문구를 입력하라는 메시지가 표시됩니다.
Enter passphrase (empty for no passphrase):
선택적으로 여기에 통과 문구를 입력하거나 반환을 두 번 입력하여 패스 문구를 선택하지 않을 수 있습니다.
Fabric console 명령을 실행하는 데 동일한 키 쌍을 사용하려면 Fabric에서 암호화된 개인 키 사용을 지원하지 않으므로 전달 문구 를 선택하는 것이 좋습니다.
17.2.3.5. 컨테이너에 SSH 공개 키 설치
SSH 키 쌍을 사용하여 Red Hat JBoss Fuse 컨테이너에 로그인하려면 INSTALL_DIR/etc/keys.properties
파일에 새 사용자 항목을 생성하여 컨테이너에 SSH 공개 키를 설치해야 합니다. 이 파일의 각 사용자 항목은 다음 형식으로 한 줄에 표시됩니다.
Username=PublicKey,Role1,Role2,...
예를 들어 공개 키 파일 ~/.ssh/id_rsa.pub
에게 다음과 같은 내용이 있습니다.
ssh-rsa AAAAB3NzaC1kc3MAAACBAP1/U4EddRIpUt9KnC7s5Of2EbdSPO9EAMMeP4C2USZpRV1AIlH7WT2NWPq/xfW6MPbLm1Vs14E7 gB00b/JmYLdrmVClpJ+f6AR7ECLCT7up1/63xhv4O1fnfqimFQ8E+4P208UewwI1VBNaFpEy9nXzrith1yrv8iIDGZ3RSAHHAAAAFQCX YFCPFSMLzLKSuYKi64QL8Fgc9QAAAnEA9+GghdabPd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFnEj6Ewo FhO3zwkyjMim4TwWeotifI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhRkImog9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSoAAACB AKKSU2PFl/qOLxIwmBZPPIcJshVe7bVUpFvyl3BbJDow8rXfskl8wO63OzP/qLmcJM0+JbcRU/53Jj7uyk31drV2qxhIOsLDC9dGCWj4 7Y7TyhPdXh/0dthTRBy6bqGtRPxGa7gJov1xm/UuYYXPIUR/3x9MAZvZ5xvE0kYXO+rx jdoe@doemachine.local
InstallDir/etc/keys.properties
파일에 다음 항목을 추가하여 admin
역할로 jdoe
사용자를 생성할 수 있습니다(한 줄에 있음).
jdoe=AAAAB3NzaC1kc3MAAACBAP1/U4EddRIpUt9KnC7s5Of2EbdSPO9EAMMeP4C2USZpRV1AIlH7WT2NWPq/xfW6MPbLm1Vs14E7 gB00b/JmYLdrmVClpJ+f6AR7ECLCT7up1/63xhv4O1fnfqimFQ8E+4P208UewwI1VBNaFpEy9nXzrith1yrv8iIDGZ3RSAHHAAAAFQCX YFCPFSMLzLKSuYKi64QL8Fgc9QAAAnEA9+GghdabPd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFnEj6Ewo FhO3zwkyjMim4TwWeotifI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhRkImog9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSoAAACB AKKSU2PFl/qOLxIwmBZPPIcJshVe7bVUpFvyl3BbJDow8rXfskl8wO63OzP/qLmcJM0+JbcRU/53Jj7uyk31drV2qxhIOsLDC9dGCWj4 7Y7TyhPdXh/0dthTRBy6bqGtRPxGa7gJov1xm/UuYYXPIUR/3x9MAZvZ5xvE0kYXO+rx,admin
id_rsa.pub
파일의 전체 내용을 여기에 삽입하지 마십시오. 공개 키 자체를 나타내는 기호 블록을 삽입합니다.
17.2.3.6. 공개 키 인증이 지원되는지 확인
컨테이너를 시작한 후 다음과 같이 jaas:realms
console 명령을 실행하여 공개 키 인증이 지원되는지 확인할 수 있습니다.
karaf@root()> jaas:realms Index │ Realm Name │ Login Module Class Name ──────┼────────────┼─────────────────────────────────────────────────────- 1 │ karaf │ org.apache.karaf.jaas.modules.properties.PropertiesLoginModule 2 │ karaf │ org.apache.karaf.jaas.modules.publickey.PublickeyLoginModule 3 │ karaf │ org.apache.karaf.jaas.modules.audit.FileAuditLoginModule 4 │ karaf │ org.apache.karaf.jaas.modules.audit.LogAuditLoginModule 5 │ karaf │ org.apache.karaf.jaas.modules.audit.EventAdminAuditLoginModule karaf@root()>
PublickeyLoginModule
이 설치되어 있는지 확인해야 합니다. 이 구성을 사용하면 사용자 이름/암호 자격 증명 또는 공개 키 자격 증명을 사용하여 컨테이너에 로그인할 수 있습니다.
17.2.3.7. etc/keys.properties에 ssh 역할 추가
etc/keys.properties
에 정의된 관리자 그룹에
는 다음 예와 같이 ssh
역할이 포함되어야 합니다.
# # For security reason, the default auto-signed key is disabled. # The user guide describes how to generate/update the key. # #karaf=AAAAB3NzaC1kc3MAAACBAP1/U4EddRIpUt9KnC7s5Of2EbdSPO9EAMMeP4C2USZpRV1AIlH7WT2NWPq/xfW6MPbLm1Vs14E7gB00b/JmYLdrmVClpJ+f6AR7ECLCT7up1/63xhv4O1fnxqimFQ8E+4P208UewwI1VBNaFpEy9nXzrith1yrv8iIDGZ3RSAHHAAAAFQCXYFCPFSMLzLKSuYKi64QL8Fgc9QAAAIEA9+GghdabPd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFnEj6EwoFhO3zwkyjMim4TwWeotUfI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhRkImog9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSoAAACBAKKSU2PFl/qOLxIwmBZPPIcJshVe7bVUpFvyl3BbJDow8rXfskl8wO63OzP/qLmcJM0+JbcRU/53JjTuyk31drV2qxhIOsLDC9dGCWj47Y7TyhPdXh/0dthTRBy6bqGtRPxGa7gJov1xm/UuYYXPIUR/3x9MAZvZ5xvE0kYXO+rx,_g_:admingroup _g_\:admingroup = group,admin,manager,viewer,systembundles,ssh
ssh
역할이 admingroup
정의에 포함되지 않은 경우 etc/keys.properties
를 편집하고 ssh
역할을 추가해야 합니다.
17.2.3.8. 키 기반 SSH를 사용하여 로그인
이제 키 기반 SSH 유틸리티를 사용하여 컨테이너에 로그인할 준비가 되었습니다. 예를 들면 다음과 같습니다.
$ ssh -p 8101 jdoe@localhost ____ _ _ _ _ _____ | _ \ ___ __| | | | | | __ _| |_ | ___| _ ___ ___ | |_) / _ \/ _` | | |_| |/ _` | __| | |_ | | | / __|/ _ \ | _ < __/ (_| | | _ | (_| | |_ | _|| |_| \__ \ __/ |_| \_\___|\__,_| |_| |_|\__,_|\__| |_| \__,_|___/___| Fuse (7.x.x.fuse-xxxxxx-redhat-xxxxx) http://www.redhat.com/products/jbossenterprisemiddleware/fuse/ Hit '<tab>' for a list of available commands and '[cmd] --help' for help on a specific command. Open a browser to http://localhost:8181/hawtio to access the management console Hit '<ctrl-d>' or 'shutdown' to shutdown Red Hat Fuse. karaf@root()>
암호화된 개인 키를 사용하는 경우 ssh
유틸리티에서 패스 문구를 입력하라는 메시지를 표시합니다.