X11 환경에서 plink(ssh) → sudo → 원격 파일 복사를 하고 있는데 실패합니다.

X11 환경에서 plink(ssh) → sudo → 원격 파일 복사를 하고 있는데 실패합니다.

저는 Linux를 처음 접해서 여기에 사용된 용어가 조금 낯설 수도 있지만 지금 하려는 것은 Windows PC에서 plink를 사용하여 Linux 서버에 ssh로 접속하고 sudo다른 사용자를 실행하는 것입니다. 로컬에 사용하여 원격 위치에서 파일을 복사합니다. 예를 들어,

Windows 시스템 A에서: plink [email protected] "sudo -u user_a python /tools/copyfile.py remoteserverC.com:/a/b/c/filetocopy.txt /local/targetfile.txt"

  • 그 중 linuxserverB와 RemoteserverC는 모두 Linux이다.
  • Python 스크립트는 2개의 매개변수를 허용하고 scp를 호출하여 복사합니다. 첫 번째는 소스이고 다음은 복사할 대상입니다.

나는 얻을 것이다Disconnected: Protocol error (Too many authentication failures for user_a). Child process (ssh) exited with code 78)

나는 몇 가지 사실을 발견했습니다.

  1. plink를 사용하여 동일한 호출을 수행하지만 /local'/local/'(linuxserverB)에 있는 파일만 복사하도록 소스와 대상을 변경하면 문제가 없습니다. 이 문제는 원래 예제와 같이 RemoteserverC.com에서 파일에 액세스하려고 할 때만 발생합니다.

  2. 다른 Linux 시스템(Linux D)에서 plink 대신 ssh에서 동일한 명령을 사용하고 장황한 덤프를 시도했는데 거의 동일한 오류가 발생하는 것을 발견했습니다.

    X11 connection uses different authentication protocol.
    X11 connection rejected because of wrong authentication.
    ..
    Unable to open display linuxserverB.com:123.0 Disconnected. Protocol error (Too many authentication failures for user_a)
    
  3. 따라서 저는 이 개념에 대해 잘 알지 못하지만 X11 전달 문제 때문일 수 있다고 생각합니다. 기본적으로 나는 다음을 사용 -X하고 plink얻으려고 노력합니다.
    Putty X11 proxy: wrong authorisation protocol attemptedUnable to open display linuxserverB.com:123.0 ... Disconnected: Protocol error (Too many authentication failures for user_a)
    
  4. xauthRemoteserverC.com과 linuxserverB.com에 서로의 디스플레이 ID가 포함되도록 RemoteserverC.com 및 linuxserverB.com에 디스플레이를 추가하려고 시도했지만 문제가 지속됩니다.

  5. 또한 Windows 컴퓨터 A에 XMing 설치를 시도했고 xeyesplink를 성공적으로 실행할 수 있었습니다.

그래서 나는 무엇이 잘못되었는지 잘 모르겠습니다. 제가 시도할 수 있는 다른 것이 있나요? X11 포워딩 디스플레이 위치로 인한 문제인가요, 아니면 .XAuthority문제로 인해 발생한 문제인가요?

답변1

예, 메시지는 원격 서버C에서 오는 것 같습니다.

plink를 사용하여 testadminlinuxserverB에 연결하고 거기에서 스크립트를 실행하고 있습니다 sudo -u user_a. 따라서 스크립트는 다음과 같습니다 user_a@linuxserverB.

user_a@remoteserverCscp 대상 사양에는 사용자 이름이 포함되어 있지 않기 때문에 perl 스크립트에 포함된 scp 명령은 사용자 이름이 잘못되었거나 적절한 키가 없는 경우에 연결을 시도합니다 .연결에 사용 가능한 키가 원격 서버에서 허용하는 인증 시도 횟수보다 큽니다. C).

첫 번째 질문은, user_a@remoteserverC말이 되나요? RemoteserverC에 존재하지 않는 경우 user_a복제 소스 사양에 원격 서버C의 사용자 이름이 포함되어야 합니다(예: ) [email protected]:/a/b/c/filetocopy.txt.

그래도 문제가 해결되지 않으면 RemoteserverC의 로그를 확인하고 거부된 인증 시도와 그 이유를 알아보세요. 아마도 사용자의 ~/.ssh/authorized_keys파일이 RemoteserverC에서 적절하게 보호되지 않았기 때문에 서버의 sshd데몬이 인증된 키 목록을 무시했을 수 있습니다. authorized_keys사용자 자신(또는 루트)만이 파일에 쓸 수 있도록 파일을 보호해야 합니다 . 이 경우 로그 메시지는 sshd권한이 충족되지 않은 파일이나 디렉터리를 나타내야 합니다.

관련 정보