2014-12-02 2 views
0

나는 다소 성가신 상황을 처리해야합니다. 한 서버에서 다른 서버로 scp를 사용하여 쉘 스크립트를 통해 파일을 전송해야합니다. 문제는 그 중 하나에 루트 액세스 권한이 없다는 것입니다. sshpass, ssh2와 같은 패키지를 설치할 수 없습니다. 두 번째 서버에서 사용해야하는 사용자의 홈 디렉토리에 쓰기 권한이 없습니다.~/.ssh 외부에 개인 키 저장

로그인 자격 증명을 입력하기 위해 sshpass 등을 사용할 수 없어서 인증을 위해 ssh 키 쌍을 사용하려고 생각했습니다. 실제로 그것은 내 생각 이었지만 두 번째 서버의 사용자에게는 홈 디렉토리에 쓰기 권한이 없으므로 이후 디렉토리에서만 ssh-keygen이 ~/.ssh에 키를 넣을 수 없으므로 실패합니다.

둘 다 데비안 서버입니다.

ssh 키 쌍을 생성하여 ~/.ssh 외부에서 사용할 수 있습니까?

도움을 주시면 대단히 감사하겠습니다.

+0

대상 시스템에서 스크립트를 실행하고 _pull_ 파일을 실행할 수 있습니까? – Andras

답변

0

고객 측에서 예. 그러나 서버 측에서 다르게 설정되어 있지 않으면 sshd는 해당 디렉토리에서 사용자의 자격 증명을 기대합니다.

.ssh에서 액세스 할 수없는 서버에서 scp를 실행할 수있는 경우 -i 옵션을 사용하여 키 파일 위치를 지정할 수 있습니다.

대체 전송 메커니즘이 있습니까? filn을 public_html로두고 다른 쪽에서 wget 할 수 있습니까?

0

어디에서나 키 쌍을 사용할 수 있습니다. 핵심은 사용 권한이 키 쌍에 올바르게 설정되어 있다는 것입니다. 소유권은 사용자 chown user:user keyfile으로 설정해야하며 사용 권한은 chmod 400 keyfile이어야합니다.

일단 키를 이동하고 권한을 설정하면 남은 것은 scp에게 어떤 키를 사용할지를 알려주는 것입니다. -i 플래그를 사용하여이 작업을 수행 할 수 있습니다.

IE : scp /source/file [email protected]:/target/location/ -i keyfile

편집 : Amadan는 그의 대답에 언급 된 바와 같이 - 이것은 당신이 연결하는 서버가 이미 사용자에 대한 인증 된 키와 키가하는 가정합니다. 그렇지 않다면 /etc/ssh/sshd_config 변경이 필요할 것입니다. 올바른 접근 권한을 가진 사람 만이 할 수 있습니다. 사용자가 지금 당장 서버에 액세스 할 수 있다면 서버에서 cat/etc/ssh/sshd_config를 시도해 볼 가치가 있습니다. 읽기 권한이 있으면 예상 된 authorized_keys 위치를 식별 할 수 있습니다. 서버 관리자가 이미 쓰기 권한이있는 것으로 예상 된 키 위치를 사용자 정의했을 수 있습니다.