[{"data":1,"prerenderedAt":402},["ShallowReactive",2],{"project-38152109":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":27,"sentiment":28,"stance_mix":29,"scored_comments":34,"aspects":35,"strip":44,"post_text":46,"what":47,"said":80,"maker_in_thread":212,"shape":224,"grid":228,"attempts":365,"same_week":366,"maker_shows":33,"maker_hidden":394,"reader_version":395,"card":396},"38152109","Sshx","A web-based collaborative terminal","title","Show HN: Sshx, a web-based collaborative terminal","https:\u002F\u002Fgithub.com\u002Fekzhang\u002Fsshx","github.com","ekzhang",1699199063,2023,242,62,204,3109,7,"notable","dev_tools","collaborative terminal","web_app",[21,24,25,26],"web terminal","shared shell","terminal sharing","mixed",0.035,{"positive":30,"neutral":31,"mixed":32,"critical":33},6,13,0,9,28,{"privacy":36,"execution":38,"idea":40,"design":42,"docs":43},{"positive":32,"critical":37},8,{"positive":32,"critical":39},1,{"positive":41,"critical":32},3,{"positive":39,"critical":32},{"positive":32,"critical":32},[39,32,32,32,32,32,32,32,32,32,39,39,32,39,41,45,41,32,45,41,41,45,39,39,45,39,41,32,41,41,32,32,41,32,41,41,32,39,32,39],5,null,{"problem":48,"audience":46,"pricing":46,"motivation":46,"time_to_build":46,"stack":55,"openness":77,"stage":78,"team_size":79},{"value":49,"source":50,"evidence":51},"Sharing a live terminal session with others from a browser without complex setup.","maker",[52],{"id":53,"by":11,"text":54},"38157990","Nice trick! Many people have mentioned that tmux lets you share terminals, though worth noting that it takes a bit of setup, doesn’t render correctly when you have different…",[56,64,70],{"value":57,"source":58,"evidence":59},"Rust","commenter",[60],{"id":61,"by":62,"text":63},"38155278","skimdesk","Really fun! I have been experimenting with similar idea myself. I was curious on how you handle instantiating the terminal state for new clients. Seems like you're storing a…",{"value":65,"source":58,"evidence":66},"SvelteKit",[67],{"id":68,"by":11,"text":69},"38173507","I'm not sure honestly, if you could raise an issue I'd appreciate it. I didn't go out of my way to do this; it seems to be some default of SvelteKit or the server code that I…",{"value":71,"source":58,"evidence":72},"TypeScript",[73],{"id":74,"by":75,"text":76},"38159295","jchook","Maybe you can provide intuition about how the IVs are not predictable? They seem to be formulaic.…","open_source","launched","unknown",{"praise":81,"objections":108,"requests":149,"questions":164,"alternatives":179},[82,97],{"value":83,"source":58,"evidence":84},"Great user experience and a fun, useful idea for shared terminals",[85,89,93],{"id":86,"by":87,"text":88},"38224792","andelink","Tried it out. This is a fantastic user experience. Great job!",{"id":90,"by":91,"text":92},"38160609","hiAndrewQuinn","This is one of the coolest things I've seen in a while. I'm gonna find a way to try this out TODAY.",{"id":94,"by":95,"text":96},"38154984","teaearlgraycold","Web developers live in the web, but we still need to interface with VMs over SSH. Bridging that gap in favor of the developer is genius. The multiplayer aspect, the shell…",{"value":98,"source":58,"evidence":99},"Useful for teaching and pair programming",[100,104],{"id":101,"by":102,"text":103},"38160086","ciberado","Super cool. Our students are using ttdy[0] and tmux for providing shared access to a configured environment, but your solution seems much more flexible :) I'm going to start…",{"id":105,"by":106,"text":107},"38156963","stavros","Tmate is amazing, highly recommended. It's my favorite way to do pair programming.",[109,123,128,138],{"value":110,"source":58,"evidence":111},"Encryption design concerns: IV handling, no integrity protection with AES-CTR alone",[112,116,120],{"id":113,"by":114,"text":115},"38158483","throwaway81733","I suspect the encryption here is broken due to CTR mode AES with IV reuse. Try printing out the IV in the segment function. It's the same value across sessions. Another thing I…",{"id":117,"by":118,"text":119},"38159196","d-z-m","> I suspect the encryption here is broken due to CTR mode AES with IV reuse. Try printing out the IV in the segment function. It's the same value across sessions. I think it's a…",{"id":121,"by":118,"text":122},"38176390","> Thanks for the comment, happy to elaborate. You're correct that the IVs are not reused. Perhaps you can elaborate a little more on this? For subsequent calls to the segment()…",{"value":124,"source":58,"evidence":125},"Argon2id parameters considered too weak",[126,127],{"id":117,"by":118,"text":119},{"id":121,"by":118,"text":122},{"value":129,"source":58,"evidence":130},"Unauthenticated access via URL is risky",[131,135],{"id":132,"by":133,"text":134},"38157167","throwawaaarrgh","Lol, wait, people are letting a random website control their terminal, and there's no authentication? Wondering now if I should create a website that's just storage for your ssh…",{"id":136,"by":133,"text":137},"38159749","If you give someone a link they can access your terminal right? Then none of the rest matters. A URL isn't a secret. Hence it's unathenticated remote access. Which is nuts. Every…",{"value":139,"source":58,"evidence":140},"curl | sh installation is risky without verification",[141,145],{"id":142,"by":143,"text":144},"38159207","quickthrower2","why don’t those risky “curl | sh” commands at least do some checksum or sig verification?",{"id":146,"by":147,"text":148},"38160892","panki27","I love how it's a self-proclaimed \"secure web-based, collaborative terminal\" but the installation instructions are the exact opposite. Never blindly execute files without looking…",[150,157],{"value":151,"source":58,"evidence":152},"Read-only viewing and restrictions on remote parties",[153],{"id":154,"by":155,"text":156},"38158963","jpeeler","Very cool! Would love to see the ability to restrict remote parties, both for read-only viewing and from opening additional terminals.",{"value":158,"source":58,"evidence":159},"Comparison with alternatives in the readme",[160],{"id":161,"by":162,"text":163},"38156956","minerva23","Have you considered adding a section to the readme comparing Sshx to these well-known alternatives?",[165,172],{"value":166,"source":58,"evidence":167},"Whether sixel is supported",[168],{"id":169,"by":170,"text":171},"38158591","alchemist1e9","Extremely cool. Do the terminal emulators support sixel?",{"value":173,"source":58,"evidence":174},"Whether it uses authorized_keys",[175],{"id":176,"by":177,"text":178},"38158960","throwawayapples","This is pretty interesting if it's secure.. does it use regular .ssh\u002Fauthorized_keys (works with Userify?)",[180,187,194,201,208],{"value":181,"source":58,"evidence":182},"tmux",[183],{"id":184,"by":185,"text":186},"38154521","vulcan01","Or tmux. I guess neither are as intuitive as clickable buttons though.",{"value":188,"source":58,"evidence":189},"GNU screen",[190],{"id":191,"by":192,"text":193},"38154219","nolist_policy","You can share the same terminal session to multiple ssh connections with gnu screen btw.",{"value":195,"source":58,"evidence":196},"tmate",[197],{"id":198,"by":199,"text":200},"38155487","gooseyard","I'll plug https:\u002F\u002Ftmate.io\u002F as well, its incredibly handy",{"value":202,"source":58,"evidence":203},"GoTTY",[204],{"id":205,"by":206,"text":207},"38157176","arjvik","I’ve been using GoTTY (https:\u002F\u002Fgithub.com\u002Fyudai\u002Fgotty) to do the same thing, combined with ngrok or Cloudflare tunnels to get a publically accessible URL. To enable multiplayer…",{"value":209,"source":58,"evidence":210},"ttyd",[211],{"id":101,"by":102,"text":103},{"comments":213,"answered":30,"key":214},18,[215,218,221],{"id":216,"text":217},"38158913","Hey, this is a serious accusation. I would be very careful about raising false suspicions like this publicly. The application does not reuse IVs. For your second point, I am…",{"id":219,"text":220},"38173348","You're exactly right. The IVs are completely predictable, and crucially, that allows us to guarantee that they are not reused. The security of CTR mode of encryption depends on…",{"id":222,"text":223},"38173313","Once again, security is very tricky to get right, and I'm very transparent about the security model and encryption of the application. I've discussed this at length and have…",{"commenters":225,"max_depth":45,"maker_replies":213,"first_comment_mins":226,"lifespan_hours":227},35,182,126,[229,231,233,234,235,239,240,242,245,248,250,253,255,257,260,262,265,267,269,270,273,274,276,278,281,284,286,288,289,291,293,294,295,296,298,299,301,303,306,311,315,318,320,322,324,325,328,330,333,336,339,341,342,345,348,349,351,353,355,356,358,360,362,364],[113,32,39,230,114,32],"project\u002Fcritical\u002Fprivacy",[216,32,32,232,11,39],"commenter\u002Fneutral\u002Fprivacy",[74,32,32,232,75,32],[219,32,32,232,11,39],[236,32,32,237,238,32],"38160277","commenter\u002Fneutral\u002Fnone","pvg",[222,32,32,237,11,39],[241,32,32,237,238,32],"38173747",[243,32,32,237,244,32],"38160850","sneak",[246,32,32,237,247,32],"38161018","biorach",[249,32,32,237,11,39],"38173496",[251,32,32,237,252,32],"38161153","simonebrunozzi",[254,32,32,237,11,39],"38173332",[256,32,32,237,252,32],"38192687",[258,32,32,237,259,32],"38161234","egberts1",[261,32,32,237,11,39],"38173459",[263,32,32,264,238,32],"38173855","other\u002Fneutral\u002Fnone",[266,32,39,230,114,32],"38164285",[268,32,32,232,11,39],"38173299",[117,32,39,230,118,32],[271,32,32,272,11,39],"38173367","project\u002Fneutral\u002Fprivacy",[121,32,39,230,118,32],[61,39,41,275,62,32],"project\u002Fneutral\u002Fexecution",[277,39,32,275,11,39],"38155776",[279,39,41,275,280,32],"38157832","mkj",[101,282,45,283,102,32],2,"project\u002Fpositive\u002Fidea",[285,282,32,237,11,39],"38173412",[205,41,41,287,206,32],"project\u002Fneutral\u002Fidea",[53,41,32,283,11,39],[94,290,45,283,95,32],4,[292,290,32,287,11,39],"38155935",[154,45,41,272,155,32],[169,30,41,275,170,32],[176,18,41,272,177,32],[86,37,45,297,87,32],"project\u002Fpositive\u002Fdesign",[90,33,45,283,91,32],[142,300,39,230,143,32],10,[146,300,39,302,147,32],"project\u002Fcritical\u002Fexecution",[304,300,32,305,11,39],"38173623","commenter\u002Fneutral\u002Fexecution",[307,308,45,309,310,32],"38160816",11,"project\u002Fpositive\u002Fnone","apienx",[312,313,45,309,314,32],"38156200",12,"cjbprime",[316,31,39,230,317,32],"38159248","supriyo-biswas",[319,31,41,275,118,32],"38159548",[321,31,32,305,317,32],"38159624",[323,31,32,237,118,32],"38159719",[68,31,32,305,11,39],[326,31,41,275,327,32],"38178236","698969",[191,329,41,287,192,32],14,[331,329,41,287,332,32],"38154438","mike503",[334,329,32,264,335,32],"38154651","bitwize",[337,329,32,264,338,32],"38154950","wiseowise",[340,329,32,264,143,32],"38159216",[184,329,41,287,185,32],[343,329,32,344,11,39],"38155947","project\u002Fneutral\u002Fdesign",[346,329,32,237,347,32],"38156706","somat",[198,329,41,287,199,32],[350,329,32,264,11,39],"38155969",[161,329,41,352,162,32],"project\u002Fneutral\u002Fdocs",[354,329,32,352,11,39],"38157122",[105,329,32,264,106,32],[132,357,39,230,133,32],15,[359,357,32,237,206,32],"38157574",[361,357,32,272,11,39],"38157659",[363,357,32,237,143,32],"38159223",[136,357,39,230,133,32],[],[367,371,375,380,385,390],{"id":368,"name":369,"points":370,"category":20},"38167363","Inshellisense",388,{"id":372,"name":373,"points":374,"category":20},"38161452","Ladder",377,{"id":376,"name":377,"points":378,"category":379},"38155544","WireHub",312,"infrastructure",{"id":381,"name":382,"points":383,"category":384},"38194586","Bulletpapers",178,"ai",{"id":386,"name":387,"points":388,"category":389},"38108044","DoltgreSQL",162,"data",{"id":391,"name":392,"points":393,"category":384},"38157524","LLaVaVision",154,false,"v2",{"id":397,"name":5,"line":6,"ai":394,"cat":20,"year":13,"points":14,"comments":15,"rec":27,"s":398,"top":18,"kw":399,"maker":11,"domain":10,"tier":19,"attempts":32,"strip":400,"url":9,"mix":401,"praise":83,"objection":110,"sub":21},38152109,0.04,[21,24,25,26],"1000000000110135305335115130330030330101",[30,31,32,33],1794036644293]