자체 호스팅 Gitea 서버의 SSH 액세스 문제

Temp mail SuperHeros
자체 호스팅 Gitea 서버의 SSH 액세스 문제
자체 호스팅 Gitea 서버의 SSH 액세스 문제

Gitea로 SSH 액세스 문제 해결

최근에는 로컬 컴퓨터에 Docker 컨테이너를 사용하여 Gitea 서버를 설정했습니다. 연결을 보호하기 위해 Certbot에서 제공하는 SSL을 사용하여 Nginx 역방향 프록시도 구성했습니다.

Gitea 및 GitHub의 SSH 키 생성 튜토리얼을 따랐음에도 불구하고 Gitea 서버에 연결하려고 할 때 권한 거부 오류가 발생했습니다. 이 문서에서는 SSH 액세스 문제를 해결하기 위해 수행한 단계와 문제 해결 방법을 살펴봅니다.

명령 설명
ssh-keygen 보안 연결을 위해 새로운 SSH 키 쌍을 생성합니다.
eval "$(ssh-agent -s)" SSH 키를 관리하기 위해 백그라운드에서 SSH 에이전트를 시작합니다.
ssh-add ~/.ssh/id_rsa 생성된 SSH 개인 키를 SSH 에이전트에 추가합니다.
pbcopy < ~/.ssh/id_rsa.pub SSH 공개 키를 macOS 시스템의 클립보드에 복사합니다.
xclip -sel clip < ~/.ssh/id_rsa.pub xclip을 사용하여 Linux 시스템의 클립보드에 SSH 공개 키를 복사합니다.
proxy_pass Nginx 구성에서 지정된 백엔드 서버로 요청을 전달합니다.
paramiko.RSAKey.from_private_key_file Python에서 Paramiko를 사용하여 파일에서 RSA 개인 키를 로드합니다.
paramiko.SSHClient().set_missing_host_key_policy 사용자에게 메시지를 표시하지 않고 서버의 호스트 키를 자동으로 추가합니다.
chmod 600 ~/.ssh/config 보안을 위해 SSH 구성 파일에 대한 올바른 권한을 설정합니다.

SSH 연결 문제 해결

이전 예제에 제공된 스크립트는 Gitea 서버에 대한 SSH 키 인증 설정 및 문제 해결의 다양한 측면을 다루도록 설계되었습니다. 첫 번째 스크립트는 Bash 스크립트를 사용하여 SSH 키를 생성합니다. ssh-keygen, 다음을 사용하여 SSH 에이전트에 추가하세요. ssh-add, 다음 중 하나를 사용하여 공개 키를 클립보드에 복사합니다. pbcopy 또는 . 이러한 단계는 SSH 키가 올바르게 설정되어 사용할 수 있는지 확인하는 데 중요합니다. 두 번째 스크립트는 Gitea 서버에 대한 프록시 요청을 역방향으로 수행하도록 Nginx를 구성하여 SSL이 올바르게 처리되고 요청이 올바르게 전달되도록 합니다. proxy_pass.

세 번째 예의 Python 스크립트는 Paramiko 라이브러리를 사용하여 SSH 연결을 테스트합니다. 이 스크립트는 다음을 사용하여 개인 키를 로드합니다. paramiko.RSAKey.from_private_key_file Gitea 서버에 연결을 시도합니다. 연결에 실패하면 문제를 진단하는 데 도움이 되는 오류 메시지가 제공됩니다. 네 번째 스크립트에는 SSH 구성 파일을 업데이트하여 올바른 설정이 적용되었는지 확인하는 작업이 포함됩니다. 다음과 같은 명령 Host, HostName, User, 그리고 IdentityFile Gitea 서버에 대한 연결 세부 정보를 지정하는 데 사용됩니다. 마지막으로, chmod 600 ~/.ssh/config 보안을 위해 구성 파일에 대한 적절한 권한을 설정합니다.

Gitea에 대한 SSH 키 인증 설정

프런트엔드 구성에 Bash 스크립트 사용

# Step 1: Generate SSH Key
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
# Step 2: Start the ssh-agent in the background
eval "$(ssh-agent -s)"
# Step 3: Add your SSH key to the ssh-agent
ssh-add ~/.ssh/id_rsa
# Step 4: Copy the SSH key to clipboard
pbcopy < ~/.ssh/id_rsa.pub
# If using xclip
xclip -sel clip < ~/.ssh/id_rsa.pub

Gitea용 Nginx 역방향 프록시 구성

Nginx 구성 파일 사용

server {
    listen 80;
    server_name your_domain;
    return 301 https://$host$request_uri;
}
server {
    listen 443 ssl;
    server_name your_domain;
    ssl_certificate /etc/letsencrypt/live/your_domain/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your_domain/privkey.pem;
    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

SSH 연결 문제 진단

Python 스크립트를 사용하여 SSH 연결 테스트

import paramiko
def test_ssh_connection(host, port, username, key_path):
    k = paramiko.RSAKey.from_private_key_file(key_path)
    c = paramiko.SSHClient()
    c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    try:
        c.connect(hostname=host, port=port, username=username, pkey=k)
        print("SSH connection successful")
    except Exception as e:
        print(f"Failed to connect: {e}")
    finally:
        c.close()
test_ssh_connection('your_domain', 22, 'your_username', '/path/to/id_rsa')

Gitea에 대한 SSH 구성 업데이트

SSH 구성 파일 사용

Gitea를 위한 고급 SSH 키 관리

Gitea 서버용 SSH 키 관리의 또 다른 중요한 측면은 키의 적절한 처리 및 순환입니다. SSH 키를 정기적으로 교체하면 손상된 키가 무기한 사용되는 위험을 줄여 보안을 강화할 수 있습니다. 다음을 사용하여 새 키 쌍을 생성할 수 있습니다. ssh-keygen 새 키를 반영하도록 Gitea 설정을 업데이트하세요. 이 방법은 시간이 지나도 서버에 대한 보안 액세스를 유지하는 데 중요합니다. 또한 SSH 키가 안전하게 저장되고 승인되지 않은 사용자에게 노출되지 않도록 하는 것이 중요합니다. 다음과 같은 도구를 사용하십시오. ssh-agent 메모리에서 키를 안전하게 관리하고 개인 키를 보호되지 않은 상태로 디스크에 두지 않도록 합니다.

SSH 키 및 구성 파일에 대해 엄격한 권한을 구현하는 것은 또 다른 보안 계층입니다. 다음과 같은 명령 chmod 600 ~/.ssh/id_rsa 그리고 chmod 600 ~/.ssh/config 이러한 파일에 대한 액세스를 제한하면 권한이 없는 사용자가 액세스하기가 더 어려워집니다. 또한 MFA(다단계 인증)를 사용하여 SSH 키 사용에 추가 보안 계층을 추가할 수 있습니다. Google Authenticator 또는 하드웨어 토큰과 같은 도구를 SSH 설정과 통합하여 두 번째 형태의 확인을 요구할 수 있으므로 무단 액세스가 더욱 어려워집니다.

SSH 액세스 문제에 대한 일반적인 질문 및 해결 방법

  1. "권한 거부됨" 오류가 발생하는 이유는 무엇입니까?
  2. SSH 키가 SSH 에이전트에 올바르게 추가되었는지, 공개 키가 Gitea 서버의 승인된 키에 추가되었는지 확인하세요.
  3. 새로운 SSH 키 쌍을 생성하려면 어떻게 해야 합니까?
  4. 명령을 사용하십시오 ssh-keygen -t rsa -b 4096 -C "your_email@example.com" 새로운 SSH 키 쌍을 생성합니다.
  5. SSH 키를 ssh-agent에 어떻게 추가하나요?
  6. 명령을 사용하십시오 eval "$(ssh-agent -s)" 에이전트를 시작하고 ssh-add ~/.ssh/id_rsa 키를 추가하려면
  7. SSH 공개 키를 클립보드에 복사하려면 어떻게 해야 합니까?
  8. 사용 pbcopy < ~/.ssh/id_rsa.pub macOS 또는 xclip -sel clip < ~/.ssh/id_rsa.pub 리눅스에서.
  9. SSH 키가 손상된 경우 어떻게 해야 합니까?
  10. 새로운 SSH 키 쌍을 생성하고 Gitea 서버와 키가 사용된 기타 모든 서비스에서 키를 업데이트하세요.
  11. SSH 키 파일에 올바른 권한을 설정하려면 어떻게 해야 합니까?
  12. 명령을 사용하십시오 chmod 600 ~/.ssh/id_rsa 개인 키 파일에 대한 적절한 권한을 설정합니다.
  13. SSH 연결 시간이 초과되는 이유는 무엇입니까?
  14. 네트워크 연결을 확인하고 Gitea 서버가 실행 중인지, SSH 포트가 열려 있고 액세스 가능한지 확인하세요.
  15. 서버에 대한 SSH 연결을 어떻게 테스트합니까?
  16. 명령을 사용하십시오 ssh -T your_username@your_domain 연결을 테스트합니다.

SSH 연결 보안을 위한 최종 단계

결론적으로, Gitea 서버에 대한 안정적인 SSH 연결을 설정하려면 SSH 키의 신중한 구성, Nginx 프록시 설정 및 엄격한 보안 관행이 필요합니다. SSH 키 생성 및 관리, 적절한 권한 설정, Nginx의 올바른 구성 등 설명된 단계를 따르면 사용자는 안전하고 기능적인 설정을 보장할 수 있습니다. Paramiko와 같은 도구를 사용하여 연결을 테스트하고 정기적으로 키를 교체하면 보안과 안정성이 더욱 향상됩니다. 이러한 요소를 포괄적으로 해결하면 연결 문제를 해결하고 안전한 개발 환경을 유지하는 데 도움이 됩니다.