SSH 멀티플렉싱을 설정하려고 하는데 오류가 발생하고 Google에서 검색해도 정확한 오류 메시지는 지금까지 0번만 발견되었습니다.
나는 ~/.ssh/config
다음 콘텐츠로 만듭니다.
Host *
ControlPath ~/.ssh/master-%r@%h:%p
그런 다음 다음 명령을 실행하여 기본 연결을 만들었습니다.
ssh -vMM [email protected]
이는 다중화 소켓을 성공적으로 생성한 것 같습니다.
...
Authenticated to host.example.com ([1.2.3.4]:22).
debug1: setting up multiplex master socket
debug1: channel 0: new [/home/user/.ssh/[email protected]:22]
debug1: channel 1: new [client-session]
debug1: Entering interactive session.
...
그런 다음 다른 창에서 ssh를 통해 명령을 실행해 보았습니다.
ssh -v [email protected] ls
그러나 이는 다중화 소켓에서는 작동하지 않는 것 같습니다.
OpenSSH_7.5p1, OpenSSL 1.1.0f 25 May 2017
debug1: Reading configuration data /home/user/.ssh/config
debug1: /home/user/.ssh/config line 1: Applying options for *
debug1: Reading configuration data /etc/ssh/ssh_config
Master refused session request: Permission denied
debug1: Connecting to host.example.com [1.2.3.4] port 22.
...
Master refused session request: Permission denied
오류가 발생하는 원인은 무엇입니까 ?
~/.ssh
편집: 및에 대한 권한은 ~/.ssh/config
각각 700과 644이므로 거기에는 문제가 없습니다. ~/.ssh/master-*
존재하지 않습니다. 추상 UNIX 소켓인 것 같습니다(그래서 실제로 파일 시스템에 존재하지 않습니다). 그러나 이는 여전히 "액세스 거부" 오류를 설명하지 않습니다.
또한 두 번째 연결을 설정하려고 할 때 기본 연결이 인쇄되는 것을 확인했습니다.
debug1: channel 2: new [mux-control]
debug1: permanently_drop_suid: 0
ssh_askpass: exec(/usr/lib/ssh/ssh-askpass): No such file or directory
debug1: channel 2: free: mux-control, nchannels 3
어쩌면 이것이 그것과 관련이 있을 수도 있습니다. 암호화되지 않은 SSH 키를 사용하여 연결하고 있으므로 SSH에서 비밀번호를 요청해야 하는 이유를 이해할 수 없습니다.
답변1
"액세스 거부" 오류의 원인을 알아냈습니다.
기본적으로 SSH는 다른 SSH 프로세스가 기존 멀티플렉스 세션을 사용하려고 할 때 대화형으로 권한을 요청하려는 것으로 보입니다. 그러나 ssh-askpass
시스템에 권한을 요청하는 프로그램이 없기 때문에 SSH는 기본적으로 "아니요, 액세스 권한을 부여하지 않습니다"로 설정되어 클라이언트에 "액세스 거부" 오류 메시지가 표시됩니다.
설치된 경우 ssh-askpass
(위치:x11-ssh-askpass
패키지Arch Linux의 경우) 다음과 같은 대화 상자가 나타납니다.
확인을 선택하면 연결 시도가 계속됩니다.
프롬프트 자체는 -M
명령줄에서 master를 두 번 지정했기 때문에 발생했습니다. 인용하자면 SSH(1)
:
여러 -M 옵션은 ssh를 "마스터" 모드로 설정하고 슬레이브 연결을 수락하기 전에 확인이 필요합니다.