SSH에 연결되면 쉘 명령 계속


7

내가 묻는 질문이 정확한지 확실하지 않지만 기본적 으로이 프로세스를 자동화하고 싶었습니다.

  scp ~/.ssh/id_rsa.pub username@example.com:~/
  ssh username@example.com
  mkdir .ssh
  cat id_rsa.pub >> .ssh/authorized_keys
  rm id_rsa.pub
  chmod go-w ~
  chmod 700 ~/.ssh
  chmod 600 ~/.ssh/authorized_keys

그래서 나는 쉘 스크립트를 만들고 이것을 다음과 같이 내 .bash_profile에 넣을 수 있다고 생각했다.

setup_ssh () {
  scp ~/.ssh/id_rsa.pub $1:~/
  ssh $1
  #the following is happens when connected to the server using ssh
  mkdir .ssh
  cat id_rsa.pub >> .ssh/authorized_keys
  rm id_rsa.pub
  chmod go-w ~
  chmod 700 ~/.ssh
  chmod 600 ~/.ssh/authorized_keys
}

그러나 서버에 일단 연결되면 명령을 계속하지 않기 때문에 물론 작동하지 않습니다. ssh를 통해 서버에 연결되면 명령을 계속 진행할 수있는 방법이 있습니까?


2
Patrick의 답변 은 방법을 작동시키는 방법을 설명하며 ssh를 사용하는 방법에 대한 귀중한 교훈입니다. 키를 복사하는 특정 작업을 위해, 사용하지만 ssh-copy-id같은 forcefsck로 표시 , 그것은 바로이 작업에 적합합니다.
— Gilles

이 특정 사용 사례에 대해서는 이 질문 을 참조하십시오 . 이것은 SSH를 통해 명령을 전달하는 것에 대한 일반적인 질문이기 때문에 이것을 열어 두었습니다. 그러나 받아 들여진 대답은 그것을 해결하지 못하여 결국 불행한 일입니다
— Michael Mrozek

기분이 좋아지면 다른 쪽을 받아들이도록 변경하겠습니다. 그러나 내 질문의 목적으로 forcefsck는 나에게 더 나은 옵션을 주었다. 그들은 둘 다 좋은 대답입니다.
— Marc

답변:


5

원격 서버에 아이디를 추가하고 필요한 경우 적절한 권한을 가진 ~ / .ssh 트리를 만듭니다.

ssh-copy-id -i ~/.ssh/id_rsa.pub user@server

와우 .. 이것이 존재하는지 전혀 몰랐다. 대단하다.
— Marc

9

작동하는 방식이 약간 다릅니다.

setup_ssh() {
  cat ~/.ssh/id_rsa.pub | ssh $1 '
    mkdir .ssh;
    cat >> .ssh/authorized_keys;
    chmod go-w .;
    chmod 700 .ssh;
    chmod 600 .ssh/authorized_keys
  '
}

catid_rsa.pub 파일에 쉘 파이프를 제거 하고 쉘 파이프를 사용할 수도 있지만 이것이 충분하다고 생각합니다.

편집 :
작동 방식
기본적으로 원격 호스트에서 새 셸을 시작하여 전달 한 명령을 ssh따옴표로 묶습니다. cat >> .ssh/authorized_keys파트에 도달 하면 STDIN에서 아직 읽은 것이 없으므로의 데이터 cat ~/.ssh/id_rsa.pub가 여전히 거기에 있습니다. catSTDIN에서 데이터를 읽은 다음이를 새로운 authorized_keys 파일로 리디렉션합니다. 그런 다음 나머지 명령을 실행합니다.


핵심은 원격 시스템에서 실행될 모든 명령이 ssh(작은 따옴표를 사용하여) 매개 변수라는 것 입니다.
— Aaron D. Marasco

정말 고마워요. 어떤 이유로 그것은에 붙어있을 것입니다 cat >> .ssh/authorized_keys. 그래서 나는 내가 가지고있는 라인으로 설정했고 훌륭하게 작동했습니다. 정말 고마워!
— Marc

실제로 나는 아래 답변과 함께 가야 할 것입니다. 이것이 이미 구현되었는지 몰랐습니다.
— Marc

@Marc는 누군가의 대답을 획기적으로 바꾸는 나쁜 예절을 제시합니다. 내가 제안한 솔루션은 암호를 여러 번 입력 할 필요성을 없애고 임시 파일을 가질 필요성을 없애고 불필요한 명령을 제거했습니다.
— Patrick

1
미안 패트릭 게시물 끝에 추가해야했습니다. 그래도 완전히 이해합니다.
— Marc
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.