2016-07-22 10 views
0

암호가없는 ssh 키에 대해 인증 된 SSH 파일을 작성하기 위해 환경에서 몇 가지 한계를 극복하려고합니다. 가 결국이 내 ansible에 갈SSH와 pseudo-tty 터미널을 통한 sudo

- "키로 서비스 계정의 authorized_keys를 다음 업데이트 sudo를 쓰에"나는 대상 시스템에 같은 SSH를 수행하고 다음을 실행하는 데 필요하고

스크립트.

"ssh -t user @ target"sudo su - service-user "를 사용하고 있습니다. 실제로 서비스 사용자 용 쉘에 성공적으로 연결됩니다. 그러나 나는 이것을 서비스 사용자 용 쉘로 성공적으로 가져옵니다. 파일은 위의와 명령을 수정

모든 팁 또는 대체 옵션

참고 :.? 나는 requiretty가 대상 시스템에 설정되지 않는 옵션 "-t SSH"를 사용할 필요가

건배를

합니다.!
+0

이 질문은 [Server Fault] (http://serverfault.com/)에서 더 나은 응답을 얻을 수 있습니다. –

+0

"* 위와 함께 파일 수정 명령을 전달하는 방법을 찾아 낼 수 없습니다."라는 문장은 이해할 수 없습니다. – techraf

+0

어쩌면 나는 그것을 필요로하는 사람들에게 다시 물어 보겠습니다. "누군가가 서버를 목표로하고 sudo su를 수행하고 파일을 작성하는 가장 좋은 방법을 식별 할 수 있습니까?" – user2074161

답변

0

사용중인 교통 수단에 따라 ssh_args을 사용하십시오.

OpenSSH는 ControlPersist를 지원할 수있는 새 OSPy의 기본 연결 유형입니다. (이는 기본적으로 Enterprise Linux 6 이하를 제외한 모든 운영 체제를 의미합니다).

그런 다음 당신은 당신의 ansible.cfg이 같은 작업을 수행 할 수 있습니다 수동와 동일한 방식으로 연결하는 ansible 강제

ssh_args = -t -t 

합니다.

그런 다음 작전이나 함께 당신이 become를 지정해야 할 작업 및 become_user

- name: Some task 
    debug: msg="this is a test" 
    become: true 
    become_user: someuser 
+0

글쎄, 수동 명령 자체가 작동하지 않습니다. 나는 노력했다. 전의. "ssh -t user @ target"sudo su - service-user; touch test ". 나는 쉘이 psuedo-tty 내에서 생성되는 방식이라고 생각한다. – user2074161

+0

맨 페이지에서 :"여러 -t 옵션은 tty 할당을 강제한다. 로컬 tty " –

0

su와 함께 새로운를 시작하는 대신 실행은 명령에 따라서 통과 할 수있는 옵션 -c을 가지고 껍질.

-c, --command = COMMAND
이미 기본적으로이 작업을 수행 sudo로 인증하고, 그러나 -c

와 쉘에 하나의 명령을 전달; 그냥 완전히 명령에서 su을 절감 할 수 있습니다

ssh -t [email protected] "sudo -u service-user <your-command>" 

한 단계 더 이동하려면, 당신은 당신이 Ansible 각본에이 퍼팅에 계획하고 있습니다. 그렇다면 수동으로 시도하는 데 너무 많은 시간을 소비하지 않아야합니다. Ansible은 실행중인 명령을 원격으로 처리합니다. (그 기본 기능 중 하나입니다.) authorized_keys 파일을 수정하는 데는 a module이 필요합니다.

관련 문제