다음과 유사한 스택 추적이 표시되는 예외와 함께 SFTP 커넥터가 포함된 Mule 응용 프로그램이 실패합니다.
org.mule.runtime.api.connection.ConnectionException: 호스트와 SFTP 연결을 설정할 수 없음: 포트에서 'yourHost': 'yourPort' - 알고리즘 협상 실패원인: com.jcraft.jsch.JSchException: 알고리즘 협상 실패com.jcraft.jsch.Session.receive_kexinit(Session.java:590)com.jcraft.jsch.Session.connect(Session.java:320)com.jcraft.jsch.Session.connect(Session.java:183)org.mule.extension.sftp.internal.connection.SftpClient.connect(SftpClient.java:179)org.mule.extension.sftp.internal.connection.SftpClient.login(SftpClient.java:161)org.mule.extension.sftp.internal.connection.SftpConnectionProvider.connect(SftpConnectionProvider.java:139)org.mule.extension.sftp.internal.connection.SftpConnectionProvider.connect(SftpConnectionProvider.java:59)
SFTP를 통해 클라이언트와 서버 간에 보안 연결을 시도하면 두 가지 머리글에 키 교환 알고리즘, 암호화된 알고리즘, 메시지 인증 코드(MAC), 압축 알고리즘의 목록이 나타납니다. 각 해당 알고리즘은 가장 안전한 항목에서 가장 안전하지 않은 항목의 순서대로 정렬됩니다. 알고리즘을 사용하여 SSH 연결을 진행하는 최상의 옵션을 협상합니다. 이 협상 동안 사용할 알고리즘 구현에 대한 협약이 없으면 "알고리즘 협상 실패" 메시지가 수신됩니다.
SSH RFC4253 섹션 7.1에서 이 SSH 알고리즘 협상에 대한 자세한 내용을 확인할 수 있습니다.
SFTP 디버그 로그를 활성화하여 Mule 응용 프로그램에서 협상 정보를 확인할 수 있습니다.
패키지를 설정하여 DEBUG 로그를 활성화하는 Mule 4.x의 경우 "FTP 및 SFTP 및 FTPS 모듈에 장황한 로깅을 활성화하는 방법"으로 충분하며, Mule 3.x에서는 JSCH에서 DEBUG 로그를 검색하기 위해 추가 수정 사항이 필요하며, 이 경우 MuleSoft 지원 팀에 문의해야 합니다.
이 협상을 보여주는 SFTP DEBUG 로그의 예는 아래에서 확인할 수 있습니다.
DEBUG 2021-03-17 19:57:23,944 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] org.mule.extension.sftp.internal.connection.SftpConnectionProvider: 호스트에 연결: 포트에서 'myHost': 'myPort'DEBUG 2021-03-17 19:57:23,945 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: myHost 포트 myPort에 연결DEBUG 2021-03-17 19:57:23,971 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: 연결 설정됨DEBUG 2021-03-17 19:57:24,002 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: 원격 버전 문자열: SSH-2.0-CerberusFTPServer_11.0DEBUG 2021-03-17 19:57:24,002 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: 로컬 버전 문자열: SSH-2.0-JSCH-0.1.54DEBUG 2021-03-17 19:57:24,002 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: CheckCiphers: aes256-ctr,aes192-ctr,aes128-ctr,aes256-cbc,aes192-cbc,aes128-cbc,3des-ctr,arcfour,arcfour128,arcfour256DEBUG 2021-03-17 19:57:24,006 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: aes256-ctr은 사용할 수 없습니다.DEBUG 2021-03-17 19:57:24,006 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: aes192-ctr은 사용할 수 없습니다.DEBUG 2021-03-17 19:57:24,006 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: aes256-cbc는 사용할 수 없습니다.DEBUG 2021-03-17 19:57:24,006 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: aes192-cbc는 사용할 수 없습니다.DEBUG 2021-03-17 19:57:24,006 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: CheckKexes: diffie-hellman-group14-sha1,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521DEBUG 2021-03-17 19:57:24,075 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: CheckSignatures: ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521DEBUG 2021-03-17 19:57:24,075 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: SSH_MSG_KEXINIT 전송됨DEBUG 2021-03-17 19:57:24,075 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: SSH_MSG_KEXINIT 수신됨DEBUG 2021-03-17 19:57:24,075 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: kex: server: ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1DEBUG 2021-03-17 19:57:24,076 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: kex: server: ssh-rsa,ssh-ed25519,rsa-sha2-512,rsa-sha2-256DEBUG 2021-03-17 19:57:24,076 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: kex: server: aes256-ctr,aes256-cbcDEBUG 2021-03-17 19:57:24,076 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: kex: server: aes256-ctr,aes256-cbcDEBUG 2021-03-17 19:57:24,076 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: kex: server: hmac-sha1,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-md5DEBUG 2021-03-17 19:57:24,076 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: kex: server: hmac-sha1,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-md5DEBUG 2021-03-17 19:57:24,076 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: kex: server: noneDEBUG 2021-03-17 19:57:24,076 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: kex: server: noneDEBUG 2021-03-17 19:57:24,076 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: kex: server: en-USDEBUG 2021-03-17 19:57:24,076 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: kex: server: en-USDEBUG 2021-03-17 19:57:24,076 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: kex: client: ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1DEBUG 2021-03-17 19:57:24,076 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: kex: client: ssh-rsa,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521DEBUG 2021-03-17 19:57:24,076 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: kex: client: aes128-ctr,aes128-cbc,3des-ctr,3des-cbc,blowfish-cbcDEBUG 2021-03-17 19:57:24,076 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: kex: client: aes128-ctr,aes128-cbc,3des-ctr,3des-cbc,blowfish-cbcDEBUG 2021-03-17 19:57:24,076 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: kex: client: hmac-md5,hmac-sha1,hmac-sha2-256,hmac-sha1-96,hmac-md5-96DEBUG 2021-03-17 19:57:24,076 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: kex: client: hmac-md5,hmac-sha1,hmac-sha2-256,hmac-sha1-96,hmac-md5-96DEBUG 2021-03-17 19:57:24,076 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: kex: client: noneDEBUG 2021-03-17 19:57:24,076 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: kex: client: noneDEBUG 2021-03-17 19:57:24,076 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: kex: client: DEBUG 2021-03-17 19:57:24,076 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: kex: client: DEBUG 2021-03-17 19:57:24,077 [[MuleRuntime].uber.08: [my-mule-application].my-mule-applicationFlow.CPU_LITE @2a316d37] [processor: my-mule-applicationFlow/processors/0; event: ] com.jcraft.jsch: myHost 포트 myPort에서 연결 해제
이 기사에서는 다음 두 가지 시나리오에 대해 다룹니다.
시나리오 1: 압축 알고리즘이 일치하지 않습니다.
압축 알고리즘이 일치하지 않으면 아래의 코드 조각과 유사하게 표시됩니다.
com.jcraft.jsch: kex: server: zlibcom.jcraft.jsch: kex: client: none시나리오 2: 사용된 암호가 일치하지 않습니다.
암호 불일치는 아래의 코드 조각과 유사하게 표시됩니다.
com.jcraft.jsch: kex: server: aes256-ctr,aes256-cbccom.jcraft.jsch: kex: client: aes128-ctr,aes128-cbc,3des-ctr,3des-cbc,blowfish-cbc
DEBUG 로그의 시작 부분에 서버 및 클라이언트(SFTP 커넥터) 모두에서 지원되는 SSH 버전이 나열됩니다.
원격 버전 문자열: SSH-2.0-OpenSSH_8.8로컬 버전 문자열: SSH-2.0-JSCH-0.1.54
일반적으로 RFC에 언급된 협상된 각 알고리즘 범주에 클라이언트와 서버 간에 하나 이상의 구현이 있어야만(및 제약 충족) 처리됩니다.
RFC 4253: 알고리즘 협상 name-list kex_algorithms name-list server_host_key_algorithms name-list encryption_algorithms_client_to_server name-list encryption_algorithms_server_to_client name-list mac_algorithms_client_to_server name-list mac_algorithms_server_to_client name-list compression_algorithms_client_to_server name-list compression_algorithms_server_to_client name-list languages_client_to_server name-list languages_server_to_client예를 들어 각 행은 서버와 클라이언트가 제공하는 알고리즘의 목록을 보여줍니다. server의 단일 알고리즘에 client가 제공하는 일치 알고리즘이 포함되어 있지 않을 경우에도 협상에 실패합니다. 아래 예에서는 "server_host_key_algorithms"에 제공된 알고리즘이 클라이언트가 제공한 알고리즘과 일치하지 않으며 협상에 실패합니다.
시나리오 1(압축 알고리즘)
SFTP 커넥터는 현재 "zlib" 압축을 지원하지 않으며, 따라서 서버측에서 동의할 수 있는 유일한 알고리즘은 "NONE"입니다. 아이디어 포털을 통해 향상 요청이 생성됨
현재 사용 가능한 대안은 다음과 같습니다.
시나리오 2(암호 불일치)
a. 사용된 JSCH 라이브러리가 사용하려는 암호를 지원하는지 확인합니다.
SFTP 커넥터는 JSCH 라이브러리를 사용하여 SFTP 서버에 연결을 설정하며, JSCH에는 사용된 버전에 따라 문서에 설명된 지원되는 암호가 집합되어 있으며, JSCH ChangeLog에서 포함된 기능을 볼 수 있습니다.
예:
라이브러리가 암호를 지원하지 않을 경우 SFTP 서버에서 해당 JSCH 버전이 지원하는 암호 사이에 포함된 암호를 하나 이상 활성화해야 합니다.
중요: 사용 중인 라이브러리를 수정하지 않는 것이 좋습니다. SFTP 커넥터 동작이 테스트되고 번들 처리된 버전으로 검증되므로, 이 작업을 시도할 경우 낮은 환경에서 수행하고 가능하면 MuleSoft 지원 팀에 JSCH 버전이 호환되는지 확인하십시오.
b. JVM 수준에서 암호가 사용 가능한지 여부를 확인합니다.
SFTP 커넥터는 JSCH 라이브러리를 내부적으로 사용하여 SFTP 서버에 연결하며, 이 라이브러리는 최종적으로 JCE Java(TM) 암호화 확장을 사용합니다. 일부 JVM에서는 제어 제한 사항으로 인해 특정 암호가 포함되지 않을 수 있습니다. 공급업체 문서에 따라 사용 중인 JVM에 해당 제한이 적용되는지 확인해야 합니다.
예를 들어 Oracle JVM의 경우 특정 암호를 허용하기 위해 JCE 무제한 강도를 추가해야 하며, 각 Java 버전에는 자체 JCE 일치 패키지 및 설치 세부 사항이 마련되어 있습니다.
JDK8의 경우
무제한 강도 정책, 설치 세부 사항, 무제한 강도 JCE 정책 파일을 참조하십시오.
고지 사항: 이 솔루션은 특정 사용 사례 및 요구 사항과 함께 고려해야 하는 제안을 제공하며, 모든 상황에 대한 전체 솔루션을 나타내지는 않습니다.
001121369

We use three kinds of cookies on our websites: required, functional, and advertising. You can choose whether functional and advertising cookies apply. Click on the different cookie categories to find out more about each category and to change the default settings.
Privacy Statement
Required cookies are necessary for basic website functionality. Some examples include: session cookies needed to transmit the website, authentication cookies, and security cookies.
Functional cookies enhance functions, performance, and services on the website. Some examples include: cookies used to analyze site traffic, cookies used for market research, and cookies used to display advertising that is not directed to a particular individual.
Advertising cookies track activity across websites in order to understand a viewer’s interests, and direct them specific marketing. Some examples include: cookies used for remarketing, or interest-based advertising.