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 액세스 문제에 대한 일반적인 질문 및 해결 방법
- "권한 거부됨" 오류가 발생하는 이유는 무엇입니까?
- SSH 키가 SSH 에이전트에 올바르게 추가되었는지, 공개 키가 Gitea 서버의 승인된 키에 추가되었는지 확인하세요.
- 새로운 SSH 키 쌍을 생성하려면 어떻게 해야 합니까?
- 명령을 사용하십시오 ssh-keygen -t rsa -b 4096 -C "your_email@example.com" 새로운 SSH 키 쌍을 생성합니다.
- SSH 키를 ssh-agent에 어떻게 추가하나요?
- 명령을 사용하십시오 eval "$(ssh-agent -s)" 에이전트를 시작하고 ssh-add ~/.ssh/id_rsa 키를 추가하려면
- SSH 공개 키를 클립보드에 복사하려면 어떻게 해야 합니까?
- 사용 pbcopy < ~/.ssh/id_rsa.pub macOS 또는 xclip -sel clip < ~/.ssh/id_rsa.pub 리눅스에서.
- SSH 키가 손상된 경우 어떻게 해야 합니까?
- 새로운 SSH 키 쌍을 생성하고 Gitea 서버와 키가 사용된 기타 모든 서비스에서 키를 업데이트하세요.
- SSH 키 파일에 올바른 권한을 설정하려면 어떻게 해야 합니까?
- 명령을 사용하십시오 chmod 600 ~/.ssh/id_rsa 개인 키 파일에 대한 적절한 권한을 설정합니다.
- SSH 연결 시간이 초과되는 이유는 무엇입니까?
- 네트워크 연결을 확인하고 Gitea 서버가 실행 중인지, SSH 포트가 열려 있고 액세스 가능한지 확인하세요.
- 서버에 대한 SSH 연결을 어떻게 테스트합니까?
- 명령을 사용하십시오 ssh -T your_username@your_domain 연결을 테스트합니다.
SSH 연결 보안을 위한 최종 단계
결론적으로, Gitea 서버에 대한 안정적인 SSH 연결을 설정하려면 SSH 키의 신중한 구성, Nginx 프록시 설정 및 엄격한 보안 관행이 필요합니다. SSH 키 생성 및 관리, 적절한 권한 설정, Nginx의 올바른 구성 등 설명된 단계를 따르면 사용자는 안전하고 기능적인 설정을 보장할 수 있습니다. Paramiko와 같은 도구를 사용하여 연결을 테스트하고 정기적으로 키를 교체하면 보안과 안정성이 더욱 향상됩니다. 이러한 요소를 포괄적으로 해결하면 연결 문제를 해결하고 안전한 개발 환경을 유지하는 데 도움이 됩니다.