Nohup을 사용하는 경우에도 GNU 병렬을 사용할 때 ssh_askpass 권한이 거부되었습니다.

Nohup을 사용하는 경우에도 GNU 병렬을 사용할 때 ssh_askpass 권한이 거부되었습니다.

외부 노드 네트워크를 통해 코드를 실행하려고 합니다. "마스터" 노드에 대한 액세스 권한이 있고 사용 가능한 5개 노드의 클러스터 전체에 작업을 나누는 스크립트를 ssh실행할 수 있습니다 . 다른 필수 구성 요소와 함께 이 명령이 포함된 스크립트 parallel가 있습니다 .bashparallel

내가 사용한 마지막 명령은 다음과 비슷했습니다.

parallel -S node0,node1,node2,node3,node4 --ssh-delay 0.25 --delay 0.5 'run {1} {2}' ::: foo ::: bar

그러나 제가 작업 중인 클러스터는 비교적 자주 중단되는 것으로 알려져 있습니다. 예를 들어 약 5분 동안 유휴 시간이 지나면 오류가 발생 Broken pipe하고 ssh연결이 끊깁니다. 그렇기 때문에 위의 bash 스크립트(위 parallel줄 포함) 를 실행하여 nohupssh 연결을 활성 상태로 유지해야 합니다.

그러나 실제 코드에는 상당한 계산 시간이 필요하므로 SSH 연결 끊김과 관련된 오류가 발생합니다.

ssh_askpass: exec(/usr/bin/ssh-askpass): No such file or directory^M
Permission denied, please try again.

보스 노드에서 다른 노드로 node0연결 하는 경우에도 비밀번호가 필요하지 않습니다. 이로 인해 더 이상 공석이 없다는 불만 사항과 로그인할 수 없다는 경고 메시지가 node1나타납니다 .parallel

parallel: Warning: There are no job slots available. Increase --jobs.
parallel: Warning: Using only -1 connections to avoid race conditions.
parallel: Warning: ssh to node0 only allows for 0 simultaneous logins.
parallel: Warning: You may raise this by changing /etc/ssh/sshd_config: MaxStartups and MaxSessions on node0.
parallel: Warning: You can also try --sshdelay 0.1

나는 보스 노드에 대한 연결을 닫은 결과로 인해 클러스터 내의 다른 노드에 대한 SSH 연결을 조기에 닫는 까다로운 일이 진행되고 있다고 생각합니다 node0.

ssh-agent, ssh-copy-id및 GNU 병렬 튜토리얼에 따라 연결을 설정 하고 sshpass에서 MaxStartupsMaxSessions매개변수를 설정하려고 시도했지만 /etc/ssh/sshd_config소용이 없었습니다. 게다가 코드 계산 시간을 줄이면 병렬 명령이 완벽하게 실행되고 예상대로 작동합니다.

꽤 오랜 시간이 걸리는 프로그램을 실행할 때 SSH 연결이 중단되지 않도록 할 수 있는 방법이 있나요? parallel아니면 다른 일이 벌어지고 있나요?

답변1

연결을 유지하려면 ServerAliveInterval에서 설정할 수 있는 .ssh/config.

답변2

다른 노드에 액세스하는 데 사용된 SSH 키가 잘못되었다는 오류의 원인을 찾았습니다. 그러므로 문제는 GNU 병렬성이나 nohup에 있는 것이 아닙니다.

먼저 문제를 이해하기 위해 설정을 더 자세히 설명하겠습니다. 먼저 내 컴퓨터에서 여러 슬레이브 노드에 연결된 local"보스" 노드에 연결합니다 . 노드에 연결할 때 SSH 전달을 활성화 하면 추가 SSH 연결에서 내 컴퓨터의 키를 잘못 사용했습니다. 따라서 연결이 끊어지면 노드에 대한 연결을 설정하기 위한 올바른 SSH 키에 액세스할 수 없습니다.bossslavessshbosslocallocalbossbossslaves

ssh-keygen이를 사용하고 에 추가하여 새 공개 SSH 키를 생성합니다 ~/.ssh/authorized_keys. 결과적으로 SSH와 SSH 사이의 연결이 local끊어져도 boss자신의 공개 키를 사용하여 SSH 연결을 계속 설정할 수 있습니다 boss.slaves

GNU는 연결을 설정하기 위해 ssh를 병렬로 사용하므로 키가 올바르게 설정되면 권한(및 기타 관련) 문제가 사라집니다. 연결 끊김 문제를 해결 하고 프로세스가 계속 실행되는 동안 노드 연결 끊김을 허용하기 위해 nohup설정과 함께 사용됩니다 .ServerAliveInterval 60/etc/ssh/ssh_configboss

관련 정보