SSH (1) | Perintah Umum Pedoman | SSH (1) |
NAME
ssh - klien OpenSSH SSH (program remote login) SINOPSIS
ssh | [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address:] port] [E-log_file] [-e escape_char] [-F configfile] [-I pkcs11] [-i identity_file] [- L [bind_address:] Port: host: hostport] [-l login_name] [-m mac_spec] [-O ctl_cmd] [opsi-o] [-p port] [-Q cipher | cipher-auth | mac | Kex | kunci ] [-R [bind_address:] Port: host: hostport] [-S ctl_path] [W-host: port] [-w local_tun [: remote_tun]] [user @] hostname [command] |
KETERANGAN
ssh (client SSH) adalah sebuah program untuk login ke mesin remote dan mengeksekusi perintah pada mesin remote.
Hal ini dimaksudkan untuk menggantikan rlogin dan rsh, dan menyediakan
komunikasi terenkripsi yang aman antara dua host terpercaya melalui
jaringan yang tidak aman. Koneksi X11 dan port TCP sewenang-wenang juga dapat diteruskan melalui saluran aman. ssh menghubungkan dan log ke hostname yang ditentukan (dengan nama pengguna opsional).
Pengguna harus membuktikan / identitasnya nya ke mesin remote
menggunakan salah satu dari beberapa metode tergantung pada versi
protokol yang digunakan (lihat di bawah). Jika perintah yang ditentukan, dieksekusi pada host remote bukannya shell login. Pilihannya adalah sebagai berikut: - -1
- Angkatan ssh untuk mencoba protokol versi 1 saja.
- -2
- Angkatan ssh untuk mencoba protokol versi 2 saja.
- -4
- Angkatan ssh hanya menggunakan alamat IPv4.
- -6
- Angkatan ssh hanya menggunakan alamat IPv6.
- -A
- Mengaktifkan forwarding koneksi agen otentikasi. Hal ini juga dapat ditentukan pada basis per-host di file konfigurasi.
Agen forwarding harus diaktifkan dengan hati-hati. Pengguna dengan kemampuan untuk memotong hak akses file pada remote host (untuk agen soket UNIX-domain) dapat mengakses agen lokal melalui sambungan diteruskan.
Seorang penyerang tidak dapat memperoleh bahan kunci dari agen, namun
mereka dapat melakukan operasi pada tombol yang memungkinkan mereka
untuk mengotentikasi menggunakan identitas dimuat ke agen.
- -A
- Menonaktifkan forwarding koneksi agen otentikasi.
- -B bind_address
- Gunakan bind_address pada mesin lokal sebagai alamat sumber koneksi. Hanya berguna pada sistem dengan lebih dari satu alamat.
- -C
- Permintaan kompresi dari semua data (termasuk stdin, stdout, stderr, dan data untuk diteruskan X11 dan koneksi TCP). Algoritma kompresi adalah sama yang digunakan oleh gzip (1) , dan "tingkat" dapat dikendalikan oleh opsi CompressionLevel
untuk protokol versi 1. Kompresi yang diinginkan pada baris modem dan
koneksi yang lambat lainnya, tetapi hanya akan memperlambat hal pada
jaringan cepat . Nilai default dapat diatur pada host-by-tuan dasar dalam file konfigurasi; melihat pilihan kompresi.
- -C cipher_spec
- Memilih spesifikasi cipher untuk mengenkripsi sesi. Protocol versi 1 memungkinkan spesifikasi dari sebuah cipher tunggal. Nilai-nilai yang didukung adalah "3des", "blowfish", dan "des". Untuk protokol versi 2, cipher_spec adalah daftar dipisahkan koma cipher tercantum dalam urutan preferensi. Lihat kata kunci Ciphers di ssh_config (5) untuk informasi lebih lanjut.
- -D [bind_address:] pelabuhan
- Menentukan lokal "dinamis" application-level port forwarding. Ini bekerja dengan mengalokasikan socket untuk mendengarkan port pada sisi lokal, opsional terikat pada bind_address ditentukan.
Setiap kali sambungan dibuat ke port ini, sambungan diteruskan melalui
saluran aman, dan protokol aplikasi ini kemudian digunakan untuk
menentukan di mana untuk terhubung ke dari mesin remote. Saat ini protokol SOCKS4 dan SOCKS5 didukung, dan ssh akan bertindak sebagai server SOCKS. Hanya akar dapat meneruskan port istimewa. Pelabuhan forwardings dinamis juga dapat ditentukan dalam file konfigurasi. Alamat IPv6 dapat ditentukan dengan melampirkan alamat dalam tanda kurung siku. Hanya superuser dapat meneruskan port istimewa. Secara default, port lokal terikat sesuai dengan GatewayPorts pengaturan. Namun, bind_address eksplisit dapat digunakan untuk mengikat sambungan ke alamat tertentu. The bind_address
dari "localhost" menunjukkan bahwa port mendengarkan terikat untuk
penggunaan lokal saja, sedangkan alamat kosong atau '*' menunjukkan
bahwa port harus tersedia dari semua antarmuka.
- E-log_file
- Menambahkan log debug untuk log_file bukan standard error.
- -E escape_char
- Mengatur karakter escape untuk sesi dengan pty (default: '
~
'). Karakter escape hanya diakui di awal baris. ('Karakter escape diikuti oleh sebuah titik .
') menutup koneksi; diikuti dengan kontrol-Z menunda sambungan; dan diikuti dengan sendirinya mengirimkan karakter escape sekali. Mengatur karakter untuk "none" menonaktifkan setiap lolos dan membuat sesi sepenuhnya transparan.
- -F configfile
- Menentukan alternatif file konfigurasi per-user. Jika sebuah file konfigurasi yang diberikan pada baris perintah, file konfigurasi system-wide (/ etc / ssh / ssh_config) akan diabaikan. Default untuk file konfigurasi per-user adalah ~ / .ssh / config.
- -F
- Permintaan ssh untuk pergi ke latar belakang sebelum perintah eksekusi. Hal ini berguna jika ssh akan meminta password atau passphrase, tetapi pengguna menginginkannya di latar belakang. Ini berarti-n. Cara yang disarankan untuk memulai program X11 di lokasi terpencil adalah dengan sesuatu seperti ssh-f tuan xterm. Jika opsi konfigurasi ExitOnForwardFailure diatur ke "ya", maka klien dimulai dengan-f akan menunggu untuk semua pelabuhan ke depan jauh akan berhasil didirikan sebelum menempatkan dirinya di latar belakang.
- -G
- Memungkinkan remote host untuk terhubung ke port diteruskan lokal. Jika digunakan pada koneksi multiplexing, maka opsi ini harus ditentukan pada proses master.
- -I pkcs11
- Tentukan PKCS # 11 bersama ssh perpustakaan harus digunakan untuk berkomunikasi dengan token PKCS # 11 yang menyediakan kunci pribadi pengguna RSA.
- -I identity_file
- Memilih file dari mana identitas (private key) untuk otentikasi kunci publik dibaca. Standarnya adalah ~ / .ssh / identity untuk protokol versi 1, dan ~ / .ssh / id_dsa, ~ / .ssh / id_ecdsa, ~ / .ssh/id_ed25519 dan ~ / .ssh / id_rsa untuk protokol versi 2. File Identity mungkin juga dapat ditentukan pada basis per-host di file konfigurasi. Hal ini dimungkinkan untuk memiliki beberapa opsi-i (dan banyak identitas yang ditentukan dalam file konfigurasi). Ssh juga akan mencoba untuk memuat informasi sertifikat dari nama file yang diperoleh dengan menambahkan-cert.pub untuk nama file identitas.
- -K
- Mengaktifkan otentikasi GSSAPI berbasis dan forwarding (delegasi) dari GSSAPI kredensial ke server.
- -K
- Menonaktifkan forwarding (delegasi) dari GSSAPI kredensial ke server.
- -L [bind_address:] Port: host: hostport
- Menentukan bahwa port yang diberikan di tingkat lokal (client) host untuk diteruskan ke diberikan host dan port di sisi remote. Ini bekerja dengan mengalokasikan socket untuk mendengarkan port pada sisi lokal, opsional terikat pada bind_address ditentukan. Setiap kali sambungan dibuat ke port ini, sambungan diteruskan melalui saluran aman, dan sambungan dibuat untuk menjadi tuan rumah hostport port dari mesin remote. Pelabuhan forwardings juga dapat ditentukan pada file konfigurasi. Alamat IPv6 dapat ditentukan dengan melampirkan alamat dalam tanda kurung siku. Hanya superuser dapat meneruskan port istimewa. Secara default, port lokal terikat sesuai dengan GatewayPorts pengaturan. Namun, bind_address eksplisit dapat digunakan untuk mengikat sambungan ke alamat tertentu. The bind_address
dari "localhost" menunjukkan bahwa port mendengarkan terikat untuk
penggunaan lokal saja, sedangkan alamat kosong atau '*' menunjukkan
bahwa port harus tersedia dari semua antarmuka.
- -L login_name
- Menentukan pengguna untuk log in sebagai pada mesin remote. Hal ini juga dapat ditentukan pada basis per-host di file konfigurasi.
- -M
- Menempatkan klien ssh menjadi "master" modus untuk berbagi koneksi. Pilihan Multiple-M tempat ssh ke "master" modus dengan konfirmasi diperlukan sebelum koneksi budak diterima. Lihat keterangan dari ControlMaster di ssh_config (5) untuk rincian.
- Mac_spec-m
Selain itu, untuk protokol versi 2 daftar dipisahkan koma dari MAC
(kode otentikasi pesan) algoritma dapat ditentukan dalam urutan pilihan. Lihat Mac kata kunci untuk informasi lebih lanjut.
- -N
- Jangan mengeksekusi perintah remote. Hal ini berguna untuk hanya port forwarding (protokol versi 2 saja).
- -N
- Pengalihan stdin dari / dev / null (sebenarnya, mencegah membaca dari stdin). Ini harus digunakan ketika ssh dijalankan di latar belakang. Trik umum adalah dengan menggunakan ini untuk menjalankan program X11 pada mesin remote. Misalnya, ssh-n emacs shadows.cs.hut.fi & akan memulai emacs pada shadows.cs.hut.fi, dan koneksi X11 akan secara otomatis diteruskan melalui saluran terenkripsi. Program ssh akan dimasukkan ke dalam latar belakang. (Ini tidak bekerja jika ssh perlu untuk meminta password atau passphrase, lihat juga opsi-f.)
- -O ctl_cmd
- Mengontrol proses master koneksi multiplexing aktif. Ketika-O opsi ditentukan, argumen ctl_cmd ditafsirkan dan diteruskan ke proses master.
Perintah yang valid adalah: "memeriksa" (memeriksa bahwa proses master
berjalan), "maju" (permintaan forwardings tanpa perintah eksekusi),
"membatalkan" (membatalkan forwardings), "exit" (permintaan master untuk
keluar), dan "berhenti "(meminta master untuk berhenti menerima
permintaan multiplexing lanjut).
- Opsi-o
- Dapat digunakan untuk memberikan pilihan dalam format yang digunakan dalam file konfigurasi. Hal ini berguna untuk pilihan yang tidak ada terpisah bendera baris perintah menentukan. Untuk rincian lengkap tentang opsi yang tercantum di bawah, dan nilai-nilai mereka mungkin, lihat ssh_config (5) .
- AddressFamily
- BatchMode
- BindAddress
- CanonicalDomains
- CanonicalizeFallbackLocal
- CanonicalizeHostname
- CanonicalizeMaxDots
- CanonicalizePermittedCNAMEs
- ChallengeResponseAuthentication
- CheckHostIP
- Sandi
- Cipher
- ClearAllForwardings
- Kompresi
- CompressionLevel
- ConnectionAttempts
- ConnectTimeout
- ControlMaster
- ControlPath
- ControlPersist
- DynamicForward
- EscapeChar
- ExitOnForwardFailure
- ForwardAgent
- ForwardX11
- ForwardX11Timeout
- ForwardX11Trusted
- GatewayPorts
- GlobalKnownHostsFile
- GSSAPIAuthentication
- GSSAPIDelegateCredentials
- HashKnownHosts
- Tuan rumah
- HostbasedAuthentication
- HostKeyAlgorithms
- HostKeyAlias
- Hostname
- IdentityFile
- IdentitiesOnly
- IPQoS
- KbdInteractiveAuthentication
- KbdInteractiveDevices
- KexAlgorithms
- LocalCommand
- LocalForward
- LogLevel
- MACS
- Pertandingan
- NoHostAuthenticationForLocalhost
- NumberOfPasswordPrompts
- PasswordAuthentication
- PermitLocalCommand
- PKCS11Provider
- Pelabuhan
- PreferredAuthentications
- Protokol
- ProxyCommand
- ProxyUseFdpass
- PubkeyAuthentication
- RekeyLimit
- RemoteForward
- RequestTTY
- RhostsRSAAuthentication
- RSAAuthentication
- SendEnv
- ServerAliveInterval
- ServerAliveCountMax
- StreamLocalBindMask
- StreamLocalBindUnlink
- StrictHostKeyChecking
- TCPKeepAlive
- Terowongan
- TunnelDevice
- UsePrivilegedPort
- Pemakai
- UserKnownHostsFile
- VerifyHostKeyDNS
- VisualHostKey
- XAuthLocation
- Port-p
- Port untuk menghubungkan ke pada remote host. Hal ini dapat ditentukan pada basis per-host file konfigurasi.
- -Q cipher | cipher-auth | mac | Kex | kunci
- Pertanyaan ssh untuk algoritma didukung untuk ditentukan versi 2 Fitur yang tersedia adalah:. Cipher (cipher didukung simetris), cipher-auth (didukung cipher simetris yang mendukung dikonfirmasi enkripsi), mac (didukung kode integritas pesan), Kex (algoritma pertukaran kunci ), kunci (key jenis).
- -Q
- Mode diam. Penyebab paling peringatan dan pesan diagnostik harus ditekan.
- -R [bind_address:] Port: host: hostport
- Menentukan bahwa port tertentu pada remote (Server) host untuk diteruskan ke host dan port yang diberikan pada sisi lokal. Ini bekerja dengan mengalokasikan socket untuk mendengarkan port
pada sisi remote, dan setiap kali sambungan dibuat ke port ini,
sambungan diteruskan melalui saluran aman, dan sambungan dibuat untuk menjadi tuan rumah hostport port dari mesin lokal. Pelabuhan forwardings juga dapat ditentukan pada file konfigurasi. Port istimewa dapat diteruskan hanya ketika login sebagai root pada mesin remote. Alamat IPv6 dapat ditentukan dengan melampirkan alamat dalam tanda kurung siku.
Secara default, soket mendengarkan pada server akan terikat ke antarmuka loopback saja. Hal ini dapat diganti dengan menentukan bind_address a. Sebuah bind_address kosong, atau alamat ' *
', menunjukkan bahwa soket remote harus mendengarkan pada semua antarmuka. Menentukan bind_address terpencil hanya akan berhasil jika opsi server GatewayPorts diaktifkan (lihat sshd_config (5) ).
Jika argumen port ' 0
', mendengarkan pelabuhan akan dialokasikan secara dinamis pada server dan melaporkan kepada klien pada saat dijalankan. Ketika digunakan bersama-sama dengan-O meneruskan port yang dialokasikan akan dicetak ke standard output.
- Ctl_path-S
- Menentukan lokasi soket kontrol untuk berbagi koneksi, atau string "none" untuk menonaktifkan berbagi koneksi. Lihat deskripsi ControlPath dan ControlMaster di ssh_config (5) untuk rincian.
- -S
- Bisa digunakan untuk meminta doa dari subsistem pada sistem remote.
Subsistem adalah fitur dari protokol SSH2 yang memfasilitasi penggunaan
SSH sebagai transportasi yang aman untuk aplikasi lain (misalnya sftp (1) ). Subsistem ditentukan sebagai perintah remote.
- -T
- Nonaktifkan alokasi pseudo-tty.
- -T
- Angkatan alokasi pseudo-tty.
Ini dapat digunakan untuk menjalankan program berbasis layar
sewenang-wenang pada mesin remote, yang dapat sangat berguna, misalnya
ketika menerapkan layanan menu. Multiple-t alokasi opsi kekuatan tty, bahkan jika ssh tidak memiliki tty lokal.
- -V
- Menampilkan nomor versi dan keluar.
- -V
- Modus verbose. Penyebab ssh untuk mencetak debug pesan tentang kemajuannya. Hal ini membantu dalam koneksi debugging, otentikasi, dan masalah konfigurasi. Semakin banyak opsi-v meningkatkan bertele-tele. Maksimal adalah 3.
- W-host: port
- Meminta agar standar input dan output pada klien diteruskan untuk menjadi tuan rumah pada port melalui saluran aman. Menyiratkan-N,-T, ExitOnForwardFailure dan ClearAllForwardings. Bekerja dengan Protocol versi 2 saja.
- -W local_tun [: remote_tun]
- Permintaan terowongan perangkat forwarding dengan ditentukan tun (4) perangkat antara klien (local_tun) dan server (remote_tun).
Perangkat dapat ditentukan oleh ID numerik atau kata kunci "apapun",
yang menggunakan perangkat yang tersedia terowongan berikutnya. Jika remote_tun tidak ditentukan, standarnya ke "apapun". Lihat juga Tunnel dan TunnelDevice arahan di ssh_config (5) . Jika direktif Tunnel tidak ditentukan, sudah diatur ke modus terowongan default, yaitu "point-to-point".
- -X
- Memungkinkan X11 forwarding. Hal ini juga dapat ditentukan pada basis per-host di file konfigurasi. X11 forwarding harus diaktifkan dengan hati-hati.
Pengguna dengan kemampuan untuk memotong hak akses file pada remote
host (untuk X database otorisasi pengguna) dapat mengakses tampilan X11
lokal melalui sambungan diteruskan. Seorang penyerang kemudian mungkin dapat melakukan kegiatan seperti monitoring keystroke.
Untuk alasan ini, X11 forwarding dikenakan pembatasan ekstensi X11 KEAMANAN secara default. Silakan lihat opsi ssh-Y dan direktif ForwardX11Trusted di ssh_config (5) untuk informasi lebih lanjut.
- -X
- Menonaktifkan X11 forwarding.
- -Y
- Memungkinkan X11 forwarding Web. Trusted forwardings X11 tidak tunduk pada kontrol ekstensi KEAMANAN X11.
- -Y
- Mengirim informasi log menggunakan syslog (3) modul sistem. Secara default informasi ini dikirim ke stderr.
ssh tambahan dapat memperoleh data konfigurasi dari file konfigurasi per-user dan file konfigurasi sistem. Format file dan opsi konfigurasi yang dijelaskan dalam ssh_config (5) . Otentikasi
Klien OpenSSH SSH mendukung protokol SSH 1 dan 2. Default adalah dengan
menggunakan protokol 2 saja, meskipun hal ini dapat diubah melalui opsi
Protocol di ssh_config (5) atau -1 dan -2 pilihan (lihat di atas).
Kedua protokol mendukung metode otentikasi yang sama, tetapi protokol 2
adalah default karena memberikan mekanisme tambahan untuk kerahasiaan
(lalu lintas dienkripsi menggunakan AES, 3DES, Blowfish, CAST128, atau
Arcfour) dan integritas (hmac-md5, sha1-hmac, hmac- SHA2-256,
hmac-SHA2-512, umac-64, umac-128, hmac-RIPEMD160). Protokol 1 tidak memiliki mekanisme yang kuat untuk memastikan integritas sambungan.
Metode yang tersedia untuk otentikasi adalah: otentikasi berbasis
GSSAPI, otentikasi berbasis host, otentikasi kunci publik, otentikasi
tantangan-respon, dan otentikasi password.
Metode otentikasi dicoba dalam urutan yang disebutkan di atas, meskipun
protokol 2 memiliki opsi konfigurasi untuk mengubah urutan default: PreferredAuthentications. Otentikasi berbasis host bekerja sebagai berikut: Jika mesin user log in dari terdaftar di / etc / hosts.equiv atau / etc / shosts.equiv pada mesin remote, dan nama-nama pengguna yang sama di kedua sisi, atau jika rhosts file ~ /. atau shosts ~ /.
ada di direktori home pengguna pada mesin remote dan mengandung baris
yang berisi nama komputer klien dan nama pengguna pada mesin itu,
pengguna dianggap untuk login. Selain itu, server harus mampu memverifikasi tombol host klien (lihat deskripsi / etc / ssh / ssh_known_hosts dan ~ / .ssh / known_hosts, bawah) untuk login diijinkan. Metode otentikasi ini menutup lubang keamanan karena IP spoofing, DNS spoofing, dan routing spoofing. [Catatan untuk administrator: rhosts / etc / hosts.equiv, ~ /, dan protokol rlogin / rsh pada umumnya, secara inheren tidak aman dan harus dinonaktifkan jika keamanan yang diinginkan..]
Otentikasi kunci publik bekerja sebagai berikut: Skema ini didasarkan
pada kriptografi kunci publik, menggunakan kriptografi di mana enkripsi
dan dekripsi dilakukan dengan menggunakan kunci terpisah, dan itu tidak
layak untuk mendapatkan kunci dekripsi dari kunci enkripsi. Idenya adalah bahwa setiap pengguna membuat kunci publik / privat pasangan untuk keperluan otentikasi. Server tahu kunci publik, dan hanya pengguna mengetahui kunci privat. Ssh
mengimplementasikan protokol otentikasi kunci publik secara otomatis,
menggunakan salah satu DSA, ECDSA, ED25519 atau RSA algoritma. Protokol 1 dibatasi untuk hanya menggunakan kunci RSA, tetapi protokol 2 Mei menggunakan. Bagian SEJARAH dari ssl (8) berisi diskusi singkat mengenai DSA dan RSA algoritma. File ~ / .ssh / authorized_keys daftar kunci publik yang diizinkan untuk penebangan masuk Ketika pengguna log in, program ssh memberitahu server yang pasangan kunci itu ingin gunakan untuk otentikasi.
Klien membuktikan bahwa ia memiliki akses ke kunci pribadi dan cek
server yang kunci publik yang sesuai berwenang untuk menerima account. Pengguna membuat / nya sepasang kunci dengan menjalankan ssh-keygen (1) . Ini menyimpan kunci pribadi di ~ / .ssh / identity (protokol 1), ~ / .ssh / id_dsa (protokol 2 DSA), ~ / .ssh / id_ecdsa (protokol 2 ECDSA), ~ / .ssh/id_ed25519 (protokol 2 ED25519), atau ~ / .ssh / id_rsa (protokol 2 RSA) dan menyimpan kunci publik di ~ / .ssh / identity.pub (protokol 1), ~ / .ssh / id_dsa.pub (protokol 2 DSA), ~ / .ssh / id_ecdsa.pub (protokol 2 ECDSA), ~ / .ssh/id_ed25519.pub (protokol 2 ED25519), atau ~ / .ssh / id_rsa.pub (protokol 2 RSA) dalam direktori home user. Pengguna kemudian harus menyalin kunci publik ke ~ / .ssh / authorized_keys di / direktori home nya pada mesin remote. File authorized_keys sesuai dengan file konvensional ~ /. Rhosts, dan memiliki satu kunci per baris, meskipun garis bisa sangat lama. Setelah ini, pengguna dapat log in tanpa memberikan password.
Sebuah variasi pada otentikasi kunci publik tersedia dalam bentuk
otentikasi sertifikat: bukannya satu set kunci publik / privat,
sertifikat yang ditandatangani digunakan.
Hal ini memiliki keuntungan bahwa otoritas sertifikasi terpercaya
tunggal dapat digunakan di tempat banyak kunci publik / privat. Lihat SERTIFIKAT bagian ssh-keygen (1) untuk informasi lebih lanjut. Cara yang paling mudah untuk menggunakan kunci publik atau otentikasi sertifikat mungkin dengan agen otentikasi. Lihat ssh-agent (1) untuk informasi lebih lanjut.
Otentikasi tantangan-respon bekerja sebagai berikut: Server mengirimkan
sewenang-wenang "tantangan" teks, dan meminta tanggapan. Protokol 2 memungkinkan beberapa tantangan dan tanggapan; protokol 1 dibatasi hanya satu tantangan / tanggapan. Contoh otentikasi tantangan-respon termasuk BSD Authentication (lihat login.conf (5) ) dan PAM (beberapa sistem non-OpenBSD). Akhirnya, jika metode otentikasi lain gagal, ssh meminta pengguna untuk password. Sandi akan dikirim ke remote host untuk memeriksa; Namun, karena semua komunikasi akan dienkripsi, password tidak dapat dilihat oleh seseorang mendengarkan pada jaringan. ssh secara otomatis menjaga dan memeriksa identifikasi database yang berisi semua host yang pernah digunakan dengan. Kunci host disimpan di ~ / .ssh / known_hosts dalam direktori home user. Selain itu, file / etc / ssh / ssh_known_hosts secara otomatis diperiksa untuk diketahui host. Setiap host baru secara otomatis ditambahkan ke file pengguna. Jika identifikasi sebuah host pernah berubah, ssh
memperingatkan tentang hal ini dan menonaktifkan otentikasi password
untuk mencegah Server spoofing atau man-in-the-middle serangan, yang
sebenarnya dapat digunakan untuk menghindari enkripsi. The StrictHostKeyChecking pilihan dapat digunakan untuk mengontrol login ke mesin yang host key tidak diketahui atau telah berubah.
Ketika identitas pengguna telah diterima oleh server, server kemudian
mengeksekusi perintah yang diberikan, atau log ke dalam mesin dan
memberikan pengguna shell yang normal pada mesin remote. Semua komunikasi dengan perintah remote atau shell akan otomatis dienkripsi. Jika terminal semu telah dialokasikan (sesi login normal), pengguna dapat menggunakan karakter escape dicatat di bawah. Jika tidak ada pseudo-tty telah dialokasikan, sesi transparan dan dapat digunakan untuk andal mentransfer data biner.
Pada kebanyakan sistem, pengaturan karakter escape untuk "none" juga
akan membuat sesi transparan bahkan jika tty yang digunakan. Sesi ini berakhir ketika perintah atau shell pada keluar mesin remote dan semua koneksi X11 dan TCP telah ditutup. KARAKTER ESCAPE
Ketika-terminal semu telah diminta, ssh mendukung sejumlah fungsi melalui penggunaan karakter escape. Sebuah karakter tilde tunggal dapat dikirim sebagai ~ ~ atau dengan mengikuti tilde oleh karakter selain yang dijelaskan di bawah ini. Karakter escape harus selalu mengikuti baris baru harus ditafsirkan sebagai khusus. Karakter escape dapat diubah dalam file konfigurasi menggunakan konfigurasi direktif EscapeChar atau pada baris perintah oleh-e opsi. Lolos yang didukung (dengan asumsi default ' ~
') adalah: - ~.
- Putus.
- ~ ^ Z
- Latar Belakang ssh.
- ~ #
- Daftar diteruskan koneksi.
- ~ &
- Latar Belakang ssh di logout ketika menunggu sesi koneksi / X11 diteruskan untuk mengakhiri.
- ~?
- Menampilkan daftar karakter escape.
- ~ B
- Kirim BREAK ke sistem remote (hanya berguna untuk protokol SSH versi 2 dan jika rekan mendukungnya).
- ~ C
- Baris perintah Open. Saat ini memungkinkan penambahan pelabuhan forwardings menggunakan-L, R-and-D pilihan (lihat di atas). Hal ini juga memungkinkan pembatalan port-forwardings ada dengan-KL [bind_address:] port untuk lokal,-KR [bind_address:] port untuk jarak jauh dan-KD [bind_address:].! Port untuk port-forwardings dinamis perintah memungkinkan pengguna untuk mengeksekusi perintah lokal jika opsi PermitLocalCommand diaktifkan di ssh_config (5) . Bantuan dasar tersedia, menggunakan opsi-h.
- ~ R
- Permintaan rekeying sambungan (hanya berguna untuk protokol SSH versi 2 dan jika rekan mendukungnya).
- ~ V
- Mengurangi kelengkapan informasi (LogLevel) ketika kesalahan yang ditulis ke stderr.
- ~ V
- Meningkatkan kelengkapan informasi (LogLevel) ketika kesalahan yang ditulis ke stderr.
TCP FORWARDING
Forwarding koneksi TCP sewenang-wenang atas saluran aman dapat ditentukan baik pada baris perintah atau dalam file konfigurasi. Salah satu aplikasi yang mungkin dari TCP forwarding adalah koneksi yang aman ke server mail; lain akan melalui firewall.
Dalam contoh di bawah ini, kita melihat mengenkripsi komunikasi antara
klien dan server IRC, meskipun server IRC tidak langsung mendukung
komunikasi terenkripsi. Ini bekerja sebagai berikut: pengguna terhubung ke host remote menggunakan ssh, menentukan port yang akan digunakan untuk meneruskan koneksi ke server remote.
Setelah itu adalah mungkin untuk memulai layanan yang akan dienkripsi
pada komputer klien, menghubungkan ke port lokal yang sama, dan ssh akan mengenkripsi dan meneruskan koneksi. Contoh berikut terowongan sesi IRC dari komputer klien "127.0.0.1" (localhost) ke remote server "server.example.com": $ Ssh-f-L 1234: localhost: 6667 server.example.com sleep 10
$ Irc-c '# pengguna-p 1234 pinky 127.0.0.1
Ini terowongan koneksi ke server IRC "server.example.com", bergabung
dengan channel "# pengguna", julukan "pinky", menggunakan port 1234.
Tidak peduli pelabuhan yang digunakan, asalkan itu lebih besar dari 1023
(ingat , hanya root yang dapat membuka soket pada port istimewa) dan
tidak bertentangan dengan port sudah digunakan. Sambungan diteruskan ke port 6667 pada server jauh, karena itulah port standar untuk layanan IRC. Latar belakang opsi-f ssh
dan perintah remote "sleep 10" ditentukan untuk memungkinkan jumlah
waktu (10 detik, dalam contoh) untuk memulai layanan yang akan
terowongan. Jika tidak ada koneksi yang dibuat dalam waktu yang ditentukan, ssh akan keluar. X11 FORWARDING
Jika variabel ForwardX11 diatur ke "ya" (atau melihat deskripsi-X,-x, dan Y-pilihan di atas) dan pengguna menggunakan X11 (variabel lingkungan DISPLAY
diatur), koneksi ke layar X11 secara otomatis diteruskan ke sisi remote
sedemikian rupa bahwa setiap program X11 mulai dari shell (atau
perintah) akan melalui saluran terenkripsi, dan koneksi ke server
sebenarnya X akan dibuat dari mesin lokal. Pengguna tidak harus secara manual mengatur DISPLAY. Forwarding koneksi X11 dapat dikonfigurasi pada baris perintah atau dalam file konfigurasi. Nilai DISPLAY ditetapkan oleh ssh akan mengarah ke mesin server, tetapi dengan sejumlah tampilan yang lebih besar dari nol. Ini adalah normal, dan terjadi karena ssh menciptakan "proxy" X server pada mesin server untuk meneruskan koneksi melalui saluran terenkripsi.
ssh juga akan otomatis mengatur Data Xauthority pada mesin server.
Untuk tujuan ini, maka akan menghasilkan otorisasi kue acak,
menyimpannya dalam Xauthority di server, dan memverifikasi bahwa koneksi
diteruskan membawa cookie ini dan menggantinya dengan cookie nyata
ketika koneksi dibuka. Cookie otentikasi nyata tidak pernah dikirim ke mesin server (dan tidak ada cookie yang dikirim di dataran).
Jika variabel ForwardAgent diatur ke "ya" (atau melihat deskripsi-A dan-a pilihan di atas) dan pengguna menggunakan agen otentikasi, koneksi ke agen secara otomatis diteruskan ke sisi remote. VERIFIKASI KEYS HOST
Ketika melakukan koneksi ke server untuk pertama kalinya, sidik jari
dari kunci publik server disajikan kepada pengguna (kecuali StrictHostKeyChecking opsi telah dinonaktifkan). Sidik jari dapat ditentukan dengan menggunakan ssh-keygen (1) : $ Ssh-keygen-l-f / etc / ssh / ssh_host_rsa_key
Jika sidik jari yang sudah diketahui, hal itu dapat dicocokkan dan kunci dapat diterima atau ditolak.
Karena kesulitan membandingkan kunci host hanya dengan melihat hex
string, ada juga dukungan untuk membandingkan kunci host visual,
menggunakan seni acak. Dengan menetapkan opsi VisualHostKey
ke "ya", grafis ASCII kecil akan ditampilkan pada setiap login ke
server, tidak peduli apakah sesi itu sendiri adalah interaktif atau
tidak.
Dengan belajar pola server dikenal menghasilkan, pengguna dapat dengan
mudah mengetahui bahwa kunci host telah berubah ketika pola yang sama
sekali berbeda ditampilkan.
Karena pola-pola ini tidak jelas Namun, pola yang terlihat mirip dengan
pola diingat hanya memberikan kemungkinan yang baik bahwa tombol host
adalah sama, tidak dijamin bukti.
Untuk mendapatkan daftar sidik jari bersama dengan seni acak mereka
untuk semua host yang dikenal, baris perintah berikut dapat digunakan: $ Ssh-keygen-lv-f ~ / .ssh / known_hosts
Jika sidik jari tidak diketahui, metode alternatif verifikasi tersedia: sidik jari SSH diverifikasi oleh DNS.
Sebuah catatan sumber daya tambahan (RR), SSHFP, ditambahkan ke
zonefile dan menghubungkan klien mampu mencocokkan sidik jari dengan
kunci disajikan. Dalam contoh ini, kami menghubungkan klien ke server, "host.example.com". Catatan sumber daya SSHFP pertama harus ditambahkan ke zonefile untuk host.example.com: $ Ssh-keygen-r host.example.com.
Garis Output harus ditambahkan ke zonefile tersebut. Untuk memeriksa bahwa zona ini menjawab pertanyaan sidik jari: $ Menggali-t SSHFP host.example.com
Akhirnya menghubungkan klien: $ Ssh-o "VerifyHostKeyDNS bertanya" host.example.com
[...]
Pencocokan tuan kunci sidik jari yang ditemukan di DNS.
Apakah Anda yakin ingin melanjutkan menghubungkan (ya / tidak)?
Lihat pilihan VerifyHostKeyDNS di ssh_config (5) untuk informasi lebih lanjut. SSH BERBASIS JARINGAN VIRTUAL PRIVATE
ssh berisi dukungan untuk Virtual Private Network (VPN) tunneling menggunakan tun (4) jaringan pseudo-perangkat, yang memungkinkan dua jaringan yang akan bergabung dengan aman. The sshd_config (5) opsi konfigurasi PermitTunnel mengatur apakah server mendukung ini, dan pada tingkat apa (layer 2 atau 3 lalu lintas).
Contoh berikut ini akan menghubungkan jaringan klien 10.0.50.0/24
dengan remote jaringan 10.0.99.0/24 menggunakan koneksi point-to-point
dari 10.1.1.1 ke 10.1.1.2, asalkan server SSH berjalan pada pintu
gerbang ke jaringan remote , di 192.168.1.15, memungkinkan. Pada klien: # Ssh-f-w 00:01 192.168.1.15 benar
# 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
Pada server: # 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
Akses klien dapat lebih peka melalui root / .ssh / / authorized_keys (lihat di bawah) dan pilihan server PermitRootLogin. Entri berikut akan mengizinkan koneksi pada tun (4) perangkat 1 dari pengguna "jane" dan tun device 2 dari user "john", jika PermitRootLogin diatur ke "dipaksa-perintah-only": tunnel = "1", perintah = "sh / etc / netstart tun1" ssh-rsa ... jane
tunnel = "2", perintah = "sh / etc / netstart tun2" ssh-rsa ... john
Karena setup berbasis SSH memerlukan cukup banyak overhead, mungkin
lebih cocok untuk setup sementara, seperti untuk VPN nirkabel. Lebih VPN permanen baik yang disediakan oleh alat seperti ipsecctl (8) dan isakmpd (8) . LINGKUNGAN
ssh biasanya akan mengatur variabel lingkungan berikut:- DISPLAY
- Variabel DISPLAY menunjukkan lokasi server X11. Hal ini secara otomatis ditetapkan oleh ssh
untuk menunjuk ke nilai bentuk "hostname: n", di mana "hostname"
menunjukkan host mana shell berjalan, dan 'n' adalah bilangan bulat ≥ 1 ssh menggunakan nilai khusus ini untuk meneruskan X11. koneksi melalui saluran aman. Pengguna biasanya harus tidak diatur secara eksplisit DISPLAY,
karena itu akan membuat koneksi X11 tidak aman (dan akan meminta user
untuk secara manual menyalin cookie otorisasi yang diperlukan).
- RUMAH
- Diset ke path direktori home user.
- LOGNAME
- Sinonim untuk USER; ditetapkan untuk kompatibilitas dengan sistem yang menggunakan variabel ini.
- MAIL
- Set untuk jalan kotak pesan pengguna.
- PATH
- Set ke PATH default, sebagaimana ditentukan ketika kompilasi ssh.
- SSH_ASKPASS
- Jika ssh membutuhkan passphrase, itu akan membaca passphrase dari terminal saat ini jika itu dijalankan dari terminal. Jika ssh tidak memiliki terminal yang berhubungan dengan itu tetapi DISPLAY dan SSH_ASKPASS ditetapkan, itu akan mengeksekusi program yang telah ditentukan oleh SSH_ASKPASS dan membuka jendela X11 untuk membaca passphrase. Hal ini sangat berguna saat memanggil ssh dari xsession. Atau script yang terkait. (Perhatikan bahwa pada beberapa mesin mungkin perlu untuk mengarahkan masukan dari / dev / null untuk membuat karya ini.)
- SSH_AUTH_SOCK
- Mengidentifikasi jalur dari UNIX socket-domain yang digunakan untuk berkomunikasi dengan agen.
- SSH_CONNECTION
- Mengidentifikasi ujung klien dan server dari koneksi. Variabel berisi empat ruang terpisah nilai: alamat IP klien, klien nomor port, alamat IP server dan nomor port server.
- SSH_ORIGINAL_COMMAND
- Variabel ini berisi baris perintah asli jika perintah paksa dijalankan. Hal ini dapat digunakan untuk mengekstrak argumen asli.
- SSH_TTY
- Hal ini diatur ke nama tty (path ke perangkat) terkait dengan shell saat ini atau perintah. Jika sesi saat ini tidak memiliki tty, variabel ini tidak diatur.
- TZ
- Variabel ini diatur untuk menunjukkan zona waktu hadir jika itu diatur
ketika daemon dimulai (yaitu daemon melewati nilai pada koneksi baru).
- PENGGUNA
- Set untuk nama pengguna logging masuk
Selain itu,
ssh membaca
~ / .ssh / lingkungan , dan menambahkan baris format "varname = nilai" lingkungan jika file
ada dan pengguna yang diizinkan untuk mengubah lingkungan mereka. Untuk informasi lebih lanjut, lihat
PermitUserEnvironment pilihan di
sshd_config (5) .
FILES
- ~ /. Rhosts
- File ini digunakan untuk otentikasi berbasis host (lihat di atas). Pada beberapa mesin file ini mungkin perlu dibaca dunia jika direktori home user adalah pada partisi NFS, karena sshd (8) membacanya sebagai root. Selain itu, file ini harus dimiliki oleh pengguna, dan tidak harus memiliki hak akses tulis untuk orang lain. Izin
yang direkomendasikan untuk sebagian besar mesin yang membaca / menulis
bagi pengguna, dan tidak dapat diakses oleh orang lain.
- ~ /. Shosts
- File ini digunakan dengan cara yang persis sama seperti . rhosts , namun memungkinkan otentikasi berbasis host tanpa memungkinkan Login dengan rlogin / rsh.
- ~ /. Ssh /
- Direktori ini adalah lokasi default untuk semua konfigurasi pengguna tertentu dan informasi otentikasi. Tidak
ada persyaratan umum untuk menjaga seluruh isi direktori rahasia ini,
namun izin yang direkomendasikan adalah membaca / menulis / mengeksekusi
bagi pengguna, dan tidak dapat diakses oleh orang lain.
- ~ / .ssh / Authorized_keys
- Daftar kunci publik (DSA, ECDSA, ED25519, RSA) yang dapat digunakan untuk log in sebagai pengguna ini. Format file ini dijelaskan dalam sshd (8) halaman manual. File
ini tidak sangat sensitif, tetapi izin yang direkomendasikan adalah
membaca / menulis bagi pengguna, dan tidak dapat diakses oleh orang
lain.
- ~ / .ssh / Config
- Ini adalah file konfigurasi per-user. Format file dan opsi konfigurasi yang dijelaskan dalam ssh_config (5) . Karena
potensi untuk penyalahgunaan, file ini harus memiliki izin yang ketat:
baca / tulis bagi pengguna, dan tidak dapat ditulis oleh orang lain.
- ~ / .ssh / Lingkungan
- Berisi definisi tambahan untuk variabel lingkungan; lihat LINGKUNGAN , di atas.
- ~ / .ssh / Identity
- ~ / .ssh / Id_dsa
- ~ / .ssh / Id_ecdsa
- ~ / .ssh/id_ed25519
- ~ / .ssh / Id_rsa
- Berisi kunci pribadi untuk otentikasi. File-file
ini berisi data sensitif dan harus dapat dibaca oleh pengguna tetapi
tidak dapat diakses oleh orang lain (baca / tulis / eksekusi). ssh hanya akan mengabaikan file kunci pribadi jika itu dapat diakses oleh orang lain. Hal
ini dimungkinkan untuk menentukan passphrase saat membuat kunci yang
akan digunakan untuk mengenkripsi bagian sensitif dari berkas ini dengan
3DES.
- ~ / .ssh / Identity.pub
- ~ / .ssh / Id_dsa.pub
- ~ / .ssh / Id_ecdsa.pub
- ~ / .ssh/id_ed25519.pub
- ~ / .ssh / Id_rsa.pub
- Berisi kunci publik untuk otentikasi. File-file ini tidak sensitif dan dapat (tetapi tidak perlu) dapat dibaca oleh siapa saja.
- ~ / .ssh / Known_hosts
- Berisi daftar kunci host untuk semua host pengguna telah login ke yang belum dalam daftar systemwide dari kunci host dikenal. Lihat sshd (8) untuk rincian lebih lanjut dari format file ini.
- ~ / .ssh / Rc
- Perintah dalam file ini dijalankan oleh ssh ketika pengguna log in, tepat sebelum shell pengguna (atau perintah) dimulai. Lihat sshd (8) halaman manual untuk informasi lebih lanjut.
- / Etc / hosts.equiv
- File ini adalah untuk otentikasi berbasis host (lihat di atas). Ini hanya harus dapat ditulis oleh root.
- / Etc / shosts.equiv
- File ini digunakan dengan cara yang persis sama seperti hosts.equiv , tetapi memungkinkan otentikasi berbasis host tanpa memungkinkan Login dengan rlogin / rsh.
- / Etc / ssh / ssh_config
- File konfigurasi systemwide. Format file dan opsi konfigurasi yang dijelaskan dalam ssh_config (5) .
- / Etc / ssh / ssh_host_key
- / Etc / ssh / ssh_host_dsa_key
- / Etc / ssh / ssh_host_ecdsa_key
- / Etc/ssh/ssh_host_ed25519_key
- / Etc / ssh / ssh_host_rsa_key
- File-file ini berisi bagian-bagian pribadi dari kunci host dan digunakan untuk otentikasi berbasis host. Jika protokol versi 1 digunakan, ssh harus setuid root, karena tombol host dapat dibaca hanya oleh root. Untuk protokol versi 2, ssh menggunakan ssh-keysign (8) untuk mengakses kunci host, menghilangkan persyaratan bahwa ssh menjadi setuid root ketika otentikasi berbasis host digunakan. Secara default ssh tidak setuid root.
- / Etc / ssh / ssh_known_hosts
- Daftar systemwide dari kunci host dikenal. File ini harus disiapkan oleh administrator sistem untuk berisi kunci publik tuan rumah dari semua mesin dalam organisasi. Ini harus dibaca dunia. Lihat sshd (8) untuk rincian lebih lanjut dari format file ini.
- / Etc / ssh / SSHRC
- Perintah dalam file ini dijalankan oleh ssh ketika pengguna log in, tepat sebelum shell pengguna (atau perintah) dimulai. Lihat sshd (8) halaman manual untuk informasi lebih lanjut.
EXIT STATUS
ssh keluar dengan status keluar dari perintah jarak jauh atau dengan 255 jika terjadi kesalahan. STANDAR
S. Lehtinen dan C. Lonvick , Secure Shell (SSH) Protokol Assigned Numbers , RFC 4250 , Januari 2006 . T. Ylonen dan C. Lonvick , Secure Shell (SSH) Arsitektur Protokol , RFC 4251 , Januari 2006 .
T. Ylonen dan C. Lonvick , Secure Shell (SSH) Authentication Protocol , RFC 4252 , Januari 2006 .
T. Ylonen dan C. Lonvick , Secure Shell (SSH) Transport Layer Protocol , RFC 4253 , Januari 2006 .
T. Ylonen dan C. Lonvick , Secure Shell (SSH) Connection Protocol , RFC 4254 , Januari 2006 .
J. Schlyter dan W. Griffin , Menggunakan DNS untuk Aman Publish Secure Shell (SSH) Key Sidik jari , RFC 4255 , Januari 2006 .
F. Cusack dan M. Forssen , Generik Message Exchange Authentication untuk Secure Shell Protocol (SSH) , RFC 4256 , Januari 2006 .
J. Galbraith dan P. ReMaker , Secure Shell (SSH) Sesi Saluran Istirahat Ekstensi , RFC 4335 , Januari 2006 .
M. Bellare , T. Kohno , dan C. Namprempre , Secure Shell (SSH) Mode Transport Layer Enkripsi , RFC 4344 , Januari 2006 .
B. Harris , Peningkatan Arcfour Mode untuk Secure Shell (SSH) Transport Layer Protocol , RFC 4345 , Januari 2006 .
M. Friedl , N. Provos , dan W. Simpson , Diffie-Hellman Grup Exchange untuk Secure Shell (SSH) Transport Layer Protocol , RFC 4419 , Maret 2006 .
J. Galbraith dan R. Thayer , Secure Shell (SSH) Public Key File Format , RFC 4716 , November 2006 .
D. Stebila dan J. Hijau , Elliptic Curve Algoritma Integrasi di Secure Shell Transport Layer , RFC 5656 , Desember 2009 .
A. Perrig dan D. Lagu , Hash Visualisasi: Teknik Baru untuk meningkatkan Keamanan Dunia Nyata , 1999 , International Workshop on Teknik kriptografi dan E-Commerce (CrypTEC '99) . PENULIS
OpenSSH merupakan turunan dari asli dan gratis ssh 1.2.12 rilis oleh Tatu Ylonen. Aaron
Campbell, Bob Beck, Markus Friedl, Niels Provos, Theo de Raadt dan Song
Gali dihapus banyak bug, kembali ditambah-fitur baru dan menciptakan
OpenSSH. Markus Friedl kontribusi dukungan untuk protokol SSH versi 1.5 dan 2.0.