내 git 저장소를 Gitlab에서 Gogs로 마이그레이션하고 일부 조직/그룹 이름을 변경하고 저장소를 재구성할 기회를 얻었습니다.
Composer나 다른 패키저를 사용하는 프로젝트의 경우 현재 Git+SSH URL이 계속 작동하도록 하고 싶습니다.
Gogs에서 방법을 찾았지만 아무 것도 달성하지 못한 것 같아서 또 다른 아이디어가 생겼습니다(다른 상황에서도 유용할 수 있음). Apache가 mod_rewrite를 사용하는 것처럼 서버에서 SSH 경로를 다시 작성합니다. SSH를 사용하여 이를 수행할 수 있는 방법이 있습니까? .authorized_keys
Gogs가 이미 명령을 통해 저장소에 대한 액세스를 조정하는 데 명령을 사용하고 있기 때문에 명령을 추가하는 것은 약간 까다롭습니다.
답변1
그래서 많은 조정 끝에 나는 mod_rewrite가 Apache2에 대해 수행하는 작업을 수행하기 위해 SSH에 아무것도 내장되어 있지 않다는 결론에 도달했습니다. 아마도 좋은 이유가 있을 것입니다.
그래서 저는 SSH( 환경 변수 SSH_ORIGINAL_COMMAND를 재정의하여 파일 gogs
에서)에서 호출된 명령을 대체한 다음 실제 gogs 실행 파일을 호출하는 스크립트로 전환했습니다 ..authorized_keys
SSH_ORIGINAL_COMMAND는 SSH가 작성된 명령을 호출하기 전에 서버에 전송된 명령 .authorized_keys
(있는 경우) 을 작성하는 변수입니다. gogs의 경우 이 변수는 저장소가 있는지 확인하고, 로그인한 SSH 사용자 등에 속해 있는지 확인하고, 마지막으로 저장소에 대해 git 작업을 수행하는 데 사용됩니다. 이 변수의 저장소 경로를 변경하여 별칭을 저장소에 동적으로 추가할 수 있습니다.