CATATAN: Saya mengajukan pertanyaan ini pagi ini sehubungan dengan kotak EC2, tetapi hanya mendapatkan kembali tautan ke alat untuk memulai dan menghentikan instance, jadi saya akan ulangi ...
Saya memiliki beberapa kotak Linux yang melakukan pekerjaan pemrosesan malam untuk salah satu proyek saya. Dari waktu ke waktu, saya harus masuk, membuat beberapa perubahan kode, mengonfigurasi beberapa hal, memindahkan file, dll.
Toolset saya untuk operasi ini sangat jarang (SSH ke dalam kotak, mengedit file dalam VIM, WGET file jarak jauh yang saya butuhkan), dan saya curiga ada cara yang jauh lebih baik untuk melakukannya. Saya ingin tahu apa yang dilakukan orang lain di posisi saya.
Apakah Anda menggunakan beberapa bentuk sistem Windowing dan setara remote-desktop untuk mengakses kotak, atau apakah itu semua baris perintah? Mengelola kotak-kotak Windows jarak jauh itu sepele, karena Anda cukup meremote desktop dan mentransfer file melalui jaringan. Apakah ada yang setara dengan ini di dunia Linux?
Apakah Anda melakukan perubahan file konfigurasi / skrip tweak langsung pada mesin? Atau apakah Anda memiliki sesuatu yang diatur pada kotak lokal Anda untuk mengedit file-file ini dari jarak jauh? Atau apakah Anda hanya mengeditnya dari jauh kemudian mentransfernya di setiap penyimpanan?
Bagaimana Anda memindahkan file bolak-balik antara server dan lingkungan lokal Anda? FTP? Semacam Drive yang Dipetakan melalui VPN?
Saya benar-benar perlu menerapkan beberapa praktik terbaik untuk mengelola kotak-kotak ini. Setiap saran untuk menghilangkan rasa sakit akan sangat disambut!
sumber
Jawaban:
Jarang? Apa yang kamu maksud? Maafkan saya untuk mengomel, tetapi menolak ssh, vim dan wget sebagai menyakitkan hampir menghina. Dari pertanyaan Anda saya menyimpulkan Anda terutama seorang programmer untuk pekerjaan siang hari Anda, jadi saya agak mengerti pertanyaan itu. Tapi jujur, saya tidak akan menyewa admin Linux yang tidak nyaman dengan salah satu dari tiga alat yang Anda sebutkan.
Untuk tugas administrator, saya tidak pernah menggunakan lingkungan X. Anda tidak perlu satu, itu hanya akan mengambil sumber daya sistem dan, untuk sebagian besar waktu, mereka adalah penghalang bukannya bantuan. Sebagian besar alat konfigurasi GUI (well, hampir semua, sungguh) hanya menawarkan sebagian dari opsi konfigurasi yang dapat Anda atur dalam file konfigurasi dengan vim.
Mengelola kotak Linux tidak kalah sepele daripada mengelola kotak Windows. Hanya perlu waktu untuk mendapatkan keterampilan yang layak.
Dan transfer file jaringan yang setara? Banyak. scp, sftp, ftp, nfs, cifs / smb (protokol berbagi file Windows), dan kemudian beberapa.
Tergantung pada apa yang saya lakukan. Sebagian besar hal yang saya lakukan secara langsung dalam file konfigurasi pada mesin (untuk pengembangan dan pengujian kotak) dan kemudian saya mendorong file ke saluran konfigurasi di server satelit kami, setelah itu saya menyebarkan file ke semua server secara langsung (untuk kotak produksi ). Sungguh, vim adalah harta. Yaitu, saat Anda mengetahui cara menggunakannya dengan benar.
scp sepanjang jalan dan mungkin beberapa sftp, dan saya sarankan Anda juga. Jangan pernah menggunakan FTP untuk memindahkan file sensitif (mis. File konfigurasi) melalui jaringan publik. Saya tidak menggunakan jaringan yang dipetakan karena sekali lagi, yang saya butuhkan adalah di server. Jika maksud Anda file c dan bukan file konfigurasi di sini, saya biasanya menggunakan sesuatu seperti svn atau git dan kemudian mendorong perubahan saya ke kotak.
Anda sudah menggunakannya: ssh, scp, wget dan vim. Itu bukan rasa sakit. Mungkin ada beberapa rasa sakit gigi, sementara Anda mencari tahu seberapa kuat mereka. Tetapi, untuk mengembalikan analogi Windows, saya merasa sangat terhambat ketika harus menggunakan kotak Windows. Bagi Anda itu sebaliknya. Hanya seperti yang biasa Anda lakukan. Jadi, berikan waktu dan itu akan datang kepada Anda.
sumber
Anda sebutkan sudah ssh, vim dan wget yang penting dan sempurna. Beberapa alat tambahan yang dapat membuat hidup lebih mudah:
1. Layar GNU / byobu
"Layar GNU adalah terminal multiplexer gratis yang memungkinkan pengguna untuk mengakses beberapa sesi terminal terpisah di dalam jendela terminal tunggal atau sesi terminal jarak jauh. Ini berguna untuk menangani beberapa program dari baris perintah, dan untuk memisahkan program dari shell yang dimulai program." (Dari halaman GNU_Screen di wikipedia)
Keuntungan utama adalah bahwa Anda dapat memiliki satu atau beberapa terminal virtual yang berada dalam kondisi yang sama persis dengan yang Anda tinggalkan ketika Anda kembali (yaitu relogin via ssh). Ini juga bagus ketika koneksi Anda rusak karena suatu alasan.
Layar bekerja secara independen dari perangkat lunak yang Anda gunakan untuk menghubungkan ke kotak (itu hidup di server), sehingga menggabungkan dengan baik dengan dempul atau kebanyakan perangkat lunak terminal lainnya.
Artikel ini menunjukkan beberapa hal baik yang dapat Anda lakukan dengannya: http://www.pastacode.de/extending-gnu-screen-adding-a-taskbar/en/
Alternatif yang baik adalah byobu, yang datang dengan konfigurasi yang baik pada beberapa distribusi: http://byobu.co/
2. Komandan Tengah Malam
Alat penelusuran berbasis grafis seperti konsol untuk melihat dan memanipulasi file dan direktori.
Dapat juga melakukan transfer jarak jauh yang aman. Ada klien FISH dan FTP bawaan.
Ini berarti Anda memiliki 2 jendela teks berdampingan di konsol baris perintah dan satu memperlihatkan kotak remote Anda dan yang lainnya di mana pun Anda menghubungkannya (yang juga bisa menjadi sistem lokal Anda) Kemudian Anda dapat menavigasi kedua sistem file berdampingan dan tandai atau selidiki file individual atau treeee file dan juga salin atau pindahkan di antara lokasi. IKAN aman, FTP tidak. Sangat kuat dan sederhana untuk pemula.
3. rsync
Untuk transfer dan sinkronisasi file yang cepat, aman, dan andal antara lokasi yang berbeda
4. VCS
Gunakan sistem kontrol versi terdistribusi seperti bazaar, lincah atau git untuk memperbarui kode. Github atau Bitbucket menawarkan hosting kode komersial, tetapi tidak perlu, Anda juga dapat menggunakannya secara efisien di komputer Anda sendiri.
Joseph Kern: dapatkah Anda menguraikan bagaimana tepatnya Anda menggunakan git untuk organisasi konfigurasi jarak jauh?
5. Klien Terminal
Pada sistem seperti unix, mereka sudah ada di papan, pada Windows Anda dapat menggunakan Putty, Tera Term, Mind Term atau Pandora. Atau buat instalasi cygwin dan ssh dari jendela terminal cygwin ke kotak remote (yang memiliki lebih banyak keuntungan tetapi ini adalah pertanyaan tentang apa yang Anda inginkan).
6. Tunneling dan Port Forwarding
Akan sangat membantu untuk meneruskan port tertentu dengan aman ke mesin lokal Anda. Misalnya, Anda dapat meneruskan port mysql TCP 3306 atau postgres TCP 5432 dan menginstal beberapa alat administrasi database secara lokal.
Anda dapat membangun terowongan dari mesin Windwos dengan dempul (atau baris perintah berdasarkan itu sedikit saudara laki-laki), dengan cygwin dan Mindterm juga dapat melakukan port forwarding. Jika Anda menggunakan mesin unix-like secara lokal, Anda dapat menggunakan ssh odr plink untuk membuat tunneling seperti itu.
Untuk membuat tunneling yang lebih stabil dan permanen untuk berbagai port, saya merekomendasikan OpenVPN. Metode tunneling "pre-shared-key" dari titik ke titik tidak begitu sulit untuk diinstal.
7. Memiliki sistem seperti-unix lokal
Ketika mesin lokal Anda adalah Mac yang sudah Anda miliki ini, Anda dapat membuka shell lokal. Ketika workstation Anda berbasis windows, akan sangat membantu untuk membuat server seperti unix lokal, yang berada di jaringan lokal yang sama. Ini bisa berupa mesin berbeda di ruangan berbeda yang terhubung ke router atau switch yang sama. Atau jika Anda hanya menginginkan satu mesin, Anda dapat menginstal server vmware gratis dan membuat mesin virtual, lebih disukai sistem operasi yang sama dengan mesin jarak jauh Anda. Instal server samba di atasnya dan Anda dapat "menggunakan" samba share dari desktop Anda.
Jika Anda memiliki ssh server di server lokal dan membuka port 22 pada router Anda untuk itu, Anda dapat ssh ke sistem lokal Anda saat berada di luar.
Anda dapat membangun terowongan ke mesin jarak jauh atau mentransfer dan menyinkronkan file dan seluruh pohon file dengan rsync. Anda dapat menggunakannya untuk pengujian, untuk VSC, untuk pengembangan lokal, sebagai server web lokal, untuk tujuan pelatihan.
Anda dapat menarik cadangan dari mesin jarak jauh. Anda dapat membuat pekerjaan cron lokal yang melakukan pencadangan secara otomatis (mis. Database yang ingin Anda simpan secara lokal)
8. X Remote GUI
Jika Anda bekerja di Linux seperti sistem secara fisik, Anda juga dapat menjalankan aplikasi GUI di server linux Anda yang menggambar gui di mesin lokal Anda. Ini bisa menjadi alat membandingkan file grafis atau hampir apa pun yang Anda inginkan.
Meskipun tidak terlalu umum dan dalam kasus msot tidak perlu menggunakan perangkat lunak gui untuk administrasi kotak linux Anda mungkin dalam beberapa kasus merasa berguna jika Anda bisa.
Pada mesin remote pastikan di / etc / ssh / sshd_config baris ini ada:
Mulai ulang server ssh dengan
Kemudian lain kali Anda masuk dengan
Anda akan memiliki X tunnel, cobalah untuk menginstal xclock pada server jarak jauh untuk tujuan pengujian dan jalankan
xclock
di sesi ssh yang baru saja saya sebutkan. Jam x sederhana untuk keperluan pengujian akan muncul di GUI Linux Anda.Ini juga mungkin sebuah Mac jika Anda menginstal lingkungan X lokal.
9. Jika Anda memiliki banyak kotak atau tugas serupa: gunakan alat konfigurasi sistem
Jika Anda memiliki server farm atau melakukan penyebaran cloud besar dengan banyak mesin yang redundan atau setara atau serupa, Anda bisa menggunakan ini.
Mungkin tidak masuk akal, jika sebagian besar kotak bersifat individual atau memiliki sistem operasi yang berbeda atau versi yang berbeda berjalan.
Ada beberapa alat:
chef
http://www.getchef.com/chef/ Lihat jawaban brilian Evan Andersons di bawah ini: /server//a/28789/45819puppet
pemain besar lainnya http://puppetlabs.com/salt
terlihat menjanjikan http://www.saltstack.com/10. Menyebarkan wadah aplikasi dengan
docker
Ini bahkan melangkah lebih jauh. Docker adalah proyek sumber terbuka yang mengotomatiskan penyebaran aplikasi di dalam wadah perangkat lunak: https://www.docker.io
11. Gunakan Google Compute Engine dengan manajemen penyebaran otomatis
https://cloud.google.com/products/compute-engine/
Google menawarkan Linux VMs dengan kemungkinan yang sangat menarik. Anda dapat dengan cepat menggunakan kluster besar mesin virtual dengan alat termasuk RESTful API, antarmuka baris perintah dan Konsol berbasis web. Anda juga dapat menggunakan alat seperti RightScale dan Scalr untuk secara otomatis mengelola penyebaran Anda .
sumber
cd /#sh:<user>@<server>:<directory>
masuk ke mesin jarak jauh untuk menjelajah dan mentransfer file, dan karena Ctrl-o untuk sementara mengalihkan Anda ke konsol. Ctrl-o lain membuat Anda kembali ke MC dengan satu penekanan tombol!Jika Anda mencari GUI yang bagus untuk bekerja dengan manajemen file melalui SSH dari kotak Windows, lihat WinSCP: http://winscp.net
Saya tidak mengelola instance EC2, tetapi secara umum jika saya memiliki lebih dari satu mesin melakukan peran saya akan mencoba dan menulis skrip untuk melakukan pekerjaan pada semua kotak seperti itu, sebagai pengganti membuat perubahan kotak-ke-kotak .
Saya ingin memulai menggunakan Puppet ( http://reductivelabs.com/products/puppet/ ), karena itu membuat administrasi sistem lebih dari latihan manajemen konfigurasi. Saya belum memiliki siklus cadangan untuk melihatnya secara detail, tetapi saya sudah mendengar hal-hal yang sangat baik.
sumber
Anda perlu mempertimbangkan alat manajemen konfigurasi sistem seperti Chef.
Saya hampir tidak mengelola sistem secara manual melalui sesi SSH lagi. Saya menyimpan semua kode untuk aplikasi web dan proyek dalam repositori kode sumber yang dapat saya akses dari sistem yang menjalankannya, misalnya situs web di EC2. Ketika bekerja di cloud, sangat penting untuk memiliki infrastruktur otomatis.
Alur kerja dasar terlihat seperti ini. Pertama, untuk kode aplikasi dan data konfigurasi:
Untuk konfigurasi, tambahkan:
Sistem dikonfigurasikan seperti instalasi paket, pembuatan pengguna, file konfigurasi yang dihasilkan dari template, dll.
Saya hampir tidak pernah secara manual mengedit file config, data aplikasi, atau apa pun di sistem jarak jauh secara langsung. Perubahan dilakukan melalui repositori lokal saya dan didorong ke master. Saya tahu bahwa sistem saya akan dikonfigurasikan dengan benar setiap waktu, tidak masalah jika saya harus mematikan sebuah instance dan memulai kembali.
File yang dibutuhkan oleh konfigurasi disajikan langsung dari server Chef, yang hanya merupakan aplikasi web (merb, berjalan di Apache + Penumpang). Akses untuk klien dikendalikan melalui otorisasi openid.
Konfigurasi saya termasuk kait ke Nagios dan Munin, jadi saya juga mendapatkan pemantauan dan tren tanpa harus melakukan apa pun secara manual untuk mengaturnya.
Praktik terbaik hari ini condong ke manajemen konfigurasi otomatis. Jika Anda masih melakukan hal-hal secara manual, Anda bekerja terlalu keras.
sumber
Apa yang salah dengan ssh, vim, dan wget? Perhiasan tidak diketahui oleh sebagian besar pengguna Windows, menurut saya. :-)
Terkadang saya menggunakan gVim dari jarak jauh melalui FTP atau SFTP.
Jika Anda lebih suka menggunakan GUI pada mesin Linux, Anda dapat menjalankan X Server (lihat Cygwin untuk satu) pada host lokal Anda dan meneruskan tampilan Anda kembali melalui koneksi ssh Anda.
Saya tidak pernah menganggap solusi VPN sepadan dengan biaya atau kerumitan untuk mengelola Linux.
Jika Anda melakukan pengembangan dan perlu menjalankan pekerjaan dev Anda di server, cukup buat klien kontrol revisi di server, masuk dari jarak jauh, sinkronkan klien, dan jalankan proses Anda.
sumber
Apakah trolling ini dimaksudkan?
Admin remote kotak windows tidak sepele. Remote admin dari kotak unix adalah karena mereka dirancang untuk dikelola dari jarak jauh dan berada di jaringan. Untuk windows itu adalah baut ke sistem yang tidak dirancang dari awal untuk hidup di jaringan.
Ini adalah anekdotal tetapi dari pengalaman di berbagai perusahaan, rasio server ke sys admin untuk kotak linux jauh, jauh lebih tinggi daripada untuk windows. Hanya karena otomasi pada windows tidak sepele dan gui akan selalu lebih lambat daripada skrip. Karena itu, ada admin windows yang dapat membelai infrastruktur windows menjadi mudah dikelola, namun admin ini sangat jarang.
Semua alat yang Anda butuhkan tersedia secara default di setiap distro linux. Jika Anda ingin login secara grafis, silakan saja, itu hanya membuang-buang CPU dan memori dan akan memberi Anda masalah yang sama dengan yang Anda miliki dengan windows. Dan seperti yang sudah dikatakan, untuk lebih dari beberapa kotak Anda harus mempertimbangkan boneka, koki, cfengine atau salah satu dari banyak alat lain yang tersedia.
sumber
Anda mengatakan Anda menggunakan SSH untuk mengelola kotak "beberapa". Saya akan sangat merekomendasikan ClusterSSH untuk menulis perintah yang sama untuk semuanya sekaligus (dengan asumsi mereka memiliki tujuan yang sama).
http://www.linux.com/learn/tutorials/413853:manajemen-multiple-linux-servers-with-clusterssh
Penggunaannya sesederhana "cssh -l username clustername", yang akan membuka banyak jendela uxterm yang dapat Anda kelola sekaligus atau secara terpisah. Cluster didefinisikan oleh daftar IP dalam file konfigurasi. Satu-satunya hal yang hilang adalah dukungan X, sejauh yang saya tahu.
EDIT: Saya telah bermigrasi ke Terminator karena tata letak multi-terminal dapat disimpan dan dipulihkan dengan mudah, plus Anda mendapatkan 10 terowongan X simultan jika diperlukan. Mempermudah konfigurasi server dan komputer klien secara bersamaan.
Juga, Fabric berguna ketika membuat pembaruan perangkat lunak pada klien saya, pada dasarnya mengganti semua hal zip / scp / unzip / cp.
sumber
Saya menggunakan:
Menempatkan konfigurasi saya di bawah kontrol versi, mungkin adalah hal paling cerdas yang telah saya lakukan. Saya menggunakan alat berbasis SSH sesering mungkin untuk mengurangi jejak administrasi dan permukaan serangan.
Saat ini semua repositori git saya adalah lokal. Di masa depan saya akan memindahkan konfigurasi ke repo jarak jauh.
sumber
Jangan lupa tentang menggunakan Webmin , antarmuka berbasis web untuk administrasi sistem untuk Unix / Linux.
sumber
SSH selalu cukup bagi saya. Ada opsi lain X11 pada dasarnya adalah desktop jarak jauh meskipun secara inheren tidak aman karena itu saja tidak dienkripsi. Namun, itu dapat disalurkan melalui koneksi SSH (dan Anda mendapatkan keuntungan karena tidak harus membuka port tambahan). Ini tentu saja mengasumsikan bahwa Anda memiliki lingkungan X yang diinstal pada server.
SFTP (yang ftp lebih dari SSH sehingga sekali lagi tidak ada port tambahan perlu dibuka) dapat digunakan untuk meletakkan file di server daripada menarik mereka klien windows sftp yang baik dapat ditemukan di http://filezilla-project.org/
sumber
Saya ssh ke kotak dan membuat perubahan pada command line dan dengan editor seperti vi / nano ketika perubahan itu sederhana. Untuk perubahan yang lebih kompleks pada file, seperti mengedit beberapa kode sumber pada saat yang sama, saya menggunakan BBEdit pada Mac OS X. Itu dapat mengakses ke sistem file menggunakan SCP. Saya yakin ada editor untuk windows dan linux. sshfs adalah cara untuk mengakses sistem file Anda dari jarak jauh menggunakan ssh.
sumber
Pasti dempul; serta klien ssh, ada klien SCP berbasis Windows juga.
sumber
Command-line over ssh untuk linux (karena mereka bahkan belum menginstal X11) dan campuran ssh dan ARD untuk mesin Apple saya.
Perhatikan bahwa saya tidak pernah menggunakan Apple Remote Desktop untuk mentransfer file, karena AFP melalui TCP sangat lambat ; Saya hanya menggunakan
scp
.sumber
Jika Anda ingin akses grafis jarak jauh, hampir pasti Anda ingin mengatur VNC.
Jika Anda ingin mengedit file Anda dari jarak jauh melalui SSH, Anda memiliki beberapa opsi:
mc
) untuk memindahkan file Anda maju dan mundurSetelah Anda mengedit file Anda, cukup gunakan SSH untuk, katakanlah, mulai kompilasi.
Satu hal lain yang perlu dipertimbangkan adalah menggunakan sistem kontrol versi. bzr sangat bagus; mudah diatur, dan dirancang agar mudah digunakan. Anda dapat bekerja di satu komputer, mendorong pembaruan, menarik pembaruan di server Anda, menjalankan perintah, dan kembali jika terjadi kesalahan.
sumber
SSH melakukan pekerjaan sebagian besar waktu. Mempelajari alat-alat baris perintah yang tersedia untuk Anda patut dilakukan. Jika ada alat GUI yang ingin saya gunakan, saya hanya menggunakan VNC .
Untuk memindahkan file di sekitar saya biasanya me-mount share CFIS / SAMBA ke mesin lokal saya.
sumber
Untuk perubahan sederhana SSH dan SCP lakukan triknya. Jika perlu melakukan perubahan pada sejumlah besar mesin, Anda harus melihat sistem manajemen konfigurasi. Ini akan dapat memulai / menghentikan layanan, mengubah konten file konfigurasi, dan memverifikasi bahwa sistem Anda dalam keadaan yang diketahui.
Saya lebih suka menggunakan Bcfg2 tetapi Puppet dan CFEngine juga populer.
Saya memiliki Bcfg2 yang berjalan setiap jam di semua server saya, meskipun itu dapat dijalankan secara manual juga. Ada repositori yang dikendalikan versi pusat dari semua file konfigurasi sistem sehingga kami dapat melacak setiap modifikasi yang dibuat. Sistem ini bekerja dengan sangat baik dan merupakan langkah besar dari masuk ke server secara manual dan mengutak-atik hal-hal.
sumber
Saya sering menggunakan Komodo melalui tautan SFTP .
sumber
Mengelola sistem Windows selalu "berat": yaitu, lingkungan windowing lengkap diperlukan, yang mengharuskan aplikasi di tempat atau aplikasi yang berat seperti Remote Desktop atau VNC.
UNIX dirancang dengan mempertimbangkan jaringan - jadi alat dirancang untuk bekerja melalui jaringan, bukan untuk terlihat cantik. Server UNIX seharusnya tidak pernah mengatur lingkungan windowing (biasanya X11).
Antarmuka minimalis SSH, wget, dan vim jauh lebih kondusif untuk jaringan - vi sebenarnya dirancang untuk bekerja pada jalur modem 300baud.
Memang ada, alat grafis yang akan membantu Anda bekerja dengan sistem UNIX dan Linux jarak jauh (wsp adalah salah satunya; gvim mungkin yang lain).
Cara biasa mengelola sistem UNIX adalah masuk ke mesin dan bekerja pada mesin itu sendiri. Tidak perlu memindahkan file hanya untuk mengeditnya. Satu-satunya hal yang harus diingat adalah memastikan konfigurasi baik dan mengujinya jika memungkinkan.
sumber
SSH untuk mengakses, scp jika saya perlu mentransfer sejumlah file. Direktori bersama melalui SMBFS / SAMBA jika kami BENAR-BENAR membutuhkannya. Biasanya itu buang-buang waktu. Beberapa karyawan kami yang kurang kompeten menggunakan webmin yang dikunci untuk akses subnet lokal melalui HTTPS.
sumber
Shellinabox
Emulasi terminal pada klien
Butterfly juga merupakan server web (ditulis dengan python) yang mendukung terminal web emulasi sisi klien fitur lengkap.
sumber