SSH-nøgle til Git-autentifikation: Begræns kommandoer uden fejl

Hvordan kan en SSH-nøgle bruges til autentifikation, samtidig med at de tilladte kommandoer over SSH-tunnelen begrænses, specifikt for Git, uden at få fejlen "fatal: What do you think I am? A shell?"?

For at bruge en SSH-nøgle til autentifikation og begrænse kommandoer over SSH-tunnelen specifikt for Git, skal du generere en SSH-nøgle, redigere `authorized_keys` filen med en kommando for at begrænse kommandoer, konfigurere Git-shell, og teste opsætningen for at sikre, at alt fungerer korrekt uden fejl.

Hvordan kan en SSH-nøgle bruges til autentifikation, samtidig med at de tilladte kommandoer over SSH-tunnelen begrænses, specifikt for Git, uden at få fejlen "fatal: What do you think I am? A shell?"?

For at bruge en SSH-nøgle til autentifikation og samtidig begrænse de tilladte kommandoer over SSH-tunnelen specifikt for Git, kan du følge disse trin:

  1. Opret en SSH-nøgle:
    • Generer en SSH-nøgle ved hjælp af kommandoen ssh-keygen.
    • Gem den offentlige nøgle på serveren i ~/.ssh/authorized_keys.
  2. Rediger authorized_keys filen:
    • Åbn ~/.ssh/authorized_keys filen på serveren.
    • Tilføj følgende før den offentlige nøgle for at begrænse kommandoerne:
      command="git-shell -c \"$SSH_ORIGINAL_COMMAND\"",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAr... user@hostname
  3. Konfigurer Git-shell:
    • Sørg for, at git-shell er installeret på serveren.
    • Tilføj brugeren til git-shell ved at redigere /etc/passwd:
      gituser:x:1001:1001::/home/gituser:/usr/bin/git-shell
  4. Test opsætningen:
    • Prøv at klone et Git-repository ved hjælp af SSH for at sikre, at alt fungerer korrekt:
      git clone ssh://gituser@hostname/repo.git
    • Kontroller, at andre SSH-kommandoer er blokeret, og at du ikke får fejlen "fatal: What do you think I am? A shell?"

Ved at følge disse trin kan du sikre, at SSH-nøglen bruges til autentifikation, og at de tilladte kommandoer over SSH-tunnelen er begrænset specifikt til Git, uden at støde på fejlen "fatal: What do you think I am? A shell?".