Sedan jag testade Tailscale för mitt hemnätverk har det funnits vissa problem som till slut fick mig att byta till en annan lösning och skicka in en buggrapport, men jag har verkligen älskat deras SSH-funktion.
– FÖRKLARING OM DU INTE är VEDERKÄND, HOPPA ÖVER OM DU VILL —
Du startar bara VPN-klienten och ansluter med valfritt operativsystem, använder vanlig OpenSSH, PuTTY eller någon SSH-klient och startar en skal-session på en nod som har den aktiverad, och en session bara… Öppnar. Inga lösenord, bara autentisering som krävs för att ansluta till VPN med en identitetsleverantör räcker. Inga extra CLI-verktyg, inget “tailscale ssh alice@bob” eller “något ssh alice@bob”… bara vanlig “ssh alice@bob”. Och om du konfigurerar ACL:er korrekt (vilket du bör göra) för att minska tillåtelsen och begränsa tillgången, kan det till och med be dig följa en länk och autentisera igen med din IdP för att bekräfta att det verkligen är du, med vilken 2FA IdP:n kan erbjuda, och det är allt. Allt detta med vilken SSH-klient som helst, inga modifieringar behövs.
— SLUT PÅ FÖRKLARING —
Jag har sedan dess migrerat till Netbird, eftersom det möjliggör självhosting, använder din egen IdP (vilket jag gör), använder kernel-läge WG istället för Userland WG… Och de erbjuder faktiskt SSH med hanterade nycklar som Tailscale, men du måste använda deras CLI-verktyg (netbird ssh) och det stöder inga ACL:er eller liknande funktioner för SSH, det är bara på eller av, för alla, samtidigt.
Känner du till något verktyg som skulle göra samma sak som Tailscale, utan extra klientprogramvara? Och ja, jag har kollat Smallstep, och de kräver ytterligare programvara på klienten, så det är uteslutet.
Tack till alla!
Redigering: förbättrad tydlighet. Att skriva detta kl 00:00 kanske inte var den bästa idén
Disclaimer: Jag är inte själv Tailscale-användare, men jag läste bara dokumentationen om deras SSH-implementation. Så var snäll och rätta mig om jag har fel någonstans.
Grundscenario (ingen omautentisering):
Det här borde vara ganska enkelt att replikera. Enligt dokumentationen gör Tailscale det att ställa in SSH-autentiseringstypen till none, men bara för anslutningar till Tailscale-gränssnittet. Så du kan antingen binda en sshd-instans till ditt Tailscale-gränssnitt med none-autentisering aktiverad eller konfigurera sshd för att vitlista endast vissa IP-adresser för none-autentisering. Jag antar att de förutsätter att IP-spoofing inte är möjlig med Tailscale. Vilket den nog inte är med vanlig WireGuard också, så länge du sätter AllowedIPs rätt?
Komplicerat scenario (med omautentisering):
Det här är svårare. Jag har inte hittat en enkel lösning vid googling (även om saker som Guacamole fortfarande finns, men jag är inte säker på om detta skulle uppfylla ditt krav på “ingen extra programvara på klienten”). Men i grunden vill du ha SSH med SSO (plus, igen, binda till Tailscale-gränssnittet och/eller en IP-vitlista, men det är trivialt). Det finns flera trådar som diskuterar detta (t.ex här och här), samt detta blogginlägg av smallstep (vilket för lösningen som presenteras där, vid första anblicken inte verkar kräva någon ytterligare programvara). Det enklaste vore nog att använda någon PAM-modul som integrerar med din IdP (se t.ex här), men det kan finnas andra också)?
Hoppas detta hjälper något och att du hittar en lösning själv också!
Missar jag något? När din enhet är registrerad (eller inloggad på enheten till tailscale), kan du ssh till Tailscale-IP:n, eller hur? Utan att behöva tailscale ssh, bara ssh anvä[email protected]?
För ssh använder jag teleport av gravitational. Självhosting av den “centrala” delen i en geografiskt logisk region av Hetzner Cloud för tillfället, tidigare hostad på DO och Vultr. Vanligen en VM som kostar inte mer än $10/månad (gör också andra saker).
Enkelaste användning är deras ssh-verktyg, så “tsh ssh”. Men det finns också en webbkonsol-ssh-klient, och du kan konfigurera vanlig ssh för att “använda” tsh, vilket gör anslutningskommandon till enkla “ssh”. Jag använder denna funktion för att köra Ansible eller andra saker via den. Du kan konfigurera hur länge sessionerna är giltiga och den promptar för omedelbar om inloggning när den är inaktiv oavsett hur du använder den.
Den har också “app forwarding”, så den kan vidarebefordra vissa webbkonsoler för dig. Som om du hostar traefik och har instrumentbrädan på 127.0.0.1:9000, kan den vidarebefordra det åt dig vid den centrala platsen bakom dess autentisering.
Nackdelen är att den kostnadsfria versionen bara stöder dess användardatabas eller GitHub som IDP, stöd för andra IDP-alternativ kräver en företagslicens.
Jag har inga tips för putty dock, jag kör Linux som daglig användare, så jag använder alltid CLI-ssh ändå.
Redigering: och ja, den har olika RBAC-alternativ, som att begränsa användare till specifika noder baserat på deras rapporterade taggar, eller till och med “dynamisk användargenerering” med konfigurerbar lösenordsfri sudo
Um jag gör inget speciellt, jag använder självhostad wg och mitt hemnät är inkluderat. Hade till och med flera nätverk kunnat inkluderas i wireguard, svårare men möjligt.
Jag ssh till min server på wg likt LAN. Både på min laptop och telefon. Inget inloggning jag använder SSH-nycklar. Jag kan VNC, göra vad jag vill, till och med snoka i routern om jag känner mig extra äventyrlig. Jag har full kontroll över vem som har ssh. Dåliga föräldrar får inget ssh och får inte leka med routern eller Pi:n.
Det här inlägget är förvirrande för mig.
Jag förstår att det är ooo ingen omautentisering men uh mina nycklar gör det. Jag kunde göra allt detta extra arbete eller använda nycklar eftersom det är helt enkelt smart.
Jag vet, men det är bara TURN-servern för NAT-traversal, publik nyckelutbyte och liknande. Tailscale-klienten är fortfarande den samma, och den ansluter med userland wireguard inbyggt i tailcaled-binarien, inte kernel-nivå Wireguard. Tro mig, för mitt användningsområde gör det skillnad. Ännu en gång, stort tack för ditt svar
Hej! Först och främst, för att svara på dina punkter:
Ja, det “fungerar på ett sätt” men med vissa ytterligare kontroller också. Det kontrollerar saker som användaren du är autentiserad med på din Tailscale-klient, användaren och värden du försöker ansluta till, eventuella ACL:er (som brandväggsregler) du kan ha ställt in som "endast denna grupp av användare på en enhet som möter dessa krav kan SSH:a till denna uppsättning maskiner på varje användare men root, och för denna specifika användare måste de autentisera igen för att få en shell (se check-läge på tailscale SSH ACLs).
Jag har också läst Smallstep-artikeln du hänvisar till, och det verkar verkligen inte krävas någon ytterligare programvara på klienten enligt hur det är skrivet. Dock finns en YouTube-video med nästan ingen visning som visar lösningen de pratar om i artikeln, och du måste faktiskt installera ytterligare programvara: Smallstep CLI för att vara exakt. Med det autentiserar du dig, och det sätter upp SSH-nycklar som är giltiga i 24 timmar. Sedan kan du ansluta med vanlig SSH, så det är hälften av vad jag letar efter, hälften inte. Och för PAM-modulen, det skulle fungera, och jag kommer definitivt att titta på det!
Och slutligen, jag glömde helt att Guacamole finns lol, det borde vara på mig. Även om det inte är, strikt talat, exakt vad jag frågar efter, är en webbläsare något som är förinstallerat på nästan varje OS med ett GUI, och jag kan integrera det med min egen IdP. Tack för förslaget!! Jag har sett många nedlåtande kommentarer men personer som du och andra som försöker hjälpa till gör alltid community bättre
Ja, precis! Det är vad jag letar efter, utan Tailscale. Självklart inte med den offentliga gränssnittet, men kunna bara SSH utan nyckel eller lösenord efter att ha autentiserat och anslutit till VPN. Jag skulle bara kunna ta bort autentisering för alla inkommande anslutningar på VPN-gränssnittet, men det är inte vad tailscale gör, Tailscale kontrollerar många saker som enheten du ansluter från, vilken användare du är inloggad med i Tailscale, vilken användare du försöker öppna ett skal till, och mycket mer innan den ger dig tillgång (eller inte!). Och du kan konfigurera regler för det också, så det är inte bara svart-vitt “om du ansluter från detta IP-område krävs ingen autentisering”.
Ja, det är ett alternativ, men vad som är intressant med Tailscales ssh är att det hanterar nycklarna åt dig och du behöver bara autentisera för att ansluta till ditt VPN och det är det. Men ja, att göra det manuellt är definitivt ett sätt
Provat det. JSON-konfigurationen blev korrupt mycket lätt på en av mina noder (skämt åsido, den startade om ibland, det gör den inte längre), och jag behövde installera om hela klienten väldigt ofta. Dessutom är det MYCKET oavsett dokumentation. Jag tycker det har potential, men det behöver några fler år av arbete
SSH med en identitetsleverantör, tvåfaktorsautentisering och publik nyckelutbyte utan någon extra programvara? Jag är inte så säker. Och om du bara pratar om ett Wireguard VPN då ja, du skulle absolut kunna och jag vet redan hur, jag är systemadministratör. Men försök att göra ett peer-to-peer mesh VPN på det sättet och inte ett hub-and-spoke så kommer du att inse hur exponentially svårt det blir att lägga till noder utan ett sätt att hantera och byta nycklar mellan noder.