공개 키를 사용하지 않고 SSH를 통해 연결하고 비밀번호를 자동으로 입력하십시오.


20

서버는 SSH 연결을 허용하지만 공개 키 인증은 사용하지 않습니다. (조직적 문제가 아닌 기술적 인 문제로 인해) 지금 이것을 바꾸는 것은 내 힘 안에 있지 않지만 가능한 한 빨리 그것을 시작할 것입니다!

내가 지금 필요한 것은 스크립트 에서 일반 오래된 계정 + 암호 인증을 사용하여 서버에서 명령을 실행 하는 것 입니다. 즉, 나는 비 대화식으로해야합니다. 가능합니까? 어떻게해야합니까?

스크립트를 실행할 클라이언트는 Ubuntu Server 8.04를 실행합니다. 서버는 Cygwin 및 OpenSSH를 실행합니다.


2
키 기반 인증을 사용하는 데 기술적 인 어려움은 무엇입니까? 아마도 당신은 대신에, 또는 이것에 덧붙여 그 질문을해야 할 것입니다.
Zoredache

1
나는 그것을 요구하고있다. :-) serverfault.com/questions/125842/… 잠시 동안 그 머리에 머리를 부딪 치면서 지금은 탈출 경로가 필요합니다. 그러나 물론 내 목표는 장기적으로 작동시키는 것입니다.
삭제됨

답변:


22

라는 리눅스 유틸리티가 sshpass있습니다. 그것은 당신이 원하는 것을 정확하게 할 수있게하고 명령 줄 인수 또는 파일에서 서버 암호를 가져옵니다 (이 방법을 선호하므로 서버 암호가 쉘 기록에 표시되지 않습니다) 이렇게 :

sshpass -f file_with_password ssh user@server ls -la

이것은 서버로 ssh하고 실행 ls -la됩니다. 그러나 한 가지 방법은 먼저 수동으로 서버에 ssh해야하므로 (아직 수행하지 않은 경우) 서버가에 추가됩니다 ~/.ssh/known_hosts. 그렇게하지 sshpass않으면 작동하지 않습니다.


2
이 표준에서 OpenSSH의 일부, 내 컴퓨터의 문자 그대로 아무도없는 (맥 OS X 10.7, 우분투 12.04, FreeBSD의 8, 데비안 3.1) ... 그것을 가지고
voretaq7

@ voretaq7 : sshpass는 SourceForge 프로젝트입니다 : sourceforge.net/projects/sshpass
kevinarpe

1
( "전체 세계가 아닌 @KCArpe 나는 당신이 내 지점 놓친 생각 하여 - 다른 장소에서 작동 솔루션을 선택하려고 리눅스 머신")입니다. SSH_ASKPASS변수 사용은 OpenSSH가있는 모든 시스템에서 작동하는 일반적인 솔루션이며 추가 소프트웨어를 설치할 필요가 없습니다. 우리 중 일부 (규제 산업)에서 새 소프트웨어를 설치하면 많은 관리 작업이 시작됩니다.
voretaq7

@ voretaq7 사용 SSH_ASKPASS이 모든 시스템에서 작동하지는 않습니다. 클라이언트가 지원하더라도 서버가를 사용하면 작동하지 않습니다 keyboard-interactive. 실제로 authorized_keys파일을 여러 임베디드 시스템 에 배포하는 스크립트를 작성할 때이 문제에 직면했습니다 .
kasperd

8

Expect 를 사용 하여이를 수행 할 수 있습니다 . 분명히 이것은 보안 관점에서 바람직하지 않습니다. 암호를 포함하는 스크립트를 일반 텍스트로 사용해야하기 때문입니다. (그러나 질문에 가능한 빨리 공개 키 인증을 사용할 계획이라고 말했기 때문에 그 시점에서는 협력하지 않을 것입니다!)


이것은 내 문제를 해결할 것 같습니다! 내일 확인하겠습니다. 최종 솔루션은 아니지만 보안을 제공합니다. 내가 생각할 때 스크립트 사용자가 스크립트를 읽을 수있는 유일한 사람이라면. 그런 다음 파일 시스템 권한으로 "단지"보호되는 개인 키만큼 안전합니다. 아니면 내가 뭔가를 그리워 했습니까?
삭제

나는 내일 결과로 돌아올 것이다. :-) 답변 해 주셔서 감사합니다!
삭제

작동하는 것 같습니다. 그러나 sshpass는이 특별한 경우 IMHO에서 더 쉬웠습니다.
삭제됨

7

사용하는 스크립트 언어에 따라 다릅니다. 나는 파이썬에서 거의 모든 것을 스크립팅합니다. 이것은 문제가 아닙니다. pyssh와 Paramiko 모두 간단하게 암호없이 스크립트를 작성할 수 있습니다.

(ba) sh 스크립트를 사용하여 OpenSSH를 사용하려는 경우 더 어려워집니다. OpenSSH는 명령 줄에 암호를 입력 할 수 없도록 명시 적으로 막습니다 (모든 사용자는)와 같은 명령 줄을 볼 수 있습니다 ps -fe. 이 경우 ssh 프로그램과 직접 상호 작용해야하며 두 가지 옵션이 있습니다.

  • Expect와 같은 것을 사용하여 상당한 양의 지원 코드를 작성할 수 있습니다.
  • SSH_ASKPASS 변수를 사용하여 해킹하면 암호를 반환하는 응용 프로그램을 호출하고 터미널에서 읽을 수 없도록 일괄 작업으로 실행하도록 지시합니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.