내 컴퓨터와 서버 간에 SFTP 연결을 설정하고 싶습니다.
내 컴퓨터에서 한 쌍의 키를 생성하고 서버의 "authorized_keys" 파일에 공개 키를 썼습니다. 내 개인 키가 없는 컴퓨터에서 연결을 시도하면(다른 사람은 이 키를 갖고 있으면 안 된다는 것을 알고 있습니다) 비밀번호를 묻는 메시지가 표시되기 때문에 이것이 작동한다고 확신합니다.
에 따르면이 사진, 내 서버는 Bob이고 내 컴퓨터는 Alice입니다. 서버가 메시지를 보낼 때 내 공개 키를 사용하여 암호화하고, 나는 내 개인 키를 사용하여 메시지를 해독합니다. 하지만 서버에 메시지를 보내면 암호화되지 않죠? 그렇다면 어떻게 암호화됩니까?
비대칭 암호화에 대해 제가 이해한 바에 따르면, 보내는 메시지를 암호화하려면 서버에서 키 쌍을 생성하고 해당 공개 키를 내 컴퓨터의 "authorized_keys" 파일에 넣어야 합니다. 그렇죠?
내가 어떻게 할 수있는확인하다연결이 양방향(송신 및 수신)으로 보호됩니까?
감사해요!
답변1
SSH 연결에는 두 가지 주요 일이 발생합니다.
서버 인증 및 암호화
서버는 자신의 공개 키를 당신에게 보내며 당신은 그것을 신뢰해야 합니다. 그 전에 수동으로 얻을 수 있으며 이상적인 보안 환경에서는 공개 키가 올바른지 알기 전에는 SSH 서버에 연결하지 않을 것입니다. CA의 목적은 서버 공개 키에 서명하는 것입니다. 대부분의 SSH 환경에서는 서버의 공개 키를 클라이언트로 수락하기만 하면 됩니다. 이것은 "이 서버를 신뢰하고 목록에 추가하시겠습니까?"라는 초기 질문입니다.서버 공개 키는 Linux 시스템의 클라이언트에서 .ssh/known_hosts에 저장됩니다..
연결의 실제 암호화는 비대칭이 아닙니다. 이는 개인/공개 키 암호화에 대해 많은 사람들이 갖고 있는 큰 오해입니다. 너무 느릴 것입니다. 실제로 일어나는 일은 서버와 클라이언트가 공유 비밀(일명 긴 비밀번호)을 생성한다는 것입니다.대칭 암호화이번 세션 동안. 클라이언트와 서버는 공유 비밀에 동의할 때까지 비대칭 암호화를 사용합니다. 그런 다음 이 공유 비밀을 키로 사용하여 대칭 암호화로 전환합니다.
이러한 유형의 암호화가 가장 일반적이며 호출됩니다.하이브리드 암호화, 거의 모든 사람들이 (잘못) 이를 비대칭 암호화라고 부릅니다.
"실제" 순수 비대칭 암호화의 예는 PGP를 사용한 메일 암호화입니다. 모든 메시지가 비대칭으로 암호화되기 때문입니다.
또한: 공유 비밀은 영구적으로 저장되지 않으며 모든 새 세션마다 새로운 공유 비밀이 협상됩니다.
클라이언트 인증
이것은 완전히 다른 것입니다. 이것은 비밀번호 및/또는 키 기반 인증일 수 있습니다. 클라이언트의 공개 키(~/.ssh/id_rsa.pub에 위치)는 서버의authorized_keys 파일(예: 루트의 경우: /root/.ssh/authorized_keys)에 있어야 합니다. 존재하기 전에 ssh-copy-id
사람들은 다음과 같은 일을 할 것입니다
cat ~/.ssh/id_rsa.pub | ssh root@server "cat >> ~/.ssh/authorized_keys"
권한 있는_키 서버에 키를 추가합니다.
클라이언트 인증서는 암호화에는 사용되지 않고 인증에만 사용됩니다.
중요 편집:오해를 방지하기 위해 관련 내용을 더욱 명확하게 게시했습니다 ssh-copy-id
.
현재로서는 ssh-copy-id
클라이언트 공개 키를 서버에 추가하는 것이 가장 좋은 방법입니다. 방금 cat
개인 키와 공개 키 사이의 연결과 저장 방법을 보여주기 위해 어느 파일이 양쪽에서 조작되는지 보여주는 방법을 게시했습니다 .
cat을 사용할 때 ">"를 잊어버릴 위험이 있습니다.덮어쓰기Authorized_keys 파일(Linux에서 ">>"는 추가를 의미하고 ">"는 덮어쓰기를 의미함) 구성 파일을 직접 조작할 때는 책임을 져야 합니다. 지적해 주신 @Rallph에게 감사드립니다.
답변2
서버에는 자체 키 쌍이 있습니다. SSH 서버에 처음 연결할 때 서버의 호스트 키(=공개 키)를 신뢰하는 경우 SSH/SFTP 클라이언트에서 메시지를 표시해야 합니다.
이것이 실제로 서버의 합법적인 공개 키인지 주의 깊게 확인한 후에만 연결이 안전해집니다. 보다나의기사서버를 인증하기 위한 SSH 호스트 키 지문은 어디서 얻나요?
또한 키 쌍이나 서버의 키 쌍 모두 실제로 데이터를 암호화하는 데 사용되지 않습니다. 그것은 훨씬 더 복잡합니다.
또한보십시오: