2010-06-10 3 views
1

나는 ssh를 포함하여 bash에서 많은 함수를 호출하는 tcl 스크립트를 가지고있다. 나는이 같은 외모와 사투를 벌인거야 부분 :bash를 호출하는 Tcl 스크립트에서 암호 키를 인증하는 방법은 무엇입니까?

Pseudo-terminal will not be allocated because stdin is not a terminal. 
Permission denied, please try again. 
Permission denied, please try again. 
Permission denied (publickey,password,keyboard-interactive). 

나도 콘솔 또는 TK 창을 보여주는 (메시지를 표시하는 방법을 알아낼 수 없습니다 :

proc connect {where} { 
    set bash c:/cygwin/bin/bash 
    catch {exec $bash -c "ssh $where"} result 
    puts $result 
} 
connect [email protected] 

I는 인증 실패 메시지가 , 정말로 중요하지는 않습니다) 사용자가 암호를 알아낼 수 있도록합니다.

내가 bash를 ssh에 사용하는 이유는 결국 스크립트로 github에 연결하려고하기 때문입니다 (패스 키를 입력해야 함). 그래도 문제가 해결되지 않으면

, 당신은 기대 시도해야합니다

puts -nonewline "enter your passphrase: " 
flush stdout 
gets stdin passphrase 
exec $bash -c "ssh $where" << $passphrase 

exec<< 인수는 표준 입력에서 명령에 지정된 값을 전달 또는 사용 :

+0

ssh에 -t -t를 추가하면 첫 번째 암호가 제거됩니다. 오류, 패스 프레이즈에 대한 <<가 불행히도 작동하지 않습니다. – Jack

답변

2

이 시도 암호가없는 키.

+0

+1을 기대합니다. 아주 간단한 것들을 지나서 "마치 스크립트가 사용자 인 것처럼"자동화 작업을위한 훌륭한 (Tcl) 라이브러리. – RHSeeger

0

코드 대신 암호를 처리 할 필요가 없도록 해독 된 키를 보관할 로컬 키 처리 에이전트 (예 : ssh-agent 또는 pageant)를 설정하는 것이 좋습니다. 많은 코드가 암호에 대해 이해해야하는 것을 막을 수 있기 때문에 전체적으로 훨씬 간단한 방법입니다. (생각보다 정확하게 처리하는 것이 더 어렵습니다 ...)

관련 문제