이제 집에서 일하면서 집 컴퓨터에서 일부 작업을 수행하고(vnc 연결이 너무 느리기 때문에) 작업 컴퓨터에서 일부 작업을 수행합니다(vnc 연결이 너무 느리기 때문입니다).
그래서 두 컴퓨터 모두에 내 작업(및 모든 내용)이 저장되는 폴더의 복사본이 있습니다. 나는 rsync를 사용하여 최신 상태로 유지합니다(Ssh 게이트웨이 서버를 통한 SSH 터널을 통해서도). 모든 방향으로 업데이트를 해야 하는 경우가 많기 때문에 때때로 혼란스러울 수 있습니다. 따라서 나는 실수로 다른 컴퓨터의 파일을 수정하여 한 컴퓨터의 새 작업을 덮어쓰지 않도록 또는 다른 가능한 충돌을 피하기 위해 시험 실행을 하는 것을 좋아합니다.
그러나 이는 해당 옵션을 사용하여 한 번, 사용하지 않고 한 번, 명령을 두 번 실행해야 함을 의미합니다 -n
. 스크립트를 작성하면 쉽게 피할 수 있지만 문제는 원격으로 연결하려면 비밀번호를 두 번 입력해야 한다는 것입니다.
비밀번호를 한 번만 입력하면 되는 명령을 실행할 수 있기를 원합니다. 이 명령은 연습 실행을 수행하고 "enter" 또는 "y" 또는 기타 항목(또는 취소)을 눌러 확인을 기다린 다음 다음을 수행합니다. 진짜 동기화. 가능합니까?
편집하다추가 지침:
내가 하려는 작업은 다음과 같습니다. 먼저 게이트웨이 서버를 통해 SSH 터널을 설정합니다. ( ssh -N -L 2222:workcomputer:22 me@gatewayserver
비밀번호를 묻습니다 me@gatewayserver
.) 그런 다음 이를 사용하여 rsync -ruve "ssh -p 2222" me@localhost:~/folder ~/folder
비밀번호를 묻는데 비밀번호 me@workcomputer
를 여러 번 제공하고 싶지 않습니다.
답변1
최종 시스템에 대한 초기 SSH 연결을 만들고 게이트웨이를 다음과 같이 지정하여 게이트웨이를 통해 연결을 설정할 수 있습니다.점프 호스트그리고 -J
. 추가하면 -N -M
이 연결이 열린 상태로 유지되므로 최종 시스템으로 전송되는 향후 SSH 명령이 첫 번째 연결을 통해 다중화될 수 있습니다.
파일 시작 부분에 배치하십시오 ~/.ssh/config
.
ControlPath ~/.ssh/master-%r@%h:%p
그런 다음 한 번 연결하십시오.
$ ssh -J me@gatewayserver -N -M me@workcomputer
게이트웨이 비밀번호를 입력한 다음 업무용 컴퓨터 비밀번호를 입력하라는 메시지가 표시됩니다. 일단 연결되면 비밀번호 없이 명령을 실행할 수 있습니다.
$ ssh me@workcomputer hostname
$ rsync -nv myfile me@workcomputer:/tmp
첫 번째 SSH에 추가하여 -v
무슨 일이 일어나고 있는지 확인할 수도 있습니다. 자세한 출력에는 -v
생성 중인 소켓이 표시됩니다 ~/.ssh
.
debug1: setting up multiplex master socket
debug1: channel 0: new [/home/me/.ssh/master-me@workcomputer:22]
이제 동일한 대상에 다른 SSH가 필요할 때 기존 SSH를 사용합니다.
$ ssh me@workcomputer pwd
자세한 출력을 제공합니다.
debug1: multiplexing control connection
debug1: channel 1: new [mux-control]
debug1: channel 2: new [client-session]
debug1: Sending command: pwd
debug1: channel 2: free: client-session, nchannels 3
debug1: channel 1: free: mux-control, nchannels 2
rsync 명령도 마찬가지입니다.
$ rsync -nv myfile me@workcomputer:/tmp
sent 43 bytes received 19 bytes 124.00 bytes/sec
total size is 173 speedup is 2.79 (DRY RUN)
산출:
debug1: multiplexing control connection
...
debug1: Sending command: rsync --server -vne.LsfxC . /tmp