기초 지식이 어떻게 우리가 200만 번의 문제를 해결하는데 도움을 줄 수 있습니까

너는 이 문제를 볼 수 있다here.SSH 개인 키의 문제입니다.답은 글의 마지막 부분입니다. 디렉터리에 링크를 만들어 놓았습니다.그러나'이것은 의미가 있다'는 순간을 즐기기 위해 나는 네가 본문의 모든 부분을 자세히 읽도록 격려한다.
카탈로그
  • 소개
  • 배경 지식 - 암호화하다
    2.1 정의
    2.2 대칭 암호화
    2.3 비대칭 암호화
  • SSH 사용의 실제 예
    3.1 SSH 및 Git 관리 서비스 사용
    3.2 SSH 구성 파일
  • 응답
  • 요약
  • 소개하다.


    원격 서버를 조작하려면 컴퓨터에서 원격 서버로 연결할 수 있는 방법이 필요합니다.SSH가 그중의 하나야.

    SSH는 원격 서버와의 안전한 연결을 지원하는 방법입니다.
    이런 연결은 우리가 서버의 케이스를 직접 사용할 수 있게 한다.그곳에서 우리는 기계로 하는 것처럼 모든 임무를 할 수 있다.
    다음 절에서 이 도구의 다른 용례를 토론하기 전에 나는 배경 지식을 되돌아보고 싶다.이 부분은 프로필이나 오류 메시지의 의미를 이해하는 데 도움을 줄 것입니다.구글에서 누군가의 마법 명령을 복제할 때도 우리가 무엇을 해야 하는지 확인할 수 있다.

    배경 지식 : 암호화하다


    지난 절에서 우리는 안전성을 언급했다.SSH를 사용하여 보안 연결을 설정할 수 있습니다.이를 위해 SSH는 서로 다른 암호화 알고리즘을 사용합니다.

    정의


    암호화의 고전적 정의를 찾을 수 있습니다 link.간단하게 보기 위해서, 나는 나의 판본을 사용하고 싶다.
    암호화는 우리가 그것을 디코딩할 방법이 없으면 이해할 수 없는 형식으로 정보를 표현하는 것이다.
    두 가지 암호화 알고리즘이 있는데 그것이 바로 대칭 암호화와 비대칭 암호화이다.

    대칭 암호화


    대칭 암호화는 암호화 알고리즘으로 그 중에서 암호화와 복호화 단계에서 하나의 키를 공유한다(복호화는 암호화의 역방향 과정이다).이 열쇠는 대화 쌍방의 비밀이다.
    대칭 암호화는 정보 교환을 비밀로 한다.키를 가진 사람만이 정보를 복호화할 수 있다.

    비대칭 암호화


    대칭 암호화와 달리 비대칭 암호화 알고리즘은 두 가지 다른 키를 사용하여 정보를 암호화하고 복호화한다.모든 사람은 공개 키와 개인 키로 구성된 키 한 쌍을 필요로 한다.공개 키는 모든 사람에게 공개할 수 있지만, 개인 키는 모든 사람에게 개인적인 것이기 때문에 누구와도 공유할 수 없다.키 쌍의 키를 사용하여 정보를 암호화하면 같은 키 쌍의 다른 키만 암호화할 수 있습니다.
    (개인 키와 개인 키 사이의 차이를 주의하십시오. 개인 키는 공유할 수 없습니다. 대칭 암호화 중인 개인 키는 쌍방 간에 공유할 수 있습니다.)
    비대칭 암호화도 우리에게 대칭 암호화와 같은 안전성을 제공했다.만약 Alice가 Bob의 공개 키로 메시지를 암호화한다면, 그의 개인 키를 가진 Bob만 정보를 복호화할 수 있다.
    또한 대칭 암호화로 사용할 수 없는 두 가지 추가 가능성을 제공합니다.
  • 메시지를 보낸 사람을 확인하는 것을 허락해 주십시오.(*)
  • 메시지를 보낸 사람은 이 행위를 부인할 수 없다.
  • Alice가 개인 키로 메시지를 암호화하는 경우입니다.Bob은 Alice의 공개 키를 사용하여 암호를 해독합니다.암호 해독에 성공하면 Alice에서만 메시지를 보낼 수 있음을 증명합니다.이와 동시에 앨리스는 그녀가 이 메시지를 보냈다는 것을 부인할 수 없었다.다른 사람이 보낸 경우 Bob에서 Alice의 공개 키를 사용하여 암호를 해독할 수 없기 때문입니다.


    피쳐(*)는 서버에 누가 시스템에 연결되어 있는지 식별하는 데 도움이 되는 SSH의 중요한 기반입니다.이것은 서버가 연결을 수락하거나 거부할 수 있도록 합니다.SSH를 사용하여 인증하려면 암호가 필요하지 않습니다.반대로 모든 사람은 자신의 개인 키를 사용하여 서버에 연결하고 서버는 연결할 수 있는 사람의 목록을 추적한다(다음 섹션의 권한 부여 키 참조).비밀번호와 개인 키를 사용하는 두 가지 신분 검증 방법을 비교하는데 후자가 이긴다. 왜냐하면 다음과 같다.
  • 개인 키를 사용한 인증은 누가 시스템에 접근했는지 알려주지만 이 사실을 부인할 수 없습니다.첫 번째 방법에서는 비밀번호를 아는 모든 사람이 시스템에 연결할 수 있다.
  • 비밀번호를 사용하지 않기 때문에 개인 키로 인증하는 것이 더욱 편리하다.그룹의 모든 사람은 암호를 공유하는 것이 아니라 개인 키로 공공 시스템에 로그인할 수 있다.Password sharing in the workplace can expose the business to risks . 따라서 우리는 avoid shared passwords whenever possible.
  • 개인 키 인증은 서버 케이스가 비밀번호를 입력하는 것을 알려주지 않기 때문에 자동으로 명령을 실행할 수 있습니다.
  • 이것도 SSH의 강력한 기능이다. 이것이 바로 왜 점점 더 많은 시스템이 이런 방법을 채택하는가이다.이제 SSH를 실제로 사용하는 방법에 대해 살펴보겠습니다.

    SSH 사용의 실제 예


    SSH 및 Git 관리 서비스 사용


    GitHub 또는 GitLab과 같은 Git 호스팅 서비스를 사용할 때 HTTPS 또는 SSH 프로토콜을 사용하여 저장소를 복제, 푸시, 끌어낼 수 있습니다.
    HTTPS를 사용하는 경우 밀어 당길 때마다... 사용자 이름과 비밀번호를 입력해야 합니다.
    SSH를 사용하는 경우 GitHub/GitLab에 공개 키를 제공해야 합니다.그리고 매번 사용자 이름과 비밀번호를 입력해야 하는 것이 아니라 개인 키의 비밀번호만 입력해야 한다.만약 우리가 암호 단어를 사용하지 않는다면, 우리는 어떤 내용도 입력할 필요가 없다.GitHub은 공개 키를 사용하여 우리가 누구인지 확인하고 저장소를 읽거나 쓸 수 있는 권한이 있는지 확인합니다.
    두 번째 방법은 우리가 매번 수동으로 사용자 이름과 비밀번호를 입력할 필요가 없기 때문에 더욱 편리하다.키에 대한 암호 구문이 설정되어 있지 않으면, 스크립트를 실행해서 밀기/당기기 명령을 실행할 수 있습니다.이를 통해 통합 및 배포 단계를 자동화할 수 있습니다.

    SSH 구성 파일


    SSH를 구성하려면 를 사용합니다.홈 디렉토리의 ssh 디렉토리입니다.SSH 프로토콜을 사용하는 중요한 파일이 있는 디렉토리입니다.이들은 승인된 키, 알려진 호스트 및 구성입니다.다음은 각 파일의 의미를 설명하고자 합니다.
  • 라이센스 키: 이 파일에는 시스템에 액세스할 수 있는 공개 키 목록이 포함되어 있습니다.누군가가 서버에 연결되었을 때, 이 메시지 (개인 키로 암호화) 는 파일의 공개 키로 복호화됩니다.복호화에 성공하면 이 사람을 식별하고 서버에 연결할 수 있도록 합니다.
  • 따라서 SSH 프로토콜을 사용하여 서버에 액세스하려면 이 파일에 공개 키를 추가하기만 하면 됩니다.AWS에서 하나 주면용기에 접근하는 ppk 파일입니다.
  • 알려진 호스트: 이 파일에는 이전에 액세스한 원격 서버의 공개 키 목록이 포함되어 있습니다.파일 속의 정보는 컴퓨터가 목적지의 신분을 검사하여 정확한 위치로 연결하고 나쁜 사람으로 바뀌지 않도록 하는 데 도움이 된다.
  • 구성: 이 파일에는 SSH 설정이 포함되어 있습니다.특정 SSH 연결을 자주 사용하는 경우 해당 연결의 매개변수를 이 파일에 저장할 수 있습니다.그런 다음 SSH 명령을 단축할 수 있습니다.
    예를 들어, 다음 텍스트를 파일 ~/에 저장할 때ssh/config
  • Host alias  
       HostName hostname  
       User username  
       IdentityFile ~/.ssh/private_key
    
    다음 두 명령은 동일한 결과를 제공합니다.
    ssh alias
    ssh username@hostname -i ~/.ssh/private_key
    
    이 구성 파일을 사용하여 두 번째 GitLab 계정을 설정합니다.너는 교과서here를 볼 수 있다.

    질문에 대답하다


    우리 처음의 문제로 돌아가자.개인 키가 안전하지 않을 때, 이 메시지를 볼 수 있습니다.

    개인 키가 제대로 보호되지 않았을 때, 이것은 흔히 볼 수 있는 오류입니다.이론 부분에서 우리는 개인 키가 모든 사람에게 개인적이며 누구와도 공유되지 않는다고 말한다.이 경우 키의 권한이 644이므로 누구나 키의 내용을 읽을 수 있습니다.이것은 개인 키 원칙을 위반하고 오류를 초래했다.
    문제는 명백하다. 우리는 문서의 권한을 제한해야 한다.소유자의 읽기 전용 또는 읽기/쓰기 권한을 사용할 수 있습니다.신기한 명령은:chmod 400 ~/.ssh/[[PRIVATE KEY]] 또는 chmod 600 ~/.ssh/[[PRIVATE KEY]]완성!

    마무리


    SSH는 우리가 일상적으로 사용하는 프로토콜입니다.처음에 나는 Stack Overflow에서 찾은 명령을 맹목적으로 복사하고 붙여 넣었는데 그것이 작용하기를 바랐다.근데 왜 그런지 모르겠어요.더 복잡한 케이스를 구성해야 하거나 최근 GitLab CI/CD를 사용하고 있는 경우 매우 당혹스러웠습니다.기초 지식을 수정한 후에 저는 이제 SSH를 더 잘 이해했습니다.이 글을 통해 우리는 기초 지식과 실제 사용 간의 밀접한 관계를 볼 수 있고 문제를 처리할 때 더욱 자신감을 가질 수 있기를 바란다.

    리소스

  • https://stackoverflow.com/questions/9270734/ssh-permissions-are-too-open-error
  • https://en.wikipedia.org/wiki/Encryption
  • https://www.kratikal.com/blog/5-risks-of-password-sharing-at-work/
  • https://www.keepersecurity.com/blog/2021/07/06/4-rules-for-safe-password-sharing-in-the-workplace/
  • https://medium.com/uncaught-exception/setting-up-multiple-gitlab-accounts-82b70e88c437
  • — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
    나는 다른 사람과 연락해서 너의 관점에서 공부하기를 기대한다.만약 네가 일찍이 "이것은 매우 일리가 있다!"너도 평론 구역에서 이 순간들을 공유할 수 있다.이것은 우리가 서로 공부하는 데 도움이 될 것이다.읽어주셔서 감사합니다!

    좋은 웹페이지 즐겨찾기