[JAVA] com.jcraft.jsch.JSchException: invalid privatekey

อันนี้จดไว้ก่อนเป็นเคสแปลกที่เจอช่วยน้องในทีมลองในบ้านตัว Spring Boot App + SFTP ผ่าน แต่พอไปที่ Site ลูกค้าพังซะงั้น ทีมที่เป็น Deploy แจ้ง Error มาเต็มๆ ตามนี้ครับ ที่นี้ก็งงสิครับว่าเปิดอะไรขึ้น แต่หลังจากไปค้นข้อมูลมา อ่อ เป็นเรื่องของ Version OpenSSH ที่ใช้ Generate Public Private Key ครับ ที่นี้กลับมาที่ Code บ้าง ตัว lib spring ใช้ lib jsch ซึ่งตอนนี้ปี 2025 code ทีแก้ล่าสุด 8-9 ปีเลย น่าจะราวๆ 2016-2017 ในขณะที่ OpenSSH (7.8) มีการเปลี่ยนแปลงเรื่องเยอะ โดยส่วนนึงเรื่อง Format PRIVATE KEY ลองถาม Google มัน ถ้าตรวจเทียบ openssh-release-7.8 กับ What’s new in OpenSSH 7.8(Packt) ก็ตรงนะ ใช้แล้วครับ ตัว Code jsch มันไม่ขยับตามครับ จบเลย ทางแก้ 📌 ใช้ OpenSSH < 7.8 Generate Key มาให้ก่อน📌 หรือ แก้ Code ขยับ Lib ไปใช้ตัวอื่น ที่ผมดูๆมามีของ ส่วน dotnet ผมใช้ตัว รอดครับ ไม่เกิดปัญหา Reference

มากินที่งาน German Christmas Market

Blog นี้มาจดว่าเมื่อวันที่ 30-NOV-2025 ได้มาตามไล่กินของในงาน German Christmas Market เอาจริงผมเพิ่งรู้ว่ามันมีแบบนี้ ไม่แน่ใจว่า เพราะมีช่วงนีงไล่กิน Set ไส้กรอกที่ Tops แล้วไปหาข้อมูลหรือป่าว เลยโดยยิง TikTok และ Ads ของร้านไส้กรอกในงานครับ 55555 งานมีค่าเข้านะครับ ซื้อหน้างานก็ได้ แต่ผมขี้เกียจรอ (วันจริงที่ไปงานแถวยาวมากครับ บางคนบอกรอเกือบชั่วโมงเลย) แนะนำให้จองจากเว็บครับ จองไว้ล่วงหน้าประมาณ 2 week ปีนี้จองผ่าน ticketmelon เผื่อปีหน้าเปลี่ยน ที่จองวันที่ 30 มีไปงาน .NET Conf TH 2025 / AI Community Day Bangkok 2025 อารมณ์แบบเขียน Blog สรุป ลองอะไรเล่นๆเสร็จ ไปกินต่อ ของที่กินตามนี้เลย 🍖 NURNBURGER 179 บาท x 2 – Nurnburger ไส้กรอกหมูรมควันแบบเยอรมัน และมี Sauerkraut (กะหล่ำปลีดอง) ตัดมันกับไส้กรอกที่กินไป 4 ชิ้นได้ดีเลย และมันบดด้วย 🥩 Schweinshaxe Size S 270 บาท ขาหมูเยอรมัน ลองกินจาก TikTok ช่วงนึงหนังมันกรอบและ แต่เนื้อแห้ง มาลองกินที่งานหนักกรอบๆ เนื้อช่ำๆเลยชอบมา ดีแล้วที่สั่ง Size S ตัดกำลังชั้นดีเลย แต่แอบเสียดาย น่าจะเอาอย่างอื่นมาแทน Sauerkraut ตอนแรกไม่รู้ว่า คือ อะไร 555 🍗 BBQ 130-140 บาท x 2 มันมีไก่ หมู เนื้อ เลยสั่งอย่างละอันเลย…

[GIT] เพิ่มไฟล์ลงใน .gitignore แต่ไฟล์ยังอยู่หลอกหลอนเรา

ช่วงนี้ทำ Side Project อยู่นี่แหละ แล้วที่นึกได้ว่ามีไฟล์มันไม่จำเป็นต้อง Commit เลยเพิ่มใน .gitignore แต่มันก็ยังให้ Commit อยู่ สงสัยตั้งชื่อผิด หรือ ป่าว ? ไม่น่าจะผิดนะ มีครบตามรูป Cover เลย วิธีแก้ เลยลองหา Google หาดูสรุป จากนั้น push ขึ้นไป จบไฟล์ appsettings.json ไม่หลอนให้ Commit แม้ว่าจะกำหนดใน .gitignore เรียบร้อยแล้วครับ สำหรับผมแล้วในเคสนี้แยก appsettings.example.json เอาไว้ อธิบายให้คนใช้งานต่อครับ อ๋อ แล้วก็ ถ้ามี Secret ไว้ในนั้นเอา BFG Repo Cleaner เอาออกอีกทีครับ มี Blog นะ

How to modernize current dotnet REST API to MCP Server

This blog post is a How-To guide based on what I’ve learned from various sources and my experience trying MCP. If you’re using .NET and have existing code that you want to convert into an MCP Server, what steps do you need to take? Let’s dive in and find out. For Thai Version: มาลองปรับ Code .NET(REST API) เดิมเป็น MCP Server What is MCP? MCP, or Model Context Protocol, is a universal standard designed to extend the capabilities of AI Models (LLMs). This addresses the inherent limitations of models, which have finite knowledge and can sometimes hallucinate information. Prior to MCP,…

วาร์ปมาจด AI Community Day Bangkok 2025

ที่เรียกว่าวาร์ป เพราะ วันนี้เป็นวันที่จัด Tech Meetup ชนกัน 5 งานครับ ผมเองออกมาจากงาน .NET Conf Thailand 2025 มาฟังงานนี้ต่อครับ เหตุผลสั้นๆ อยากมา Cleverse เป็น Host ที่จัดงานหลายครั้งแล้ว ฮ่าๆ ที่ฟังมา เหมือนเป็น บ ที่ปั๊น Startup หลายๆ แบบ Mar-Tech หา user engage / Retail Tech / logistic tech (PanTruck) key ลดการตีรถเปล่า / เว็บรายงานผลการเลือกตั้ง และ AI Tech – aerogram.ai ให้ AI มันง่ายสำหรับ End User สำหรับ Plan อยากมาฟังหัวข้อส่วนแรก Coding ครับ อันหลังๆทำใจๆไว้แล้วธาตุไฟเข้าแทรกได้แน่ๆครับ สำหรับที่จดๆมามีหัวข้อตามนี้ครับผม AI Agents with Microsoft Foundry Speaker Teerasej Jiraphatchandej Building AI Agents for Agentic Commerce Speaker Sathapon Patanakuha 📌 Key Characteristic ของ AI Agents – Autonomy (จัดการได้เลยระดับนึง) / Preception (เห็นสภาพแวดล้อมมี Inputs) / Decision maeking with reasoning / Action / Adaptility (Learning) 📌…

สรุปงาน .NET Conf TH 2025

สำหรับวันนี้จะเป็นสรุปแบบลูกผสมนะครับ คนละครึ่ง OnSite 50% / Online 50% พอดีมีแว๊บๆไปอีกงาน dotnetconf เป็นงานที่จัดพร้อมกัน หลังงาน Global จัดตอนช่วงกลางเดือน nov ในไทยมีจัดตั้งแต่ปี 2018 แล้วครับ ผมเขียน Blog นะไว้บางปีนะ ปีนีจัดที่ seven peak (ทำ digital transformation) โดยหัวในงานปีนี้มีน่าสนใจหลายอย่างเลยครับ ตั้งแต่การเปิดตัว  net10 + vs2026 และหัวข้ออื่นในด้าน testing / azure / aspire / ai agent / unity / บราๆ ที่จดๆมาประมาณนี้ครับ Keynote Speaker Vasupon Thankakan 📌 Recap Microsoft Ignite Empowering Developer ในส่วน Developer โดย Key “How Microsoft can empower developer to achieve more” โดยที่มี AI มาเป็นตัวเร่ง 📌 ปี 2028 Garther คาดการณ์ไว้ว่า งาน day to day operation อย่างน้อย 15% จะถูกจัดการ โดน agentic ai 📌 สิ่งที่ Microsoft เตรียมมาให้มี 2 มุม 1 Agent build Stuff for you 📌 Wave…

[NET] Dockerfile for Blazer WASM

ตอนแรกที่ทำ Blazer ผมเข้าใจว่าตอน Pack เป็น Container มันใช้ Dockerfile ทำ Multi-Stage แบบปกติตามนี้แหละ ปรากฏว่า มันรันได้ แต่ไม่มีหน้าเว็บออกมาเลย ซึ่งมันผิดวิธีครับ Blazer WASM มัน Run ที่ Client เหมือนพวก html javascript นี้แหละ เลยต้องใช้ท่าทำ container พวกเอา frontend ไปใส่ โดยใช้ ตัวอย่างเต็มๆ ลองแงะจาก repo นี้ได้ครับ

แวะมาพบเพื่อน Golang Beyond Meetup 2025 @KKP

ผมได้ได้เชี่ยว Go นะ อาจจะผิดได้แวะมาพบน้องที่เคยทำงานด้วยกัน เลยมาพบในงาน และจดๆนิดหน่อยครับ Common Mistakes in Go and How to Avoid Them Speaker Bhuridech Sudsee 📌 Ignore to check if ok 📌 Unintend shadow variable 📌context – หัวข้อถัดไป The Art of Context: How to Use Context Properly 📌No graceful shutdown 📌 overuser init function 📌 defer thining 📌 Returning interface 📌 Accept Struct 📌 Sophisticated Dependency Injection ผมว่าคล้ายกับอันนี้ หัวข้อนี้นะ Dependency Injection in Golang Ref book 100 hundred mistake in Go The Art of Context: How to Use Context Properly Speaker Jirayut Khantavee 📌 ปัญหา เราจะรู้ได้ยังไง ว่าแต่ละ microservice / go rountine ทำงานยังได้ ตามที่เรากำหนดไหม ตัว Context จะมาช่วยตรงนี้ 📌 Use…

มาลองปรับ Code .NET(REST API) เดิมเป็น MCP Server

ใน Blog นี้มาจด How To หลังจากที่ได้ฟังมาหลายๆที่ และลอง MCP ถ้าเป็น dotnet ถ้าเรามี Code เดิมอยู่แล้ว อยากมาปรับให้ตัวมันเองเป็น MCP Server ต้องทำอย่างไรบ้าง ลองตามมาอ่านกันครับ MCP คือ อะไร ? MCP หรือ Model Context Protocol เป็นมาตรฐานกลางที่ช่วยให้ AI Model (LLM) มันมีความสามารถเพิ่มขึ้น เพราะข้อจำกัดของ Model มีองค์ความรู้จำกัด และข้อมูลบางอัน อาจจะมีการมโน (hallucination) ได้ ซึ่งก่อนที่จะมี MCP ถ้าเราอยากให้ LLM มันรู้จักกับ Tools/Service ที่เราทำไว้ไว้ ต้องไปเขียนวิธีการเชื่อมต่อตามที่ AI Model (LLM) แค่ละค่ายนั้นกำหนดขึ้นมาเอง หรือ แต่ละ Library ที่กำหนดไว้ ถ้าเรามีเปลี่ยน Model อย่างจาก GPT > Claude > Qwen มีกรี๊ดสิครับ MCP เลยมาเป็นคำตอบ ทำมาตรฐานกลางเลย ให้ทุกคนเชื่อมได้ง่าย และ AI Model (LLM) เอาไป Implement ด้วยนั่นเองครับ โดยก่อนที่เราใช้ MCP ได้ อย่างแรกที่ต้องคิดถึงก่อน เลือก Model ที่มีความสามารถ Function / Tools Calling หลังจากที่ AI Model (LLM) มันรู้จัก Tools มันจะช่วยแก้ปัญหา องค์ความรู้จำกัด และลดการมโนได้ อาทิ เช่น 🔴 เรื่องของเวลา ปกติ…