Özet
ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface] [-b bind_address] [-c cipher_spec]
[-D [bind_address:]port] [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11]
[-i identity_file] [-J destination] [-L address] [-l login_name] [-m mac_spec] [-O ctl_cmd]
[-o option] [-P tag] [-p port] [-R address] [-S ctl_path] [-W host:port]
[-w local_tun[:remote_tun]] destination [command [argument ...]]
ssh [-Q query_option]
Açıklama
ssh (SSH istemcisi), uzak bir makinede oturum açmak ve uzak bir makinede komutlar yürütmek için kullanılan bir programdır. Güvenli olmayan bir ağ üzerinden iki güvenilmeyen ana bilgisayar arasında güvenli, şifrelenmiş iletişim sağlamayı amaçlar. X11 bağlantıları, isteğe bağlı TCP bağlantı noktaları ve UNIX-domain soketleri de güvenli kanal üzerinden yönlendirilebilir.
ssh, [kullanıcı@]makine_adı veya ssh://[kullanıcı@]makine_adı[:port] biçimindeki bir URI olarak belirtilebilen hedef hedefe bağlanır ve oturum açar. Kullanıcı, birkaç yöntemden birini kullanarak (aşağıya bakın) uzak makineye kimliğini kanıtlamalıdır.
Bir komut belirtilirse, bir oturum açma kabuğu yerine uzak ana bilgisayarda yürütülür. Komut olarak tam bir komut satırı belirtilebilir veya ek argümanlara sahip olabilir. Sağlanırsa, argümanlar yürütülmek üzere sunucuya gönderilmeden önce aralarında boşluk olacak şekilde komutun sonuna eklenir.
Seçenekler aşağıdaki gibidir:
-4: ssh'ı yalnızca IPv4 adreslerini kullanmaya zorlar.-6: ssh'ı yalnızca IPv6 adreslerini kullanmaya zorlar.-A: ssh-agent(1) gibi bir kimlik doğrulama aracısından bağlantıların yönlendirilmesini etkinleştirir. Bu, bir yapılandırma dosyasında ana bilgisayar bazında da belirtilebilir.Aracı yönlendirmesi dikkatle etkinleştirilmelidir. Uzak ana bilgisayardaki dosya izinlerini atlama yeteneğine sahip kullanıcılar (aracının UNIX-domain soketi için) yönlendirilen bağlantı aracılığıyla yerel aracıya erişebilir. Saldırgan aracıdan anahtar materyali elde edemez, ancak aracıya yüklenen kimlikleri kullanarak kimlik doğrulamalarını sağlayan anahtarlar üzerinde işlemler gerçekleştirebilir. Daha güvenli bir alternatif bir sıçrama ana bilgisayarı (jump host) kullanmak olabilir (bkz. -J).
-a: Kimlik doğrulama aracısı bağlantısının yönlendirilmesini devre dışı bırakır.-B bind_interface Hedef ana bilgisayara bağlanmaya çalışmadan önce bind_interface adresine bağlanır (bind). Bu, yalnızca birden fazla adresi olan sistemlerde kullanışlıdır.
-b bind_address Bağlantının kaynak adresi olarak yerel makinedeki bind_address adresini kullanır. Yalnızca birden fazla adresi olan sistemlerde kullanışlıdır.
-C: Tüm verilerin (stdin, stdout, stderr ve yönlendirilen X11, TCP ve UNIX-domain bağlantılarına ait veriler dahil) sıkıştırılmasını ister. Sıkıştırma algoritması gzip(1) tarafından kullanılanla aynıdır. Sıkıştırma, modem hatlarında ve diğer yavaş bağlantılarda istenir, ancak hızlı ağlarda yalnızca işleri yavaşlatır. Varsayılan değer, yapılandırma dosyalarında ana bilgisayar bazında ayarlanabilir; ssh_config(5) içindeki Compression seçeneğine bakın.-c cipher_spec Oturumu şifrelemek için şifreleme özelliklerini seçer. cipher_spec, tercih sırasına göre listelenen virgülle ayrılmış şifreleyicilerin bir listesidir. Daha fazla bilgi için ssh_config(5) içindeki Ciphers anahtar kelimesine bakın.
-D [bind_address:]port Yerel bir "dinamik" uygulama düzeyinde bağlantı noktası yönlendirmesi belirtir. Bu, yerel taraftaki portu dinlemek için isteğe bağlı olarak belirtilen bind_address adresine bağlı bir soket tahsis ederek çalışır. Bu bağlantı noktasına her bağlantı yapıldığında, bağlantı güvenli kanal üzerinden yönlendirilir ve ardından uzak makineden nereye bağlanılacağını belirlemek için uygulama protokolü kullanılır. Şu anda SOCKS4 ve SOCKS5 protokolleri desteklenmektedir ve ssh bir SOCKS sunucusu gibi davranacaktır. Yalnızca root yetkili bağlantı noktalarını yönlendirebilir. Dinamik bağlantı noktası yönlendirmeleri yapılandırma dosyasında da belirtilebilir.
IPv6 adresleri, adres köşeli parantez içine alınarak belirtilebilir. Yalnızca süper kullanıcı yetkili bağlantı noktalarını yönlendirebilir. Varsayılan olarak, yerel bağlantı noktası GatewayPorts ayarına uygun olarak bağlanır. Ancak, bağlantıyı belirli bir adrese bağlamak için açık bir bind_address kullanılabilir. “localhost” şeklindeki bind_address, dinleme bağlantı noktasının yalnızca yerel kullanım için bağlanacağını gösterirken, boş bir adres veya ‘*’ bağlantı noktasının tüm arayüzlerden kullanılabilir olması gerektiğini gösterir.
-E log_file Hata ayıklama günlüklerini standart hata (stderr) yerine log_file dosyasına ekler.
-e escape_char Bir pty içeren oturumlar için kaçış karakterini ayarlar (varsayılan: ‘~’). Kaçış karakteri yalnızca bir satırın başında tanınır. Kaçış karakterinin ardından bir nokta (‘.’) gelmesi bağlantıyı kapatır; kontrol-Z gelmesi bağlantıyı askıya alır; ve kendisinin gelmesi kaçış karakterini bir kez gönderir. Karakteri “none” olarak ayarlamak tüm kaçışları devre dışı bırakır ve oturumu tamamen şeffaf hale getirir.
-F configfile Kullanıcı başına alternatif bir yapılandırma dosyası belirtir. Komut satırında bir yapılandırma dosyası verilirse, sistem genelindeki yapılandırma dosyası (/etc/ssh/ssh_config) yoksayılır. Kullanıcı başına yapılandırma dosyası için varsayılan değer ~/.ssh/config'dir. “none” olarak ayarlanırsa hiçbir yapılandırma dosyası okunmaz.
-f: ssh'ın komut yürütülmeden hemen önce arka plana geçmesini ister. Bu, ssh şifre veya parola isteyecekse ancak kullanıcının bunun arka planda çalışmasını istediği durumlarda kullanışlıdır. Bu seçenek -n seçeneğini ima eder. Uzak bir sitede X11 programlarını başlatmak için önerilen yol ssh -f host xterm gibi bir komut kullanmaktır.ExitOnForwardFailure yapılandırma seçeneği “yes” olarak ayarlanmışsa, -f ile başlatılan bir istemci, kendini arka plana almadan önce tüm uzak bağlantı noktası yönlendirmelerinin başarıyla kurulmasını bekleyecektir. Ayrıntılar için ssh_config(5) içindeki ForkAfterAuthentication açıklamasına bakın.
-G: ssh'ın Host ve Match bloklarını değerlendirdikten sonra yapılandırmasını yazdırmasına ve çıkmasına neden olur.-g: Uzak ana bilgisayarların yerel yönlendirilen bağlantı noktalarına bağlanmasına izin verir. Çoklanmış (multiplexed) bir bağlantıda kullanılıyorsa, bu seçenek ana (master) süreçte belirtilmelidir.-I pkcs11 Kullanıcı kimlik doğrulaması için anahtarlar sağlayan bir PKCS#11 belirteci ile iletişim kurmak için ssh'ın kullanması gereken PKCS#11 paylaşılan kitaplığını belirtir. Bu seçeneğin kullanılması UseKeychain özelliğini devre dışı bırakır.
-i identity_file Kamu anahtarı (public key) kimlik doğrulaması için kimliğin (özel anahtar - private key) okunduğu bir dosya seçer. Özel anahtar dosyası yerel olarak mevcut olmadığında ssh-agent(1) içine yüklenen ilgili özel anahtarı kullanmak için bir kamu anahtarı dosyası da belirtebilirsiniz. Varsayılan değer ~/.ssh/id_rsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ecdsa_sk, ~/.ssh/id_ed25519 ve ~/.ssh/id_ed25519_sk şeklindedir. Kimlik dosyaları, yapılandırma dosyasında ana bilgisayar bazında da belirtilebilir. Birden fazla -i seçeneğine (ve yapılandırma dosyalarında belirtilen birden fazla kimliğe) sahip olmak mümkündür. CertificateFile direktifi tarafından açıkça bir sertifika belirtilmemişse, ssh kimlik dosyası adlarına -cert.pub ekleyerek elde edilen dosya adından sertifika bilgilerini yüklemeyi de deneyecektir.
-J destination Önce destination tarafından tanımlanan sıçrama ana bilgisayarına bir ssh bağlantısı kurarak ve ardından oradan nihai hedefe bir TCP yönlendirmesi kurarak hedef ana bilgisayara bağlanır. Virgül karakterleriyle ayrılmış birden fazla sıçrama belirtilebilir. IPv6 adresleri, adres köşeli parantez içine alınarak belirtilebilir. Bu, bir ProxyJump yapılandırma direktifini belirtmek için bir kısayoldur. Komut satırında sağlanan yapılandırma direktiflerinin genellikle belirtilen sıçrama ana bilgisayarlarına değil, hedef ana bilgisayara uygulandığını unutmayın. Sıçrama ana bilgisayarları için yapılandırmayı belirtmek üzere ~/.ssh/config dosyasını kullanın.
-K: GSSAPI tabanlı kimlik doğrulamayı ve GSSAPI kimlik bilgilerinin sunucuya yönlendirilmesini (delegasyonunu) etkinleştirir.-k: GSSAPI kimlik bilgilerinin sunucuya yönlendirilmesini (delegasyonunu) devre dışı bırakır.-L [bind_address:]port:host:hostport -L [bind_address:]port:remote_socket -L local_socket:host:hostport -L local_socket:remote_socket Yerel (istemci) ana bilgisayardaki verilen TCP bağlantı noktasına veya Unix soketine yapılan bağlantıların, uzak taraftaki verilen ana bilgisayar ve bağlantı noktasına veya Unix soketine yönlendirileceğini belirtir. Bu, yerel taraftaki bir TCP bağlantı noktasını dinlemek için (isteğe bağlı olarak belirtilen bind_address adresine bağlı) veya bir Unix soketini dinlemek için bir soket tahsis ederek çalışır. Yerel bağlantı noktasına veya sokete her bağlantı yapıldığında, bağlantı güvenli kanal üzerinden yönlendirilir ve uzak makineden hostport ana bilgisayar bağlantı noktasına veya remote_socket Unix soketine bir bağlantı kurulur.
Bağlantı noktası yönlendirmeleri yapılandırma dosyasında da belirtilebilir. Yalnızca süper kullanıcı yetkili bağlantı noktalarını yönlendirebilir. IPv6 adresleri, adres köşeli parantez içine alınarak belirtilebilir.
Varsayılan olarak, yerel bağlantı noktası GatewayPorts ayarına uygun olarak bağlanır. Ancak, bağlantıyı belirli bir adrese bağlamak için açık bir bind_address kullanılabilir. “localhost” şeklindeki bind_address, dinleme bağlantı noktasının yalnızca yerel kullanım için bağlanacağını gösterirken, boş bir adres veya ‘*’ bağlantı noktasının tüm arayüzlerden kullanılabilir olması gerektiğini gösterir.
-l login_name Uzak makinede oturum açılacak kullanıcıyı belirtir. Bu, yapılandırma dosyasında ana bilgisayar bazında da belirtilebilir.
-M: ssh istemcisini bağlantı paylaşımı için “ana” (master) moda alır. Birden fazla -M seçeneği ssh'ı ana moda alır ancak çoğullama durumunu değiştiren (örneğin yeni bir oturum açan) her işlemden önce ssh-askpass(1) kullanılarak onay alınmasını gerektirir. Ayrıntılar için ssh_config(5) içindeki ControlMaster açıklamasına bakın.-m mac_spec Tercih sırasına göre belirtilen, virgülle ayrılmış bir MAC (ileti kimlik doğrulama kodu) algoritmaları listesi. Daha fazla bilgi için ssh_config(5) içindeki MACs anahtar kelimesine bakın.
-N: Uzak bir komut yürütmez. Bu, yalnızca bağlantı noktalarını yönlendirmek için kullanışlıdır. Ayrıntılar için ssh_config(5) içindeki SessionType açıklamasına bakın.-n: stdin'i /dev/null adresinden yönlendirir (aslında stdin'den okumayı engeller). ssh arka planda çalıştırıldığında bu kullanılmalıdır. Yaygın bir ipucu, bunu uzak bir makinede X11 programlarını çalıştırmak için kullanmaktır. Örneğin, ssh -n shadows.cs.hut.fi emacs & komutu shadows.cs.hut.fi üzerinde bir emacs başlatacak ve X11 bağlantısı şifrelenmiş bir kanal üzerinden otomatik olarak yönlendirilecektir. ssh programı arka plana alınacaktır. (ssh'ın bir şifre veya parola istemesi gerekiyorsa bu çalışmaz; ayrıca -f seçeneğine bakın.) Ayrıntılar için ssh_config(5) içindeki StdinNull açıklamasına bakın.-O ctl_cmd Etkin bir bağlantı çoğullama ana sürecini kontrol eder. -O seçeneği belirtildiğinde, ctl_cmd argümanı yorumlanır ve ana sürece iletilir. Geçerli komutlar şunlardır: “check” (ana sürecin çalıştığını kontrol eder), “forward” (komut yürütmeden yönlendirme talep eder), “cancel” (yönlendirmeleri iptal eder), “proxy” (proxy modunda çalışan bir çoğullama ana sürecine bağlanır), “exit” (ana sürecin çıkmasını talep eder) ve “stop” (ana sürecin daha fazla çoğullama talebi kabul etmeyi durdurmasını talep eder).
-o option Yapılandırma dosyasında kullanılan biçimde seçenekler vermek için kullanılabilir. Bu, ayrı bir komut satırı bayrağı bulunmayan seçenekleri belirtmek için kullanışlıdır. Aşağıda listelenen seçeneklerin tam ayrıntıları ve olası değerleri için ssh_config(5) kılavuzuna bakın.
AddKeysToAgent AddressFamily BatchMode BindAddress BindInterface CASignatureAlgorithms CanonicalDomains CanonicalizeFallbackLocal CanonicalizeHostname CanonicalizeMaxDots CanonicalizePermittedCNAMEs CertificateFile ChannelTimeout CheckHostIP Ciphers ClearAllForwardings Compression ConnectTimeout ConnectionAttempts ControlMaster ControlPath ControlPersist DynamicForward EnableEscapeCommandline EnableSSHKeysign EscapeChar ExitOnForwardFailure FingerprintHash ForkAfterAuthentication ForwardAgent ForwardX11 ForwardX11Timeout ForwardX11Trusted GSSAPIAuthentication GSSAPIDelegateCredentials GatewayPorts GlobalKnownHostsFile HashKnownHosts Host HostKeyAlgorithms HostKeyAlias HostbasedAcceptedAlgorithms HostbasedAuthentication Hostname IPQoS IdentitiesOnly IdentityAgent IdentityFile IgnoreUnknown Include KbdInteractiveAuthentication KbdInteractiveDevices KexAlgorithms KnownHostsCommand LocalCommand LocalForward LogLevel LogVerbose MACs NoHostAuthenticationForLocalhost NumberOfPasswordPrompts ObscureKeystrokeTiming PKCS11Provider PasswordAuthentication PermitLocalCommand PermitRemoteOpen Port PreferredAuthentications ProxyCommand ProxyJump ProxyUseFdpass PubkeyAcceptedAlgorithms PubkeyAuthentication RekeyLimit RemoteCommand RemoteForward RequestTTY RequiredRSASize RevokedHostKeys SecurityKeyProvider SendEnv ServerAliveCountMax ServerAliveInterval SessionType SetEnv StdinNull StreamLocalBindMask StreamLocalBindUnlink StrictHostKeyChecking SyslogFacility TCPKeepAlive Tag Tunnel TunnelDevice UpdateHostKeys UseKeychain User UserKnownHostsFile VerifyHostKeyDNS VisualHostKey XAuthLocation
-P tag: ssh_config(5) içinde yapılandırma seçmek için kullanılabilecek bir etiket adı belirtir. Daha fazla bilgi için ssh_config(5) içindeki Tag ve Match anahtar kelimelerine bakın.-p port Uzak ana bilgisayarda bağlanılacak bağlantı noktası (port). Bu, yapılandırma dosyasında ana bilgisayar bazında belirtilebilir.
-Q query_option Aşağıdaki özelliklerden biri tarafından desteklenen algoritmaları sorgular: cipher (desteklenen simetrik şifreleyiciler), cipher-auth (kimlik doğrulamalı şifrelemeyi destekleyen desteklenen simetrik şifreleyiciler), help (-Q bayrağıyla kullanılmak üzere desteklenen sorgu terimleri), mac (desteklenen mesaj bütünlüğü kodları), kex (anahtar değişim algoritmaları), key (anahtar türleri), key-ca-sign (sertifikalar için geçerli CA imza algoritmaları), key-cert (sertifika anahtar türleri), key-plain (sertifika olmayan anahtar türleri), key-sig (tüm anahtar türleri ve imza algoritmaları), protocol-version (desteklenen SSH protokol sürümleri) ve sig (desteklenen imza algoritmaları). Alternatif olarak, ssh_config(5) veya sshd_config(5) kılavuzlarından bir algoritma listesi alan herhangi bir anahtar kelime, ilgili query_option için bir takma ad olarak kullanılabilir.
-q: Sessiz mod. Çoğu uyarı ve teşhis mesajının engellenmesine neden olur.-R [bind_address:]port:host:hostport -R [bind_address:]port:local_socket -R remote_socket:host:hostport -R remote_socket:local_socket -R [bind_address:]port Uzak (sunucu) ana bilgisayardaki verilen TCP bağlantı noktasına veya Unix soketine yapılan bağlantıların yerel tarafa yönlendirileceğini belirtir.
Bu, uzak tarafta bir TCP bağlantı noktasını veya bir Unix soketini dinlemek için bir soket tahsis ederek çalışır. Bu bağlantı noktasına veya Unix soketine her bağlantı yapıldığında, bağlantı güvenli kanal üzerinden yönlendirilir ve yerel makineden hostport ana bilgisayar bağlantı noktası tarafından belirtilen açık bir hedefe ya da local_socket soketine bir bağlantı kurulur; veya açık bir hedef belirtilmemişse, ssh bir SOCKS 4/5 proxy'si gibi davranarak bağlantıları uzak SOCKS istemcisi tarafından talep edilen hedeflere yönlendirecektir.
Bağlantı noktası yönlendirmeleri yapılandırma dosyasında da belirtilebilir. Yetkili bağlantı noktaları yalnızca uzak makinede root olarak oturum açıldığında yönlendirilebilir. IPv6 adresleri, adres köşeli parantez içine alınarak belirtilebilir.
Varsayılan olarak, sunucudaki TCP dinleme soketleri yalnızca loopback arayüzüne bağlanacaktır. Bu, bir bind_address belirtilerek geçersiz kılınabilir. Boş bir bind_address veya ‘*’ adresi, uzak soketin tüm arayüzlerde dinlemesi gerektiğini gösterir. Uzak bir bind_address belirtilmesi, yalnızca sunucunun GatewayPorts seçeneği etkinse başarılı olacaktır (bkz. sshd_config(5)).
Port argümanı ‘0’ ise, dinleme portu sunucuda dinamik olarak tahsis edilecek ve çalışma zamanında istemciye bildirilecektir. -O forward ile birlikte kullanıldığında, tahsis edilen port standart çıktıya yazdırılacaktır.
-S ctl_path Bağlantı paylaşımı için bir kontrol soketinin konumunu veya bağlantı paylaşımını devre dışı bırakmak için “none” dizesini belirtir. Ayrıntılar için ssh_config(5) içindeki ControlPath ve ControlMaster açıklamalarına bakın.
-s: Uzak sistemde bir alt sistemin (subsystem) çağrılmasını talep etmek için kullanılabilir. Alt sistemler, SSH'ın diğer uygulamalar için güvenli bir taşıyıcı olarak kullanılmasını kolaylaştırır (örneğin sftp(1)). Alt sistem uzak komut olarak belirtilir. Ayrıntılar için ssh_config(5) içindeki SessionType açıklamasına bakın.-T: Sözde terminal (pseudo-terminal) tahsisini devre dışı bırakır.-t: Sözde terminal tahsisini zorlar. Bu, uzak bir makinede ekran tabanlı herhangi bir programı yürütmek için kullanılabilir; bu, örneğin menü hizmetleri uygularken çok kullanışlı olabilir. Birden fazla -t seçeneği, ssh'ın yerel bir tty'si olmasa bile tty tahsisini zorlar.-V: Sürüm numarasını görüntüler ve çıkar.-v: Ayrıntılı mod. ssh'ın ilerleyişi hakkında hata ayıklama mesajları yazdırmasına neden olur. Bu; bağlantı, kimlik doğrulama ve yapılandırma sorunlarının giderilmesinde yararlıdır. Birden fazla-v seçeneği ayrıntı düzeyini artırır.: Maksimum değer 3'tür.-W host:port İstemcideki standart girdi ve çıktının güvenli kanal üzerinden port üzerindeki host ana bilgisayarına yönlendirilmesini talep eder. -N, -T, ExitOnForwardFailure ve ClearAllForwardings seçeneklerini ima eder, ancak bunlar yapılandırma dosyasında veya -o komut satırı seçenekleri kullanılarak geçersiz kılınabilir.
-w local_tun[:remote_tun] İstemci (local_tun) ve sunucu (remote_tun) arasında belirtilen tun(4) aygıtlarıyla tünel aygıtı yönlendirmesi talep eder.
Aygıtlar sayısal kimlikle veya bir sonraki kullanılabilir tünel aygıtını kullanan “any” anahtar kelimesiyle belirtilebilir. remote_tun belirtilmemişse, varsayılan olarak “any” olur. Ayrıca ssh_config(5) içindeki Tunnel ve TunnelDevice direktiflerine bakın.
Tunnel direktifi ayarlanmamışsa, varsayılan tünel modu olan “point-to-point” moduna ayarlanacaktır. Farklı bir tünel yönlendirme modu isteniyorsa, bu -w seçeneğinden önce belirtilmelidir.
-X: X11 yönlendirmesini etkinleştirir. Bu, yapılandırma dosyasında ana bilgisayar bazında da belirtilebilir.X11 yönlendirmesi dikkatle etkinleştirilmelidir. Uzak ana bilgisayardaki dosya izinlerini (kullanıcının X yetkilendirme veritabanı için) atlama yeteneğine sahip kullanıcılar yönlendirilen bağlantı aracılığıyla yerel X11 ekranına erişebilir. Saldırgan daha sonra tuş vuruşu izleme gibi etkinlikleri gerçekleştirebilir.
Bu nedenle, X11 yönlendirmesi varsayılan olarak X11 SECURITY uzantısı kısıtlamalarına tabidir. Daha fazla bilgi için ssh -Y seçeneğine ve ssh_config(5) içindeki ForwardX11Trusted direktifine bakın.
-x: X11 yönlendirmesini devre dışı bırakır.-Y: Güvenilir X11 yönlendirmesini etkinleştirir. Güvenilir X11 yönlendirmeleri X11 SECURITY uzantısı denetimlerine tabi değildir.-y: Günlük bilgilerini syslog(3) sistem modülünü kullanarak gönderir. Varsayılan olarak bu bilgiler stderr'e gönderilir.
ssh ek olarak kullanıcı başına bir yapılandırma dosyasından ve sistem genelinde bir yapılandırma dosyasından yapılandırma verileri elde edebilir. Dosya biçimi ve yapılandırma seçenekleri ssh_config(5) kılavuzunda açıklanmıştır.
Kimlik Doğrulama
OpenSSH SSH istemcisi SSH protokolü 2'yi destekler.
Kimlik doğrulama için kullanılabilen yöntemler şunlardır: GSSAPI tabanlı kimlik doğrulama, ana bilgisayar tabanlı (host-based) kimlik doğrulama, kamu anahtarı (public key) kimlik doğrulaması, klavye-etkileşimli (keyboard-interactive) kimlik doğrulama ve şifre kimlik doğrulaması. Kimlik doğrulama yöntemleri yukarıda belirtilen sırada denenir, ancak varsayılan sırayı değiştirmek için PreferredAuthentications kullanılabilir.
Ana bilgisayar tabanlı kimlik doğrulama şu şekilde çalışır: Kullanıcının oturum açtığı makine uzak makinedeki /etc/hosts.equiv veya /etc/shosts.equiv dosyasında listeleniyorsa, kullanıcı root değilse ve kullanıcı adları her iki tarafta da aynıysa veya uzak makinedeki kullanıcının ev dizininde ~/.rhosts veya ~/.shosts dosyaları mevcutsa ve istemci makinesinin adını ve o makinedeki kullanıcının adını içeren bir satır içeriyorsa, kullanıcının oturum açması değerlendirilir. Ek olarak, oturum açmaya izin verilmesi için sunucunun istemcinin ana bilgisayar anahtarını doğrulayabilmesi gerekir (aşağıdaki /etc/ssh/ssh_known_hosts ve ~/.ssh/known_hosts açıklamasına bakın). Bu kimlik doğrulama yöntemi IP sahtekarlığı (spoofing), DNS sahtekarlığı ve yönlendirme sahtekarlığından kaynaklanan güvenlik açıklarını kapatır. [Yöneticiye not: /etc/hosts.equiv, ~/.rhosts ve genel olarak rlogin/rsh protokolü doğası gereği güvenli değildir ve güvenlik isteniyorsa devre dışı bırakılmalıdır.]
Kamu anahtarı kimlik doğrulaması şu şekilde çalışır: Şema, şifreleme ve şifre çözmenin ayrı anahtarlar kullanılarak yapıldığı ve şifre çözme anahtarının şifreleme anahtarından türetilmesinin mümkün olmadığı asimetrik şifrelemeye dayanır. Fikir, her kullanıcının kimlik doğrulama amacıyla bir kamu/özel anahtar çifti oluşturmasıdır. Sunucu kamu anahtarını bilir ve özel anahtarı yalnızca kullanıcı bilir. ssh; ECDSA, Ed25519 veya RSA algoritmalarından birini kullanarak kamu anahtarı kimlik doğrulama protokolünü otomatik olarak uygular.
~/.ssh/authorized_keys dosyası, oturum açmasına izin verilen kamu anahtarlarını listeler. Kullanıcı oturum açtığında, ssh programı sunucuya kimlik doğrulama için hangi anahtar çiftini kullanmak istediğini söyler. İstemci özel anahtara erişimi olduğunu kanıtlar ve sunucu ilgili kamu anahtarının hesabı kabul etmeye yetkili olduğunu kontrol eder.
Sunucu, kimlik doğrulama farklı bir yöntem kullanılarak tamamlandıktan sonra kamu anahtarı kimlik doğrulamasının başarılı olmasını engelleyen hatalar hakkında istemciyi bilgilendirebilir. Bunlar LogLevel DEBUG veya daha yüksek bir seviyeye getirilerek (örneğin -v bayrağı kullanılarak) görüntülenebilir.
Kullanıcı, ssh-keygen(1) programını çalıştırarak anahtar çiftini oluşturur. Bu işlem özel anahtarı kullanıcının ev dizinindeki ~/.ssh/id_ecdsa (ECDSA), ~/.ssh/id_ecdsa_sk (kimlik doğrulayıcı barındırmalı ECDSA), ~/.ssh/id_ed25519 (Ed25519), ~/.ssh/id_ed25519_sk (kimlik doğrulayıcı barındırmalı Ed25519) veya ~/.ssh/id_rsa (RSA) dosyalarında saklar ve kamu anahtarını ~/.ssh/id_ecdsa.pub (ECDSA), ~/.ssh/id_ecdsa_sk.pub (kimlik doğrulayıcı barındırmalı ECDSA), ~/.ssh/id_ed25519.pub (Ed25519), ~/.ssh/id_ed25519_sk.pub (kimlik doğrulayıcı barındırmalı Ed25519) veya ~/.ssh/id_rsa.pub (RSA) dosyalarında saklar. Kullanıcı daha sonra kamu anahtarını uzak makinedeki ev dizininde bulunan ~/.ssh/authorized_keys dosyasına kopyalamalıdır. authorized_keys dosyası geleneksel ~/.rhosts dosyasına karşılık gelir ve satırlar çok uzun olabilse de her satırda bir anahtar bulunur. Bundan sonra, kullanıcı şifre vermeden oturum açabilir.
Kamu anahtarı kimlik doğrulamasının bir çeşidi sertifika kimlik doğrulaması şeklinde mevcuttur: bir kamu/özel anahtar kümesi yerine imzalı sertifikalar kullanılır. Bunun avantajı, birçok kamu/özel anahtar yerine tek bir güvenilir sertifika yetkilisinin (CA) kullanılabilmesidir. Daha fazla bilgi için ssh-keygen(1) kılavuzunun CERTIFICATES bölümüne bakın.
Kamu anahtarı veya sertifika kimlik doğrulamasını kullanmanın en uygun yolu bir kimlik doğrulama aracısı kullanmak olabilir. Daha fazla bilgi için ssh-agent(1) kılavuzuna ve (isteğe bağlı olarak) ssh_config(5) içindeki AddKeysToAgent direktifine bakın.
Klavye-etkileşimli kimlik doğrulama şu şekilde çalışır: Sunucu rastgele bir "meydan okuma" (challenge) metni gönderir ve muhtemelen birden fazla kez yanıt ister. Klavye-etkileşimli kimlik doğrulama örnekleri arasında BSD Kimlik Doğrulaması (bkz. login.conf(5)) ve PAM (bazı OpenBSD dışı sistemler) yer alır.
Son olarak, diğer kimlik doğrulama yöntemleri başarısız olursa, ssh kullanıcıdan bir şifre ister. Şifre kontrol edilmek üzere uzak ana bilgisayara gönderilir; ancak tüm iletişim şifrelendiğinden, şifre ağda dinleme yapan biri tarafından görülemez.
ssh, şimdiye kadar kullanıldığı tüm ana bilgisayarların kimliklerini içeren bir veritabanını otomatik olarak korur ve kontrol eder. Ana bilgisayar anahtarları kullanıcının ev dizinindeki ~/.ssh/known_hosts dosyasında saklanır. Ek olarak, bilinen ana bilgisayarlar için /etc/ssh/ssh_known_hosts dosyası otomatik olarak kontrol edilir. Yeni ana bilgisayarlar kullanıcının dosyasına otomatik olarak eklenir. Bir ana bilgisayarın kimliği değişirse, ssh bu konuda uyarır ve şifreleme yöntemini atlatmak için kullanılabilecek sunucu sahtekarlığını veya man-in-the-middle (ortadaki adam) saldırılarını önlemek için şifre kimlik doğrulamasını devre dışı bırakır. StrictHostKeyChecking seçeneği, ana bilgisayar anahtarı bilinmeyen veya değişmiş olan makinelere oturum açmayı kontrol etmek için kullanılabilir.
Kullanıcının kimliği sunucu tarafından kabul edildiğinde, sunucu ya etkileşimli olmayan bir oturumda verilen komutu yürütür ya da hiçbir komut belirtilmemişse makinede oturum açarak kullanıcıya etkileşimli bir oturum olarak normal bir kabuk sunar. Uzak komut veya kabuk ile olan tüm iletişim otomatik olarak şifrelenecektir.
Etkileşimli bir oturum talep edilirse, ssh varsayılan olarak yalnızca istemcinin bir sözde terminali (pty) olduğunda etkileşimli oturumlar için bir sözde terminal talep edecektir. Bu davranışı geçersiz kılmak için -T ve -t bayrakları kullanılabilir.
Bir sözde terminal tahsis edilmişse, kullanıcı aşağıda belirtilen kaçış karakterlerini kullanabilir.
Bir sözde terminal tahsis edilmemişse, oturum şeffaftır ve ikili verileri güvenilir bir şekilde aktarmak için kullanılabilir. Çoğu sistemde kaçış karakterini “none” olarak ayarlamak, bir tty kullanılsa bile oturumu şeffaf hale getirecektir.
Uzak makinedeki komut veya kabuk çıktığında ve tüm X11 ve TCP bağlantıları kapatıldığında oturum sonlandırılır.
Kaçış Karakterleri
Bir sözde terminal talep edildiğinde, ssh bir kaçış karakteri kullanımı aracılığıyla bir dizi işlevi destekler.
Tek bir tilde karakteri ~~ olarak veya tilde işaretini aşağıda açıklananlar dışındaki bir karakterle takip ederek gönderilebilir. Kaçış karakterinin özel olarak yorumlanması için her zaman bir yeni satırı takip etmesi gerekir. Kaçış karakteri, EscapeChar yapılandırma direktifi kullanılarak yapılandırma dosyalarında veya -e seçeneğiyle komut satırında değiştirilebilir.
Desteklenen kaçışlar (varsayılan ‘~’ varsayılarak) şunlardır:
~. Bağlantıyı keser.
~^Z ssh'ı arka plana alır.
~# Yönlendirilen bağlantıları listeler.
~& Yönlendirilen bağlantıların / X11 oturumlarının sonlandırılmasını beklerken oturum kapatıldığında ssh'ı arka plana alır.
~? Kaçış karakterlerinin bir listesini görüntüler.
~B Uzak sisteme bir BREAK sinyali gönderir (yalnızca karşı taraf destekliyorsa kullanışlıdır).
~C Komut satırını açar. Şu anda bu, -L, -R ve -D seçeneklerini kullanarak port yönlendirmelerinin eklenmesine izin verir (yukarıya bakın). Ayrıca yerel için -KL[bind_address:]port, uzak için -KR[bind_address:]port ve dinamik port yönlendirmeleri için -KD[bind_address:]port ile mevcut port yönlendirmelerinin iptal edilmesine izin verir. !komut, ssh_config(5) içinde PermitLocalCommand seçeneği etkinleştirilmişse kullanıcının yerel bir komut yürütmesine izin verir. -h seçeneği kullanılarak temel yardım mevcuttur.
~R Bağlantının yeniden anahtarlanmasını (rekeying) talep eder (yalnızca karşı taraf destekliyorsa kullanışlıdır).
~V Hatalar stderr'e yazılırken ayrıntı düzeyini (LogLevel) azaltır.
~v Hatalar stderr'e yazılırken ayrıntı düzeyini (LogLevel) artırır.
Tcp Yönlendirme
İsteğe bağlı TCP bağlantılarının güvenli bir kanal üzerinden yönlendirilmesi komut satırında veya bir yapılandırma dosyasında belirtilebilir. TCP yönlendirmenin olası bir uygulaması, bir posta sunucusuna güvenli bir bağlantı sağlamaktır; bir diğeri ise güvenlik duvarlarından geçmektir.
Aşağıdaki örnekte, bağlandığı IRC sunucusu şifreli iletişimi doğrudan desteklemese bile, bir IRC istemcisi için iletişimin şifrelenmesine bakıyoruz. Bu şu şekilde çalışır: Kullanıcı ssh kullanarak uzak ana bilgisayara bağlanır ve bağlantıyı yönlendirmek için kullanılacak portları belirtir. Bundan sonra programı yerel olarak başlatmak mümkündür ve ssh bağlantıyı şifreleyecek ve uzak sunucuya yönlendirecektir.
Aşağıdaki örnek, istemciden “server.example.com” adresindeki bir IRC sunucusuna bir IRC oturumunu tüneller, “#users” kanalına katılır, takma adı “pinky” yapar ve standart IRC portu olan 6667'yi kullanır:
$ ssh -f -L 6667:localhost:6667 server.example.com sleep 10 $ irc -c '#users' pinky IRC/127.0.0.1
-f seçeneği ssh'ı arka plana alır ve tüneli kullanacak programı başlatmak için bir süre (örnekte 10 saniye) tanımak üzere uzak komut “sleep 10” belirtilir. Belirtilen süre içinde hiçbir bağlantı yapılmazsa ssh çıkacaktır.
X11 YÖNLENDİRME ForwardX11 değişkeni “yes” olarak ayarlanmışsa (veya yukarıdaki -X, -x ve -Y seçeneklerinin açıklamasına bakın) ve kullanıcı X11 kullanıyorsa (DISPLAY çevre değişkeni ayarlanmışsa), X11 ekranına olan bağlantı uzak tarafa otomatik olarak yönlendirilir; böylece kabuktan (veya komuttan) başlatılan tüm X11 programları şifreli kanaldan geçecek ve gerçek X sunucusuna olan bağlantı yerel makineden yapılacaktır. Kullanıcı DISPLAY değişkenini manuel olarak ayarlamamalıdır. X11 bağlantılarının yönlendirilmesi komut satırında veya yapılandırma dosyalarında yapılandırılabilir.
ssh tarafından ayarlanan DISPLAY değeri sunucu makinesini gösterecektir, ancak sıfırdan büyük bir ekran numarasına sahip olacaktır. Bu normaldir ve ssh'ın bağlantıları şifreli kanal üzerinden yönlendirmek için sunucu makinesinde bir “proxy” X sunucusu oluşturması nedeniyle gerçekleşir.
ssh ayrıca sunucu makinesinde Xauthority verilerini otomatik olarak kuracaktır. Bu amaçla, rastgele bir yetkilendirme tanımlama bilgisi (cookie) üretecek, bunu sunucudaki Xauthority içinde saklayacak ve yönlendirilen tüm bağlantıların bu tanımlama bilgisini taşıdığını doğrulayacak ve bağlantı açıldığında bunu gerçek tanımlama bilgisi ile değiştirecektir. Gerçek kimlik doğrulama tanımlama bilgisi asla sunucu makinesine gönderilmez (ve düz metin olarak hiçbir tanımlama bilgisi gönderilmez).
ForwardAgent değişkeni “yes” olarak ayarlanmışsa (veya yukarıdaki -A ve -a seçeneklerinin açıklamasına bakın) ve kullanıcı bir kimlik doğrulama aracısı kullanıyorsa, aracıya olan bağlantı uzak tarafa otomatik olarak yönlendirilir.
Ana Bilgisayar Anahtarlarını Doğrulama
Bir sunucuya ilk kez bağlanırken, sunucunun kamu anahtarının bir parmak izi kullanıcıya sunulur (StrictHostKeyChecking seçeneği devre dışı bırakılmadığı sürece). Parmak izleri ssh-keygen(1) kullanılarak belirlenebilir:
$ ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key
Parmak izi zaten biliniyorsa, eşleştirilebilir ve anahtar kabul edilebilir veya reddedilebilir. Sunucu için yalnızca eski (MD5) parmak izleri mevcutsa, eşleştirmek üzere parmak izi algoritmasını düşürmek için ssh-keygen(1) -E seçeneği kullanılabilir.
Yalnızca parmak izi dizelerine bakarak ana bilgisayar anahtarlarını karşılaştırmanın zorluğu nedeniyle, ana bilgisayar anahtarlarını görsel olarak, rastgele sanat (random art) kullanarak karşılaştırma desteği de vardır. VisualHostKey seçeneği “yes” olarak ayarlanarak, oturumun kendisi etkileşimli olsun veya olmasın, bir sunucuya her girişte küçük bir ASCII grafiği görüntülenir. Bilinen bir sunucunun ürettiği deseni öğrenerek, kullanıcı tamamen farklı bir desen görüntülendiğinde ana bilgisayar anahtarının değiştiğini kolayca anlayabilir. Ancak bu desenler kesin olmadığından, hatırlanan desene benzer görünen bir desen, ana bilgisayar anahtarının aynı olduğuna dair yalnızca yüksek bir olasılık verir, garanti bir kanıt sunmaz.
Bilinen tüm ana bilgisayarlar için parmak izlerinin ve rastgele sanatlarının bir listesini almak için aşağıdaki komut satırı kullanılabilir:
$ ssh-keygen -lv -f ~/.ssh/known_hosts
Parmak izi bilinmiyorsa, alternatif bir doğrulama yöntemi mevcuttur: DNS tarafından doğrulanan SSH parmak izleri. Bir bölge dosyasına (zonefile) ek bir kaynak kaydı (RR), SSHFP eklenir ve bağlanan istemci, parmak izini sunulan anahtarın parmak iziyle eşleştirebilir.
Bu örnekte, bir istemciyi “host.example.com” sunucusuna bağlıyoruz. SSHFP kaynak kayıtları önce host.example.com için bölge dosyasına eklenmelidir:
$ ssh-keygen -r host.example.com.
Çıktı satırlarının bölge dosyasına eklenmesi gerekecektir. Bölgenin parmak izi sorgularına yanıt verdiğini kontrol etmek için:
$ dig -t SSHFP host.example.com
Son olarak istemci bağlanır:
$ ssh -o "VerifyHostKeyDNS ask" host.example.com [...] Matching host key fingerprint found in DNS. Are you sure you want to continue connecting (yes/no)?
Daha fazla bilgi için ssh_config(5) içindeki VerifyHostKeyDNS seçeneğine bakın.
SSH TABANLI SANAL ÖZEL AĞLAR ssh, iki ağın güvenli bir şekilde birleştirilmesini sağlayan, tun(4) ağ sözde aygıtını kullanan Sanal Özel Ağ (VPN) tünelleme desteği içerir. sshd_config(5) yapılandırma seçeneği PermitTunnel, sunucunun bunu destekleyip desteklemediğini ve hangi düzeyde (katman 2 veya 3 trafiği) desteklediğini kontrol eder.
Aşağıdaki örnek, 192.168.1.15 adresindeki uzak ağa geçiş kapısında çalışan SSH sunucusu izin verdiği takdirde, 10.1.1.1'den 10.1.1.2'ye noktadan noktaya (point-to-point) bir bağlantı kullanarak yerel 10.0.50.0/24 ağını uzak 10.0.99.0/24 ağıyla birleştirecektir.
İstemcide:
ssh -f -w 0:1 192.168.1.15 true
ifconfig tun0 10.1.1.1 10.1.1.2 netmask 255.255.255.252
route add 10.0.99.0/24 10.1.1.2
Sunucuda:
ifconfig tun1 10.1.1.2 10.1.1.1 netmask 255.255.255.252
route add 10.0.50.0/24 10.1.1.1
İstemci erişimi, /root/.ssh/authorized_keys dosyası (aşağıya bakın) ve PermitRootLogin sunucu seçeneği aracılığıyla daha hassas bir şekilde ayarlanabilir. Aşağıdaki girdi, PermitRootLogin “forced-commands-only” olarak ayarlanmışsa, “jane” kullanıcısından tun(4) aygıtı 1 üzerinde ve “john” kullanıcısından tun aygıtı 2 üzerinde bağlantılara izin verecektir:
tunnel="1",command="sh /etc/netstart tun1" ssh-rsa ... jane tunnel="2",command="sh /etc/netstart tun2" ssh-rsa ... john
SSH tabanlı bir kurulum oldukça fazla ek yük getirdiğinden, kablosuz VPN'ler gibi geçici kurulumlar için daha uygun olabilir. Daha kalıcı VPN'ler, ipsecctl(8) ve isakmpd(8) gibi araçlar tarafından daha iyi sağlanır.
Ortam Değişkenleri
ssh normalde aşağıdaki çevre değişkenlerini ayarlayacaktır:
DISPLAY DISPLAY değişkeni X11 sunucusunun konumunu gösterir. ssh tarafından otomatik olarak “hostname:n” biçimindeki bir değeri gösterecek şekilde ayarlanır; burada “hostname” kabuğun çalıştığı ana bilgisayarı gösterir ve ‘n’ ≥ 1 olan bir tam sayıdır. ssh bu özel değeri X11 bağlantılarını güvenli kanal üzerinden yönlendirmek için kullanır. Kullanıcı normalde DISPLAY değişkenini açıkça ayarlamamalıdır, çünkü bu X11 bağlantısını güvensiz hale getirecektir (ve kullanıcının gerekli yetkilendirme tanımlama bilgilerini manuel olarak kopyalamasını gerektirecektir).
HOME Kullanıcının ev dizininin yoluna ayarlanır.
LOGNAME USER değişkeninin eşanlamlısıdır; bu değişkeni kullanan sistemlerle uyumluluk için ayarlanır.
MAIL Kullanıcının posta kutusunun yoluna ayarlanır.
PATH ssh derlenirken belirtilen varsayılan PATH değerine ayarlanır.
SSH_ASKPASS ssh'ın bir parolaya ihtiyacı varsa ve bir terminalden çalıştırılmışsa parolayı geçerli terminalden okuyacaktır. ssh'ın kendisiyle ilişkili bir terminali yoksa ancak DISPLAY ve SSH_ASKPASS ayarlanmışsa, SSH_ASKPASS tarafından belirtilen programı yürütecek ve parolayı okumak için bir X11 penceresi açacaktır. Bu, özellikle bir .xsession veya ilgili betikten ssh çağrılırken kullanışlıdır. (Bazı makinelerde bunun çalışması için girdinin /dev/null adresinden yönlendirilmesi gerekebileceğini unutmayın.)
SSH_ASKPASS_REQUIRE Bir askpass programının kullanımı üzerinde daha fazla kontrol sağlar. Bu değişken “never” olarak ayarlanırsa, ssh asla bir askpass programı kullanmaya çalışmaz. “prefer” olarak ayarlanırsa, ssh şifre talep ederken TTY yerine askpass programını kullanmayı tercih edecektir. Son olarak, değişken “force” olarak ayarlanırsa, DISPLAY ayarlanıp ayarlanmadığına bakılmaksızın tüm parola girdileri için askpass programı kullanılacaktır.
SSH_AUTH_SOCK Aracıyla iletişim kurmak için kullanılan bir UNIX-domain soketinin yolunu tanımlar.
SSH_CONNECTION Bağlantının istemci ve sunucu uçlarını tanımlar. Değişken boşlukla ayrılmış dört değer içerir: istemci IP adresi, istemci bağlantı noktası numarası, sunucu IP adresi ve sunucu bağlantı noktası numarası.
SSH_ORIGINAL_COMMAND Zorunlu bir komut yürütülürse, bu değişken orijinal komut satırını içerir. Orijinal argümanları ayıklamak için kullanılabilir.
SSH_TTY Bu, geçerli kabuk veya komutla ilişkili tty'nin adına (aygıtın yolu) ayarlanır. Geçerli oturumun bir tty'si yoksa, bu değişken ayarlanmaz.
SSH_TUNNEL İstemci tarafından tünel yönlendirmesi talep edilmişse, atanan arayüz adlarını içerecek şekilde sshd(8) tarafından isteğe bağlı olarak ayarlanır.
SSH_USER_AUTH sshd(8) tarafından isteğe bağlı olarak ayarlanan bu değişken, kullanılan tüm kamu anahtarları da dahil olmak üzere, oturum kurulduğunda başarıyla kullanılan kimlik doğrulama yöntemlerini listeleyen bir dosyanın yol adını içerebilir.
TZ Daemon başlatıldığında ayarlanmışsa, bu değişken geçerli saat dilimini gösterecek şekilde ayarlanır (yani daemon değeri yeni bağlantılara aktarır).
USER Oturum açan kullanıcının adına ayarlanır.
Ek olarak, dosya mevcutsa ve kullanıcıların ortamlarını değiştirmelerine izin veriliyorsa, ssh ~/.ssh/environment dosyasını okur ve ortama “DEGISKEN_ADI=deger” biçimindeki satırları ekler. Daha fazla bilgi için sshd_config(5) içindeki PermitUserEnvironment seçeneğine bakın.
Dosyalar
~/.rhosts Bu dosya ana bilgisayar tabanlı kimlik doğrulama için kullanılır (yukarıya bakın). Bazı makinelerde, kullanıcının ev dizini bir NFS bölümündeyse, sshd(8) bunu root olarak okuduğundan bu dosyanın herkes tarafından okunabilir olması gerekebilir. Ek olarak, bu dosya kullanıcıya ait olmalı ve başka hiç kimse için yazma izinlerine sahip olmamalıdır. Çoğu makine için önerilen izin, kullanıcı için okuma/yazma ve başkaları tarafından erişilemez olmasıdır.
~/.shosts Bu dosya .rhosts ile tamamen aynı şekilde kullanılır, ancak rlogin/rsh ile oturum açmaya izin vermeden ana bilgisayar tabanlı kimlik doğrulamasına izin verir.
~/.ssh/ Bu dizin, kullanıcıya özgü tüm yapılandırma ve kimlik doğrulama bilgileri için varsayılan konumdur. Bu dizinin tüm içeriğini gizli tutmak için genel bir gereklilik yoktur, ancak önerilen izinler kullanıcı için okuma/yazma/yürütme ve başkaları tarafından erişilemez olmasıdır.
~/.ssh/authorized_keys Bu kullanıcı olarak oturum açmak için kullanılabilecek kamu anahtarlarını (ECDSA, Ed25519, RSA) listeler. Bu dosyanın biçimi sshd(8) kılavuz sayfasında açıklanmıştır. Bu dosya son derece hassas değildir, ancak önerilen izinler kullanıcı için okuma/yazma ve başkaları tarafından erişilemez olmasıdır.
~/.ssh/config Bu, kullanıcı başına yapılandırma dosyasıdır. Dosya biçimi ve yapılandırma seçenekleri ssh_config(5) kılavuzunda açıklanmıştır. Kötüye kullanım potansiyeli nedeniyle, bu dosyanın katı izinleri olmalıdır: kullanıcı için okuma/yazma ve başkaları tarafından yazılamaz.
~/.ssh/environment Çevre değişkenleri için ek tanımlar içerir; yukarıdaki ORTAM DEĞİŞKENLERİ bölümüne bakın.
~/.ssh/id_ecdsa ~/.ssh/id_ecdsa_sk ~/.ssh/id_ed25519 ~/.ssh/id_ed25519_sk ~/.ssh/id_rsa Kimlik doğrulama için özel anahtarı içerir. Bu dosyalar hassas veriler içerir ve kullanıcı tarafından okunabilir olmalı ancak başkaları tarafından erişilemez olmalıdır (okuma/yazma/yürütme). ssh, başkaları tarafından erişilebilirse bir özel anahtar dosyasını görmezden gelecektir. Anahtar oluşturulurken, bu dosyanın hassas kısmını AES-128 kullanarak şifrelemek için kullanılacak bir parola belirtmek mümkündür.
~/.ssh/id_ecdsa.pub ~/.ssh/id_ecdsa_sk.pub ~/.ssh/id_ed25519.pub ~/.ssh/id_ed25519_sk.pub ~/.ssh/id_rsa.pub Kimlik doğrulama için kamu anahtarını içerir. Bu dosyalar hassas değildir ve herkes tarafından okunabilir (ancak okunması gerekmez).
~/.ssh/known_hosts Kullanıcının oturum açtığı, sistem genelindeki bilinen ana bilgisayar anahtarları listesinde henüz bulunmayan tüm ana bilgisayarlar için ana bilgisayar anahtarlarının bir listesini içerir. Bu dosyanın biçiminin daha fazla ayrıntısı için sshd(8) kılavuzuna bakın.
~/.ssh/rc Bu dosyadaki komutlar, kullanıcı oturum açtığında, kullanıcının kabuğu (veya komutu) başlatılmadan hemen önce ssh tarafından yürütülür. Daha fazla bilgi için sshd(8) kılavuz sayfasına bakın.
/etc/hosts.equiv Bu dosya ana bilgisayar tabanlı kimlik doğrulama içindir (yukarıya bakın). Yalnızca root tarafından yazılabilir olmalıdır.
/etc/shosts.equiv Bu dosya hosts.equiv ile tamamen aynı şekilde kullanılır, ancak rlogin/rsh ile oturum açmaya izin vermeden ana bilgisayar tabanlı kimlik doğrulamasına izin verir.
/etc/ssh/ssh_config Sistem genelindeki yapılandırma dosyası. Dosya biçimi ve yapılandırma seçenekleri ssh_config(5) kılavuzunda açıklanmıştır.
/etc/ssh/ssh_host_ecdsa_key /etc/ssh/ssh_host_ed25519_key /etc/ssh/ssh_host_rsa_key Bu dosyalar, ana bilgisayar anahtarlarının özel kısımlarını içerir ve ana bilgisayar tabanlı kimlik doğrulama için kullanılır.
/etc/ssh/ssh_known_hosts Sistem genelindeki bilinen ana bilgisayar anahtarları listesi. Bu dosya, sistem yöneticisi tarafından kuruluştaki tüm makinelerin genel ana bilgisayar anahtarlarını içerecek şekilde hazırlanmalıdır. Herkes tarafından okunabilir olmalıdır. Bu dosyanın biçiminin daha fazla ayrıntısı için sshd(8) kılavuzuna bakın.
/etc/ssh/sshrc Bu dosyadaki komutlar, kullanıcı oturum açtığında, kullanıcının kabuğu (veya komutu) başlatılmadan hemen önce ssh tarafından yürütülür. Daha fazla bilgi için sshd(8) kılavuz sayfasına bakın.
Çıkış Durumu
ssh, uzak komutun çıkış durumuyla veya bir hata oluşmuşsa 255 ile çıkar.
Ayrıca Bakınız
scp(1), sftp(1), ssh-add(1), ssh-agent(1), ssh-keygen(1), ssh-keyscan(1), tun(4), ssh_config(5), ssh-keysign(8), sshd(8)
Standartlar
S. Lehtinen and C. Lonvick, The Secure Shell (SSH) Protocol Assigned Numbers, RFC 4250, January 2006.
T. Ylonen and C. Lonvick, The Secure Shell (SSH) Protocol Architecture, RFC 4251, January 2006.
T. Ylonen and C. Lonvick, The Secure Shell (SSH) Authentication Protocol, RFC 4252, January 2006.
T. Ylonen and C. Lonvick, The Secure Shell (SSH) Transport Layer Protocol, RFC 4253, January 2006.
T. Ylonen and C. Lonvick, The Secure Shell (SSH) Connection Protocol, RFC 4254, January 2006.
J. Schlyter and W. Griffin, Using DNS to Securely Publish Secure Shell (SSH) Key Fingerprints, RFC 4255, January 2006.
F. Cusack and M. Forssen, Generic Message Exchange Authentication for the Secure Shell Protocol (SSH), RFC 4256, January 2006.
J. Galbraith and P. Remaker, The Secure Shell (SSH) Session Channel Break Extension, RFC 4335, January 2006.
M. Bellare, T. Kohno, and C. Namprempre, The Secure Shell (SSH) Transport Layer Encryption Modes, RFC 4344, January 2006.
B. Harris, Improved Arcfour Modes for the Secure Shell (SSH) Transport Layer Protocol, RFC 4345, January 2006.
M. Friedl, N. Provos, and W. Simpson, Diffie-Hellman Group Exchange for the Secure Shell (SSH) Transport Layer Protocol, RFC 4419, March 2006.
J. Galbraith and R. Thayer, The Secure Shell (SSH) Public Key File Format, RFC 4716, November 2006.
D. Stebila and J. Green, Elliptic Curve Algorithm Integration in the Secure Shell Transport Layer, RFC 5656, December 2009.
A. Perrig and D. Song, Hash Visualization: a New Technique to improve Real-World Security, 1999, International Workshop on Cryptographic Techniques and E-Commerce (CrypTEC '99).
Yazarlar
OpenSSH, Tatu Ylonen tarafından yapılan orijinal ve ücretsiz ssh 1.2.12 sürümünün bir türevidir. Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos, Theo de Raadt ve Dug Song birçok hatayı giderdi, daha yeni özellikleri yeniden ekledi ve OpenSSH'i geliştirdi. Markus Friedl, SSH protokol sürümleri 1.5 ve 2.0 desteğine katkıda bulundu.
macOS 26.4 December 4, 2024 macOS 26.4