authorized_keys는 얼마나 잘 확장됩니까?


11

액세스 제어를 처리하기 위해 gitolite와 같은 것을 사용하는 경우 authorized_keys의 크기는 얼마나됩니까? 50,000 명의 사용자에게 성능이 어떻게 될지 말하면 의미가 없습니다 (매우 좋지는 않습니다). 대안은 무엇입니까?

업데이트 : 나는 스스로 테스트를하기로 결정했습니다 (처음에해야 했음). SSH 키를 생성하고 authorized_keys 파일에 추가하는 간단한 스크립트를 작성했습니다. 내 컴퓨터는 그렇게 빠르지 않기 때문에 8,061 개의 키만 생성 한 다음 내 자신을 끝에 추가했습니다. 파일은 3.1MB였습니다. 그런 다음 하나의 파일로 git 저장소를 추가하고 git clone을 세 번 실행했습니다.

With 8,061 keys (Mine is at the end of the file)
real    0m0.442s
real    0m0.447s
real    0m0.458s

With just a single key:
real    0m0.248s
real    0m0.264s
real    0m0.255s

내가 생각했던 것보다 성능이 훨씬 좋습니다. 나는 아직도 할 수있는 대안에 관심이있어 빠른 키 큰 그룹 50,000 더 효율적입니다.


단일 서버에 50000 명의 가상 사용자 또는 산발적 인 액세스 권한을 가진 총 50000 명의 사용자 가있을 것으로 예상 하십니까?
Mxx

산발적 접근. 로그인 할 때마다 50,000 개의 키가있는 authorized_keys 파일을 검색 해야하는 SSH 서버의 성능에 대해 묻고 있습니다.
Jeremy

3
authorized_keys키가 50k 인 파일은 약 25MB입니다. 확실히 그것은 파일 시스템 버퍼에 완전히 캐시됩니다. 파일에서 키를 찾는 시간이 실제로 해당 키를 사용하여 사용자를 인증하는 시간에 비해 왜소하다고 생각합니다.
cjc

답변:


7

실제로 이것이 얼마나 빠른지 GitHub의 효율성을 볼 수 있습니다. 많은 키로 인해 병목 현상이 발생하지는 않습니다.

2009 년 블로그에 문서화되어 있지만 데이터베이스에서 ssh 키를 검색하는 방법을 변경했습니다. 모자 팁 : @Jeremey

그러나 8k 개가 넘는 키를 만들면 50k 키로 다시 테스트 할 수 있습니다.

이러한 키는 유효한 키일 필요는 없으며 생성기를 작성하고 파일을 작성한 다음 끝에 키를 추가하면됩니다.


2
OP가 하드웨어로 50K 키 파일을 테스트해야한다고 동의했습니다. GitHub가 훌륭한 예인지 확실하지 않습니다. 누가 백엔드에서 무엇을하는지 알고 있습니까? 우리 모두가 알고 있듯이 Redis에 authorized_keys를 저장하는 맞춤형 sshd가 있습니다.
cjc

아마도, 그들은 그들이 일하고있는 것에 대해 꽤 목소리가 높으며 gitolab을 사용하여 공공 git 저장소를 제공하는 다른 대형 사이트에서는 언급하지 않았습니다. 물론 많은 무게를 가질 가치는 없지만 언급하지 않았습니다.
vgoff

Gerrit는 최적화 된 ssh 키 조회를 자랑하며 Gitosis보다 빠릅니다. Gerrit 프로젝트에 대해 몰랐습니다.
vgoff

1
github 작동 방식에 대한 기사를 찾았습니다 : github.com/blog/530-how-we-made-github-fast . 패치 된 SSHD 서버를 사용하여 MySQL 서버에서 키를 가져옵니다.
Jeremy

2
sshd_config의 AuthorizedKeysCommand 옵션을 살펴보십시오
Lluís
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.