SSH: Apa dan bagaimana
Indonesian (Bahasa Indonesia) translation by nila sardi (you can also view the original English article)
Banyak pengembang web menggunakan SSH ("Secure Shell") pada setiap hari untuk mengelola server mereka, cadangan file, bekerja secara jarak jauh, dan sejumlah tugas-tugas lain. Hari ini, saya akan menjelaskan apa SSH, melakukan Tinjauan sejarah singkat dan, akhirnya, mengajarkan Anda bagaimana untuk memasangnya pada remote server atau jaringan lokal Anda. Mari kita mulai!
Penjelasan awal
Jika Anda membaca ini, ada kemungkinan bahwa Anda setidaknya agak akrab dengan Terminal (atau pada Windows, sesuatu seperti Cygwin). Jika demikian, maka Anda akan mengerti penjelasan fungsional ini cepat SSH.
SSH pada dasarnya menggunakan koneksi jaringan untuk masuk ke Terminal di komputer lain.
Jika Anda tidak terbiasa dengan Terminal, ada banyak penjelasan dan panduan pemula untuk Terminal, baik di sini di Nettuts + dan di tempat lain. Kekuatan SSH bergantung pada kesederhanaan; dengan menawarkan Anda akses ke Terminal mesin lain, SSH memotong untuk mengejar dan memberi Anda kontrol penuh atas mesin remote. Jika Anda memahami kekuatan Terminal dan sambungan langsung ke inner pekerjaan mesin lokal Anda, maka Anda memahami kekuatan SSH!
Sejarah singkat
SSH dikembangkan dalam keadaan bayi pada tahun 1995. Pengembang utama, Tatu Ylonen, dikembangkan sebagai cara aman pertama untuk administrasi sistem UNIX remote. Sebelum SSH, hanya alat yang ada dikirim informasi seperti password dalam teks yang jelas.
Jadi, bagaimana cara menggunakannya?
Ada sejuta panduan luar sana pada cara mendapatkan set up dengan SSH. Kami secara khusus akan meliputi satu metode hari. Hal pertama yang pertama, Anda akan ingin memastikan bahwa Anda memiliki SSH pada sistem Anda.
- Mac - versi OpenSSH datang terinstal.
- Windows - ikuti panduan seperti ini satu atau ini untuk mendapatkan Cygwin dan paket "openssh" diinstal.
- Linux - OpenSSH sangat mungkin untuk diinstal sudah, tetapi jika tidak, Anda dapat mengikuti panduan sama untuk mendapatkannya diinstal.
Untuk menentukan jika SSH diinstal, jalankan ' yang ssh'. Jika Terminal kembali sesuatu di sepanjang garis /usr/bin/ssh, maka Anda akan baik untuk pergi! Jika tidak, mengikuti salah satu panduan ini untuk mendapatkannya diinstal.
Dalam artikel ini, saya akan berasumsi versi yang Anda gunakan adalah OpenSSH; ada beberapa perbedaan konfigurasi yang bergantung pada versi SSH. Kami akan menjelaskan cara mengatur Mac untuk menyambung ke server MediaTemple melalui satu perintah SSH. Setelah Anda memiliki SSH yang terpasang pada mesin Anda, Anda perlu untuk memastikan host target Anda memiliki SSH diaktifkan. SSH berjalan melalui port 22 secara default; Anda dapat menggunakan baris perintah alat seperti nmap
untuk melakukan ping server Anda untuk menentukan jika port 22 menerima koneksi masuk, seperti ini:
1 |
|
2 |
sudo nmap -sS hostname.com |
Tentu saja, Anda mungkin memiliki akses ke antarmuka administratif untuk server. Pastikan Anda melihat melalui pilihan dan mengaktifkan SSH. Mediatemple server, konfigurasi ini berada dalam panel kontrol Server. MediaTemple SSH dapat diakses dengan menggunakan root@primarydomain.com. Anda dapat menambahkan pengguna ke rekening, tetapi untuk menjaga hal-hal sederhana, kita akan menggunakan root@primarydomain.com.
Setelah SSH diaktifkan (dan Anda telah mengatur root password di admin server Anda), Anda dapat menjalankan baris berikut ke SSH ke server Anda.
1 |
|
2 |
ssh root@primarydomain.com |
.. .dimana primarydomain.com adalah domain utama MediaTemple. Kemudian Anda akan diminta password Anda (yang password root Anda mengatur di control panel). Jika Anda tidak menggunakan MediaTemple, Anda bisa SSH langsung ke alamat IP server Anda juga.
Jika menggunakan shared hosting, ada kemungkinan bahwa Anda akan tidak dapat masuk sebagai root. Sebaliknya, Anda akan log in dengan nama pengguna akun. Misalnya, jika Anda menggunakan layanan seperti Site5, Anda dapat login dengan username pada subdomain, seperti ini:
1 |
|
2 |
ssh username@malta.site5.com |
Pada akhirnya, konfigurasi ini akan tergantung pada perusahaan server web tertentu Anda. Lihat dokumentasi host Anda untuk informasi lebih lanjut.
Sekali Anda adalah "dikupas dalam", Anda dapat mengeksekusi perintah dan melewati sistem file dalam Terminal. Tergantung pada tingkat akses, Anda mungkin dapat menginstal hal pada server Anda menggunakan apt-get atau wget perintah. Anda dapat mengelola server Apache Anda, edit file konfigurasi dengan editor teks berbasis Terminal, lihat error log, Hapus cache, lihat file langsung pada server untuk memastikan mereka adalah versi yang benar, dan banyak lain tingkat rendah tugas-tugas administrasi sistem. Sekarang, bagaimana jika Anda ingin berbuat lebih banyak, lebih cepat dengan SSH?
Bagaimana menggunakannya... Lebih baik?
Ada ton hal kuat yang SSH terbuka Anda sampai. Kami akan melewatkan beberapa dari mereka (seperti beberapa lebih sysadmin-terkait, seperti tunneling). Tapi kami akan pergi ke beberapa trik berguna.
Super cepat Log-in
Anda berpikir untuk diri sendiri, "Sepertinya harus ada cara yang lebih cepat untuk melakukan ini." Kamu benar. Dan ada. Daripada harus mengingat domain Anda, password, dan username untuk setiap server, Anda dapat mengatur beberapa konfigurasi yang akan memungkinkan Anda untuk mempercepat proses untuk sesuatu di sepanjang garis-garis ini.
1 |
|
2 |
ssh myserver |
Dengan konfigurasi yang tepat, Anda dapat menjalankan ini, dan tanpa harus memasukkan password, alamat IP, atau nama domain yang panjang, kau di! Sekali lagi, kita akan mengasumsikan Anda log ke MediaTemple server. Pertama, kita akan menghasilkan ssh kunci. Ini pada dasarnya adalah satu set kunci dienkripsi yang hidup di ~/.ssh pada komputer lokal Anda. Anda memiliki kunci "publik" dan "swasta" tombol. Jadi, hal pertama yang pertama, membuka jendela Terminal baru dan buat .ssh folder di direktori home Anda.
1 |
|
2 |
mkdir ~/.ssh
|
Selanjutnya Anda akan menghasilkan kunci Anda dengan baris berikut. (Ini datang langsung dari MediaTemple yang dokumentasi.)
1 |
|
2 |
ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa -C "Comment about your key goes here." |
Baris ini akan menghasilkan ssh kunci rsa jenis, dengan 2048 bit (untuk keamanan), di lokasi file tertentu, dengan komentar yang ditentukan. Anda akan promprted untuk password, tetapi tidak wajib atau diperlukan; tidak memberikan password akan memungkinkan Anda untuk secara otomatis log in. Jenis RSA adalah untuk protokol SSH versi 1. Jenis DSA adalah untuk versi protokol 2. Periksa dengan server web Anda untuk mengetahui versi mana yang mereka gunakan. Setelah kunci Anda dihasilkan, Anda kemudian akan menjalankan ini untuk memastikan bahwa konfigurasi SSH Anda ditetapkan untuk hak akses.
1 |
|
2 |
chmod 700 ~/.ssh && chmod 600 ~/.ssh/* |
Selanjutnya, Anda akan upload kunci publik ke server Anda. Ada beberapa cara untuk melakukan ini; dengan cara ini berasal dari MediaTemple's docs juga.
1 |
|
2 |
cat ~/.ssh/id_rsa.pub | ssh root@example.com 'cat - >> ~/.ssh/authorized_keys' |
Kode ini menggemakan id_rsa.pub isi Anda melalui ' |' (pipa) ke perintah selanjutnya, yang merupakan SSH ke root@example.com, di mana Anda akan menjalankan echo dan gabungan dari apa yang Anda disalurkan dalam perintah pertama. Kedengarannya agak rumit, jadi ada beberapa alternatif cara untuk menangani hal ini. Pada dasarnya, Anda akan ingin ada jeda baris dan kunci publik pada sendiri baris dalam file, bernama authorized_keys pada server Anda dalam direktori ~/.ssh/. Jadi, jika ini adalah yang pertama atau hanya kunci yang Anda inginkan pada server Anda, Anda bisa menjalankan perintah ini untuk menyalinnya langsung ke lokasi tersebut.
1 |
|
2 |
scp ~/.ssh/id_rsa.pub root@example.com:.ssh/authorized_keys |
Baris ini pada dasarnya adalah berkata, "Salin file ini pertama melalui SSH ke server di lokasi ini relatif terhadap direktori rumah saya saat ini."
Setelah authorized_keys Anda berisi kunci publik, Anda dapat mencoba untuk login ke server dengan ssh username@example.com. Jika Anda meletakkan kunci publik di direktori pengguna root SSH file konfigurasi, Anda akan dapat untuk login langsung ke akar. Anda akan ditanya tentang rsa sidik jari; pergi ke depan dan mengizinkan tindakan ini. Ia menambahkan server Anda menghubungkan ke ke known_hosts file. File ini dapat digunakan untuk banyak hal yang berbeda, tetapi terutama untuk menjamin diri terhadap apa yang disebut serangan "pria-di-the-tengah". Jika Anda ingin membaca sedikit lebih tentang hal ini, periksa penjelasan.
Jika Anda berhasil dapat login ke server Anda, seolah-olah Anda telah memasukkan password, kunci Anda bekerja dengan benar. Langkah berikutnya adalah untuk menambahkan beberapa baris untuk cara pintas ke file konfigurasi pada mesin Anda. Buka ~/.ssh/config di editor teks favorit Anda (membuat jika tidak ada) dan tambahkan berikut:
1 |
|
2 |
Host shortname |
3 |
HostName somehost.com |
4 |
User username |
Mana "shortname" adalah nama panggilan untuk server Anda ingin login ke. Misalnya, "Host myserver" akan memungkinkan saya untuk melakukan ssh myserver. Nama host adalah lokasi server Anda, dan tentu saja pengguna adalah nama pengguna Anda. Anda mungkin memiliki pengguna root di tempat ini. Setelah file ini disimpan, Anda dapat menjalankan perintah sederhana untuk login ke server Anda, seperti ini:
1 |
|
2 |
ssh shortname |
Git tanpa sebuah Hub
Harap Catatan: bagian ini memerlukan sedikit keakraban dengan Git.
Anda dapat menggunakan SSH untuk mengatur repos Git Anda sendiri di server Anda! Hal ini berguna bagi perusahaan yang tidak ingin mengekspos kode mereka di GitHub untuk alasan apa pun, dan it's great untuk dapat untuk mendorong langsung dari mesin lokal ke repo Git di server Anda sendiri.
Untuk mengatur hal ini, pastikan Git terinstal di host dan mesin lokal Anda. Anda mungkin harus pergi melalui perusahaan server web Anda untuk memiliki Git diinstal. Selanjutnya, menjalankan git init pada server Anda di lokasi yang Anda inginkan repo Git Anda menjadi. Tentu saja, Anda dapat melakukan ini seratus cara yang berbeda, tetapi jika Anda memilih untuk tidak memiliki repositori telanjang, Anda dapat menggunakan cabang untuk mendorong untuk dari komputer lokal Anda. Berikut adalah alur kerja umum.
1 |
|
2 |
ssh user@example.com |
3 |
cd /path/to/repo
|
4 |
git init |
5 |
git checkout -b staging
|
6 |
git checkout master |
7 |
# disconnect from shell session using ctrl-d
|
8 |
cd /local/repo
|
9 |
git init |
10 |
git add .
|
11 |
git commit -am "some message" |
12 |
git remote add origin user@example.com:/path/to/repo |
13 |
git checkout -b staging
|
14 |
git push origin staging |
15 |
ssh user@example.com |
16 |
cd /path/to/repo
|
17 |
git merge staging |
Pada dasarnya apa yang terjadi di sini adalah Anda masuk ke server, berubah menjadi jalan yang diinginkan repo, menciptakan sebuah repositori dan menambahkan cabang "pementasan" yang Anda dapat mendorong untuk dari komputer lokal Anda. Kemudian, Anda menciptakan repo lokal Anda dan cabang "pementasan" sesuai pada komputer lokal Anda, dan menambahkan file untuk melacak untuk repo. Berikutnya datang sebuah commit awal. Anda kemudian menambahkan repositori berjarak sebagai alias "asal". Selanjutnya, Anda mendorong cabang pementasan lokal alias "asal" pementasan cabang. Akhirnya, Anda akan ssh'ing kembali ke server dan menggabungkan cabang "pementasan" dengan standar "penguasa" cabang.
SFTP > FTP
Anda juga dapat menggunakan bertenaga SSH FTP (file transfer protocol), yang pada dasarnya (dienkripsi) versi lebih aman FTP yang berjalan melalui port 22 (bukan default FTP port 21). Kebanyakan klien FTP dukungan SFTP juga. FileZilla (untuk Windows) dan Fetch (untuk Mac) adalah dua populer (dan gratis) SFTP/FTP klien.
Akses mudah ke Server Anda hampir di mana saja
Selama Anda di sekitar komputer yang terhubung ke internet, memiliki Terminal, dan memiliki SSH diinstal (setiap Mac yang terhubung ke WiFi, misalnya), Anda bisa mendapatkan akses ke server Anda melalui SSH. Itu adalah bagian yang terbaik. Anda tidak memerlukan konfigurasi apapun (dengan asumsi Anda belum mengatur batasan yang memerlukan pubkey pencocokan), Anda dapat login dengan username dan password dari hampir di mana saja. Ada bahkan klien SSH untuk iOS dan perangkat mobile lainnya. Ini adalah fitur yang sangat kuat dari SSH yang hanya paralel dalam portabilitas oleh aplikasi berbasis browser.
Repo kode lokal
Mudah-mudahan Anda dapat melihat kekuatan SSH dalam siklus pengembangan sehari-hari.
Mari kita bayangkan bahwa Anda dan beberapa teman-teman bekerja pada beberapa kode bersama. Mari kita juga mengatakan Anda memiliki komputer lokal bahwa Anda memiliki kontrol penuh atas yang Anda gunakan karena server LAMP pengembangan dengan beberapa VM yang diinstal di atasnya. Anda dapat menggunakan SSH lokal untuk memindahkan file ke dan dari komputer Anda dan pengembangan mesin. Anda dapat bahkan mengatur lokal Git (atau svn atau Mercurial) repo, didukung oleh SSH untuk menjaga segala sesuatu di cek. Mungkin Anda bahkan bisa membuat pengembangan mesin satu-satunya mesin yang terhubung ke server remote melalui SSH, sehingga kode harus pergi melalui proses pementasan tertentu sebelum dapat dimasukkan ke dalam produksi. Tulang punggung dari semua tindakan ini adalah SSH!
Mudah-mudahan Anda dapat melihat kekuatan SSH dalam siklus pengembangan sehari-hari, terutama untuk tim menggunakan kontrol versi. Seperti yang saya catat sebelumnya, ada banyak dokumentasi dan sejumlah alat-alat level jaringan lain yang didasarkan pada atau bergantung pada SSH yang akan memberi Anda lebih banyak kontrol dan kekuasaan atas proses pengembangan Anda dan server Anda. Siapa yang tahu? Mungkin, suatu hari, Anda bisa ganda sebagai sysadmin setelah semua!
Beberapa link berguna
Berikut adalah beberapa link berguna untuk Anda mulai dengan SSH. Ini telah sekitar untuk sementara, sehingga ada banyak dokumentasi yang mengambang sekitar.
Terima kasih untuk membaca!