sshalg

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 3, 2026 License: Apache-2.0 Imports: 4 Imported by: 0

Documentation

Overview

Package sshalg holds the SSH transport algorithms postern accepts.

Ayrı paket olmasının sebebi yapısal: aynı listeler hem GELEN (internal/sshd) hem GİDEN (internal/upstream) yönde kullanılıyor ve sshd zaten upstream'e bağımlı — listeleri ikisinden birine koymak içe aktarma döngüsü yaratırdı. İkiye kopyalamak ise iki yönün sessizce ayrışmasına açık kapı bırakırdı.

Index

Constants

This section is empty.

Variables

View Source
var Ciphers = []string{
	"aes128-gcm@openssh.com",
	"aes256-gcm@openssh.com",
	"chacha20-poly1305@openssh.com",
	"aes128-ctr",
	"aes192-ctr",
	"aes256-ctr",
}

Ciphers, kabul edilen şifreler. Hepsi AEAD ya da CTR; varsayılanla aynı (orada zaten zayıf şifre yok).

* HostKeyAlgorithms, hedefin host key'ini TARARKEN istediğimiz türler, * TERCİH SIRASINDA. * * ⚠️ SIRA ÖNEMLİ ve liste kısıtlanmak ZORUNDA. Kısıtlamayınca sunucunun * keyfi tercihi geliyordu: ölçüldü, OpenSSH 9.7 taramaya * ecdsa-sha2-nistp256 döndü. Pinlenen tür sonradan postern'in pazarlık * edeceği tür olduğu için (bkz. upstream.hostKeyCallback, algoları * pinlenmiş anahtardan türetiyor), taramanın "sunucu ne derse" değil * "elimizdekilerin en iyisi" seçmesi gerekiyor. * * ed25519 önce: küçük, hızlı, eğri seçimi tartışmasız. Sonra RSA'nın * SHA-2 varyantları. NIST eğrileri en sonda — destekleniyor, çünkü * yalnızca onu sunan hedefler var ve o hedefi kaydedememek onu * korumasız bırakmak olurdu.

View Source
var KeyExchanges = []string{
	"mlkem768x25519-sha256",
	"curve25519-sha256",
	"curve25519-sha256@libssh.org",
	"ecdh-sha2-nistp256",
	"ecdh-sha2-nistp384",
	"ecdh-sha2-nistp521",
	"diffie-hellman-group14-sha256",
}

KeyExchanges, kabul edilen anahtar değişimi algoritmaları.

View Source
var MACs = []string{
	"hmac-sha2-256-etm@openssh.com",
	"hmac-sha2-512-etm@openssh.com",
	"hmac-sha2-256",
	"hmac-sha2-512",
}

MACs, kabul edilen mesaj doğrulama algoritmaları.

ETM (encrypt-then-MAC) varyantları önce: doğru sıra o.

* PublicKeyAuths, GELEN kimlik doğrulamasında kabul edilen İSTEMCİ imza * algoritmaları (ssh.ServerConfig.PublicKeyAuthAlgorithms). * * ⚠️ TAŞIMADAN AYRI BİR PAZARLIK — ve ayarlanmadığı için kaçmıştı. * Yukarıdaki listeler taşıma katmanını ayarlıyor; kimlik kanıtının * imzası (SSH_MSG_USERAUTH_REQUEST) ayrı pazarlanıyor ve boş * bırakılınca x/crypto kendi varsayılanına düşüyor. O varsayılan * ssh-rsa (SHA-1) ve ssh-dss taşıyor. * * ÖLÇÜLDÜ, gerçek bastion'a karşı: liste yokken ssh-rsa (SHA-1) ile de * ssh-dss ile de kimlik doğrulandı (err=<nil>). Yani taşımada SHA-1'i * reddeden sunucu, kapıda kabul ediyordu. * * ⚠️ RSA ANAHTARLAR KAYBOLMUYOR: aynı anahtar rsa-sha2-256/512 ile * imzalanıyor ve geçiyor (ölçüldü). Tamamen düşen tek tür ssh-dss — * DSA'nın SHA-2 varyantı yok. * * Sertifika türleri BİLEREK yok: x/crypto sertifikayı ALTTAKİ imza * algoritmasıyla karşılaştırıyor, listeye *-cert-v01@openssh.com * koymak NewServerConn'u hataya düşürürdü. * * ⚠️ ELLE YAZILDI, ssh.SupportedAlgorithms()'den türetilmedi — bugün * birebir aynı olsalar bile. Bu dosyanın varlık sebebi kabul edilen * kümenin denetlenebilir bir yerde YAZILI olması; bağımlılığın bir * sürümde listeye bir şey eklemesi, buradaki kararı sessizce * değiştirmemeli.

Functions

func HostKeyAlgorithmsFor

func HostKeyAlgorithmsFor(keyType string) ([]string, error)

* HostKeyAlgorithmsFor, PİNLENMİŞ bir anahtarın türünden o anahtarla * müzakere edilebilecek imza algoritmalarını üretir — TERCİH SIRASINDA. * * ⚠️ ANAHTARIN TEL FORMATI, MÜZAKERE ADI DEĞİL. RSA'da ikisi ayrışıyor: * anahtar tel üzerinde her zaman "ssh-rsa" diye duruyor (RFC 8332 imza * algoritmasını değiştirdi, anahtar formatını değil) ama imza * algoritması rsa-sha2-512 / rsa-sha2-256 olabiliyor. * * ÖLÇÜLEN ARIZA: pin'in tel formatı doğrudan müzakere listesi olarak * kullanılıyordu ve RSA host key'i pinlenmiş HER hedef erişilemez * oluyordu — OpenSSH 8.8 ssh-rsa'yı varsayılanda kapattı: * * ssh: no common algorithm for host key; * we offered: ["ssh-rsa"], peer offered: ["rsa-sha2-256" "rsa-sha2-512"] * * Aynı kusur eski bir hedefte SESSİZ kalıyordu: el sıkışma tamamlanıyor * ama SHA-1 ile (ölçüldü: müzakere edilen host key algoritması * "ssh-rsa"). Operatörün pin'i "rsa-sha2-512 AAAA..." diye yazıp * kaçması da mümkün değil — ParseAuthorizedKey onu reddediyor. * * ⚠️ ssh-rsa (SHA-1) listeye KASTEN GERİ KONMUYOR. RFC 8332 öncesi bir * hedef (OpenSSH < 7.2) bu akışa zaten giremiyor: tarama da aynı * listeyi sunuyor ve orada da ssh-rsa yok. Kaybedilen tek şey ELLE * pinlenmiş böyle bir hedef, ve onu SHA-1'de tutmak, SHA-1'i her * yerden çıkarmış bir taşıma katmanının tek istisnası olurdu. * * Pin'in ANLAMI değişmiyor: tel formatı aynı kaldığı için doğrulama * hâlâ birebir aynı anahtar blob'unu karşılaştırıyor. * * ⚠️ BOŞ LİSTE DÖNMEK TEHLİKELİ, o yüzden bilinmeyen tür kendi adına * düşüyor: x/crypto boş ClientConfig.HostKeyAlgorithms'i "varsayılanı * kullan" diye okuyor ve o varsayılan ssh-rsa ile ssh-dss içeriyor — * yani sessizce AÇILIRDI.

func HostKeyFile

func HostKeyFile(keyType string) string

* HostKeyFile, bir anahtar türünün hedefteki DOSYA ADI. * * ⚠️ Tür adından türetilemiyor. İlk hâlde "ssh-" öneki kırpılıyordu ve * ecdsa-sha2-nistp256 için "ssh_host_ecdsa-sha2-nistp256_key.pub" gibi * var olmayan bir yol üretiyordu — operatöre verilen doğrulama komutu * çalışmıyordu, yani onaylaması istenen şeyi karşılaştıramıyordu.

func UnusableKeyType

func UnusableKeyType(keyType string) string

* UnusableKeyType, bu türde bir anahtarın postern'de HİÇBİR işe * yaramayacağını söyler — yarayacaksa boş dize döner. * * ⚠️ NEDEN VAR: PublicKeyAuths ssh-dss'i kapıda reddediyor ve * HostKeyAlgorithms zaten hiç sunmuyor. Kontrol olmasaydı bir DSA * anahtarı sorunsuzca EKLENEBİLİYOR, sonra hiçbir koşulda kimlik * doğrulayamıyordu — bu depodaki tekrar eden sınıfın kullanıcıya bakan * hâli: kabul edilen ve hiç çalışamayan bir kayıt. Sahibi de anahtarını * suçlamak yerine bastion'ı arızalı sanardı. * * ⚠️ ssh-rsa BURADA YOK, ve olmaması bilinçli: anahtarın TEL FORMATI * ssh-rsa olsa da imzası rsa-sha2-256/512 olabiliyor (RFC 8332). RSA * anahtarları çalışmaya devam ediyor; düşen tek tür DSA, çünkü onun * bir SHA-2 varyantı yok.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL