2009-08-30 5 views
30

원격 호스트에 액세스 할 수있을 때 로컬 Emacs를 사용하여 원격 호스트의 파일을 편집하는 방법 공개 키 인증을 사용하여 SSH를 통해 만 제공합니까? Tramp는 정상적인 패스워드 로그인을 꽤 잘 처리하지만 키쌍으로 어떻게 작동하는지 알아낼 수는 없습니다. 나는 양쪽 끝에 unix/linux를 사용하고있다.공개 키 인증을 사용하여 Emacs로 원격 파일 편집

+0

TRAMP CX cf에 사용하여 원격 파일을 열 수 있습니다 나는 공개 키 인증과 함께 TRAMP를 사용한다. 무엇이 잘못되었는지 (그리고 사용하고있는 Emacs의 버전)에 대해 조금 자세히 설명해 주시겠습니까? TRAMP는 SSH를 호출하기 때문에 공개 키 로그인으로 "ssh yourname @ yourhost"가 예상대로 작동하는지 먼저 확인해야합니다. – Phil

+1

감사합니다. 귀하의 질의가 올바르게 추적되도록 지시하고 문제를 해결했습니다 (SSH를보다 적절하게 사용하는 방법을 배웠습니다). 그러나 여전히 SSH 신원 파일이 비표준 위치에있을 때 Tramp를 사용하는 방법을 알고 싶다면 SSH의 '-i'명령 행 옵션을 사용해야 할 것입니다. – pico

+1

ssh-add를 사용하여 ID 파일을 추가 할 수 있습니다. – remvee

답변

30

ssh [email protected] -i private-key.pem에 해당하는 TRAMP는 없습니다. 그러나 쉘 명령 ssh-add private-key.pem을 실행하면 ssh (따라서 TRAMP)는 자동으로 private-key.pem을 인증에 사용합니다. 단순히 ssh [email protected]이 쉘에서 작동하고 /[email protected]:~/filename.txt 파일을 여는 것은 암호를 묻지 않고 emacs에서 작동합니다.

+5

'~/.ssh/config' 파일을 사용하여 키를 관리하는 경우 [@Sebastien] (http://stackoverflow.com/a/10738277/881224)의 대답을 참조하십시오. – Droogans

1

Windows를 사용하는 경우 plink를 쉽게 사용할 수 있습니다. plink 바이너리가 경로에 있는지 확인하고 변수 (M-x customize-option)를 사용자 정의해야합니다. tramp-default-method를 plentink로 결합하여 원하는대로 얻을 수 있습니다.

퍼티 홈 페이지에서 키를 추가하기 위해 미팅을 구성하는 방법을 읽어 보았습니다.

C-x C-f /putty_profile: 

그것은 당신의 퍼티 저장된 프로필 이름에서 putty_profile을 얻을 것이다 :

당신이 할 때 너무 프로파일 이름을 사용뿐만 아니라 방법 plinkx이있다.

Linux를 사용하는 경우 일반적으로 최신 배포판에는 글로벌 SSH 에이전트를 사용하여 X를 시작하는 그놈 키링 (seahorse라고도 함)이 있어야합니다. 내 데비안 배포판에 대한 예 :

[email protected]:~$ ps aux|grep ssh-agent 
chmouel 2917 0.0 0.0 4904 552 ?  Ss Aug30 0:00 /usr/bin/ssh-agent /usr/bin/dbus-launch --exit-with-session /usr/bin/seahorse-agent --execute x-session-manager 

당신은 ssh를-추가 할 경우이 암호를 요청하고 모든 X 세션 식별해야합니다 (당신이 적절하게 구성하여 ~/스푸핑의 정체성을 확인하는).

발생하지 않으면 배포판의 다른 곳에 문제가있을 가능성이 큽니다.

13

Tramp는 공개 키 인증 SSH 연결에서 완벽하게 작동하므로 질문하지 않습니다. 예를 들어 , 당신이 ~/.ssh/config에서 다음 설정을 설정 한 가정 :

Host remotehost 
    User  mylogin 
    Port  22 
    Hostname remotehost.fqdn 

및 터미널에 제대로 ssh remotehost을 실행할 수있는 가정, 당신은 /remotehost:path/to/file

+3

이것은 좋은 대답이었습니다. 단지'IdentityFile ~/.ssh/identity-file'을 추가해야했습니다. – Alex