다음과 같이 *nix 서버 간에 SFTP를 설정하고 있습니다.
다음 명령을 실행하여 보내는 서버에서 공개 키를 생성합니다.
[user1@server1] $ /usr/local/bin/ssh-keygen -t rsa -b 1024
그런 다음 "id_dsa.pub" 파일을
/home/remote_user1/.ssh/authorized_keys
원격 시스템 server2의 파일에 복사합니다.서버 2에 연결:
$ sftp remote_user1@server2
그런 다음 핸드셰이크를 완료하기 위해 비밀번호를 묻는 메시지가 한 번 표시되고 이후의 모든 SFTP 연결에서는 직접 연결됩니다.
그러나 최근에는 다른 팀이 초기 핸드셰이크 없이 우리 서버에 직접 연결할 수 있었습니다. 일반적으로 저는 remote_user1의 핸드셰이크 비밀번호를 제공해야 했습니다.
그렇다면 어떤 구성 변경(있는 경우)을 통해 비밀번호 없이 핸드셰이크를 완료할 수 있습니까? SFTP 핸드셰이크 프로세스를 더 잘 이해하는 데 도움이 될 수 있는 링크도 매우 도움이 될 것입니다. 이 주제에 대해 많은 정보를 찾을 수 없기 때문입니다.
답변1
나는 SSH에서 그러한 "핸드셰이크" 프로세스를 알지 못합니다. 그러나 설명한 단계에서 SSH에 인증에 키를 사용하도록 지시한 것으로 나타나지 않아 id_dsa
비밀번호 인증으로 대체됩니다. 비밀번호를 제공하면 클라이언트에서 실행되는 일부 비밀번호 또는 키 캐싱 데몬이 해당 정보를 저장하고 후속 연결에서 재사용할 수 있습니까?
당신이 보고 있는 것이 이것이일 가능성이 있습니까?
id_dsa
그렇다면 원격 서버가 해당 공개 키를 알고 인증에 사용하도록 허용하면 SSH에 인증에 사용하도록 지시하십시오.
OpenSSH 매뉴얼 페이지는 다음과 같이 말합니다:
-i identity_file Selects a file from which the identity (private key) for RSA or DSA authentication is read. The default is ~/.ssh/identity for protocol version 1, and ~/.ssh/id_rsa and ~/.ssh/id_dsa for protocol version 2. (...)
Solaris가 유사하다면 SSH는 ./id_dsa
.
답변2
알고 보니 권한을 잘못 설정하여 .ssh
자격 authorized_keys
증명을 입력해야 했습니다.
~/.ssh
디렉토리에는 권한 700
또는 권한이 있을 수 755
있지만 775
다른 사용자는 파일 내용에 액세스할 수 없습니다 authorized_keys
. 다른 사람에게 파일에 대한 쓰기 액세스 권한을 부여하면 전체 보안 포인트가 손실됩니다.
~/.ssh/authorized_keys
400
파일에는 권한 (사용자만 읽기 가능) 또는 권한 600
(사용자만 쓰기 가능) 이 있을 수 있습니다 .