2011-08-08 4 views
2

SSH를 사용하여 네트워크로 연결된 시스템에 여러 명령을 보내고 루트로 로그인하고 암호를 제공하려면 어떻게해야합니까?SSH with Remote Login/Commands

ssh -l <username> target_host 

로그인을,하지만 난 암호 모두 한 줄에서 실행됩니다 그것이 있도록 명령을 제공하는 방법을 잘 모르겠어요 :

나는 당신이 할 수있는 것을 알고있다. 다른 컴퓨터에서 일회용으로 실행할 수있는 네트워크 시스템에 많은 한 줄짜리 명령이 포함 된 스크립트를 만들려고합니다.

+3

키 인증을 설정하는 것이 좋습니다. –

+1

루트로 SSHing하는 것은 좋지 않은 아이디어처럼 보입니다. 이것은 크론 작업으로 할 수있는 것이 아닙니다. – Richard

+0

많은 기계에 모든 루트 요청을 자동으로 삭제하도록 구성된 sshd가있는 경우에도 놀랄 필요가 없습니다. 좋지 않아. – kmarks2

답변

6

ssh를 뿌리 @ 호스트 "명령"

예 : ssh를 [email protected] "고양이의/etc/fstab에는"

여러 명령을 실행하려는 경우

, 나는에보고 제안 Expect 스크립팅의 일부 형태. 나는 개인적으로 Pexpect (Python)의 팬이다.

(남자 SSH)에서 암호를 입력하라는 메시지 회피 키를 사용 :.

파일 ~/스푸핑/authorized_keys에이 가 로그인을 위해 허용되는 공개 키가 나열 할 때, 사용자가 로그인 ssh 프로그램은 서버 에게 인증에 사용할 키 쌍을 알려줍니다. 클라이언트 은 개인 키와 서버에 대한 액세스 권한을 가지고 있음을 증명합니다. 해당 공개 키가 계정을 승인 할 권한이 있는지 확인합니다.

사용자는 ssh-keygen (1)을 실행하여 키 쌍을 만듭니다. 이 은 ~/.ssh/identity (프로토콜 1), ~/.ssh/id_dsa (프로토콜 2 DSA) 또는 ~/.ssh/id_rsa (프로토콜 2 RSA)의 개인 키 을 저장하고 공개 사용자의 집에있는 ~/.ssh/identity.pub (프로토콜 1), ~/.ssh/id_dsa.pub (프로토콜 2 DSA) 또는 ~/.ssh/id_rsa.pub (프로토콜 2 RSA)의 키 예배 규칙서. 그러면 사용자는 공개 키를 원격 컴퓨터의 홈 디렉토리에있는 의 ~/.ssh/authorized_keys에 복사해야합니다. authorized_keys 파일 은행 () 당 하나의 키 (줄이 매우 길 수 있지만 ~/.rhosts 파일과 일치 함)와 이 일치합니다. 이 후 사용자는 비밀번호를 제공하는 을 와 함께 기록 할 수 있습니다.

+0

좋아 보이는데, 명령 내에서 root 용 암호를 입력하면 어떨까요? :) –

+0

사정을 고려하면, 이것은 괜찮습니다. 로컬 사용자의 id_rsa.pub를 원격 시스템의 /root/.ssh/authorized_keys에 복사해야합니다. 작동하지 않으면 authorized_keys 파일이나 리모컨의 .ssh 디렉토리에 대한 권한이 잘못되었을 가능성이 있습니다 (root가 소유하고 dir을 700, 파일을 600으로 소유해야 함) –

1

당신은 항상

ssh [email protected] 'cd /tmp; ls -l' 

또는

myDir="/tmp" 
ssh [email protected] "cd $myDir; ls -l" 

내가 '명령'arugment으로 함께 전체 쉘 스크립트를 체인 한 할 수있는,하지만 난 그것을하지 않는 것이 좋습니다 (더 이상) ; -0! .대신

, 원격 시스템에 스크립트를 복사 한 다음 바로

ssh [email protected] 'yourRemoteScript' 

마지막으로 실행, 당신은 많은 시스템이없는 expect에서 모든 일을, 포장과 많은 암호를 제공 할 수 없습니다 허용하지 않을 것입니다. 무인 운영을 원하면 에 ssh_keys를 사용해야합니다. S.O. 정확하게하는 방법에 대한 많은 게시물에 대해.

행운을 빈다. 나는 이것이 도움이되기를 바란다.