공개 키 인증을 사용하지 않고 SSH를 자동화하거나 기대 (1)
-
06-07-2019 - |
문제
비밀번호를 SSH에 자동으로 전달하는 방법이 있습니까? 서버에 자동으로 SSH를 원합니다 없이 SSH가 stdin 또는 파일에서 비밀번호를 읽게하여 공개 키 인증을 사용하거나 스크립트를 기대합니다.
그렇게 해야하는 이유는 CRON 작업으로 실행되는 rsync/ssh를 사용하여 파일을 서버로 백업하고 싶기 때문입니다. 이 서버는 내 홈 디렉토리를 장착합니다 ~ 후에 로그인이 성공할 때까지 ~/.ssh를 사용할 수 없으므로 공개 키 인증을 사용하는 것이 작동하지 않습니다. 기대 (1)은 CRON 작업으로 실행하고 싶기 때문에 의문의 여지가 없으며, CRON 작업이 터미널에서 실행되지 않기 때문에/SSH의 조합은 작동하지 않습니다. 해당 서버에 대한 루트 액세스 권한이 없으며 관리자가 일이 작동하는 방식을 변경하기가 어려울 것입니다.
해결책
사용 sshpass
.
예를 들어, 비밀번호가있을 때 password.txt
파일:
sshpass -fpassword.txt ssh username@hostname
(답에서 a 비슷한 질문)
다른 팁
Cron 작업으로 실행하고 싶기 때문에 기대는 의문의 여지가 없으며, Cron 작업이 터미널에서 실행되지 않기 때문에/SSH의 조합은 작동하지 않습니다.
CRON의 스크립트를 기대할 수 있습니다. 적어도 Python 용 "Pexpect"와 같은 라이브러리를 사용하면 가능합니다. 방금 CRON에서 pexpect scp/ssh 스크립트를 실행하기 위해 이것을 테스트했으며 CRON에서 실행되는 Python 스크립트에서 SCP 파일을 성공적으로 할 수있었습니다.
예제 코드 :
#!/usr/bin/python
import pexpect
FILE="/path/to/file"
REMOTE_FILE=""
USER="user"
HOST="example.com"
PASS="mypass"
COMMAND="scp -oPubKeyAuthentication=no %s %s@%s:%s" % (FILE, USER, HOST, REMOTE_FILE)
child = pexpect.spawn(COMMAND)
child.expect('password:')
child.sendline(PASS)
child.expect(pexpect.EOF)
print child.before
비밀번호를 전달하는 대신 공개/개인 키 시스템을 사용하십시오. 연결하려는 모든 컴퓨터의 공인 키 목록에 기계의 공개 키를 추가하십시오. 이 방법을 사용하여 SSH는 키를 자동으로 검증 할 수 있으며 암호가 필요하지 않습니다.
여기에는 지침을 찾을 수 있습니다. http://linuxproblem.org/art_9.html
질문을 더 신중하게 읽으므로 사용자 상호 작용없이 비밀번호 인증을 지원하는 다른 SSH 클라이언트를 둘러 볼 수 있습니다. 나는 Google 검색이 존재한다고 힌트했다.http://www.derkeiler.com/newsgroups/comp.security.ssh/2004-12/0134.html)
관련 stackoverflow 질문 :
이 토론은 당신이하려는 일에 대해 이야기합니다.
http://cygwin.com/ml/cygwin/2004-02/msg01449.html
관리자가 로컬 디렉토리를 만들 수 없으면 작동하지 않습니다.
SSH는 미래의 변조에 대한 초기 악수를 확보하기 위해 "믿음의 도약"이 필요합니다. (처음에는 서버가 제공하는 키를 신뢰합니다)
현재 유명하지만 잘 알려지지 않은 접근법 중 하나는 SSH-SRP를 사용하는 것입니다. 이것은 상호 암호 지식을 사용하여 SSH 세션을 안전하게 암호화하는 데 필요한 세션 암호화 키를 제공합니다.
SSH의 초기 "신뢰 나"보다 훨씬 안전하며 장기 키 저장이 필요하지 않습니다.
비밀번호를 먹기 위해 기대, pexpect 등을 사용하지 마십시오. 그렇게하면 비밀번호는 일반 텍스트 어딘가에 있어야합니다. 더 적은 비밀번호없는 공개/개인 키 쌍을 사용하는 것보다 안전합니다. 그리고 그것은 더 많은 일입니다!
옵션에 대한 토론을 위해 "SSH : The Definitive Guide"에서이 페이지를 읽으십시오.http://www.snailbook.com/faq/no-passphrase.auto.html
공개 키 인증이 어떻게 작동하는지 오해했습니다. 원격 홈 디렉토리에 액세스 할 필요가 없으며 로컬 공개 키를 리모컨에 넣으십시오. authorized_keys
파일. 주변에 Google이 있고 가이드가 많이 있습니다.