현재 나는 다음과 같이 전화하고 있습니다 :
$ ssh [email protected] my_cmd
이는 속도가 느리고 안전하게 자동화하기가 쉽지 않습니다. SSH 연결을 설정하고 내 명령을 host.com으로 전달하고 출력을 인쇄하는 스크립트를 갖고 싶습니다.
그게 가능합니까?
내 컴퓨터를 Authorized_keys에 추가하는 것은 나에게 옵션이 아니며 속도 저하 문제를 해결하지 못합니다.
답변1
ControlMaster
이 기능을 기존 채널에서의 멀티플렉싱 이라고 합니다 . 이로 인해 ssh는 모든 키 교환을 수행하고 한 번만 로그인하므로 후속 명령이 더 빠르게 실행됩니다. 다음 세 줄을 사용하여 활성화할 수 있습니다 .ssh/config
.
Host host.com
ControlMaster auto
ControlPath ~/.ssh/master-%C
# for openssh < 6.7 you need to use this one:
# ControlPath ~/.ssh/master-%r@%h-%p
ControlPersist 5m
필요에 맞게 이를 조정할 수 있습니다. 또는 다른 명령을 실행하는 동안 열려 있는 기본 연결을 열 수 있습니다 ControlPersist
.
이 기능을 조정할 수 있는 가능성은 많지만 ControlPath
다른 사용자가 읽을 수 없거나 남용할 수 없는 안전한 장소에 소켓을 보관하십시오.
자세한 내용은 ssh_config(5)
매뉴얼 페이지에서 확인할 수 있습니다.
답변2
기계를 제어하고 작업을 자동화할 수 있다면 Authorized_keys에 키를 추가할 수 없는 이유는 무엇입니까?
ssh-copy-id -i ~/.ssh/foo [email protected]
이렇게 하면 연결할 때마다 비밀번호를 입력할 필요가 없습니다.
control master
가장 큰 문제가 연결하는데 시간이 오래 걸린다면 SSH 구성에 추가하여 단일 연결을 재사용할 수 있습니다. 해당 연결을 계속 실행하면 후속 연결이 거의 즉각적으로 이루어집니다.
Host *
ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h-%p
ControlPersist 600
https://puppetlabs.com/blog/speed-up-ssh-by-reusing-connections
장기적으로 작업을 자동화하는 경우 다음과 같이 연결해 주는 자동화 프레임워크를 사용하는 것이 더 나을 수 있습니다.