Cara menyimpan Kredensial SSH di Terminal


33

Saya baru di MacBook dan saya menjalankan El Capitan.

Saya memigrasikan penggunaan mesin saya dari PC ke MacBook. Saya sudah lama menggunakan Putty dan SuperPuTTY di PC.

Saya ingin membuat dan menyimpan kredensial masuk ke server web saya di Terminal MacBook seperti yang telah saya lakukan di SuperPuTTY pada PC.

Apakah mungkin untuk menyimpan kredensial masuk server web di Terminal Mac?

Inilah Tujuan Keseluruhan Saya:

Saya ingin tahu apakah ada cara mudah di Terminal Mac untuk menyimpan kredensial login baris perintah berikut dan kemudian menggunakan semacam kode pendek untuk terhubung ke server web saya melalui Terminal:

ssh -p 2200 root@123.456.789.012
Password: ****************************************************************

Saya mengelola dan terhubung ke 5 server web yang berbeda sehingga memilah dan mengatur kredensial login dalam metode koneksi pendek / cepat akan menjadi penghemat waktu yang sangat besar. Terutama karena kata sandi saya adalah string 64-karakter samar.


Saya telah membersihkan komentar-komentar ketika Tammy mengedit versi tiga mengetuk ini dari taman dalam hal kejelasan dan kegunaan. Sudah selesai dilakukan dengan baik!
bmike

Jawaban:


50

Anda dapat menyalin kunci publik Anda ke mesin jarak jauh. Selama mereka mengaktifkan otentikasi kunci publik, dan kunci publik Anda ada di mesin jarak jauh, Anda bisa sshke mesin tanpa harus memberikan kata sandi.

Pertama, Anda perlu membuat keypair publik / pribadi seperti:

ssh-keygen -t rsa

Ikuti petunjuknya. Ketika ditanya apakah Anda ingin melindungi kunci dengan frasa sandi, katakan YA! Ini praktik yang buruk untuk tidak melindungi kata sandi kunci Anda dan saya akan menunjukkan kepada Anda cara memasukkan kata sandi sesekali saja.

Jika sudah memiliki keypair, Anda dapat melewati langkah di atas.

Sekarang, dengan asumsi kunci ssh Anda ada pada Mac ~/.ssh/id_rsa.pubAnda, Anda dapat menginstalnya pada mesin jarak jauh dengan menjalankan:

cat ~/.ssh/id_rsa.pub | ssh user@123.45.56.78 "mkdir -p ~/.ssh && cat >>  ~/.ssh/authorized_keys"

Untuk contoh server spesifik Anda yang dikutip di atas, perintahnya akan terlihat seperti:

cat ~/.ssh/id_rsa.pub | ssh -p 2200 root@123.456.789.012 "mkdir -p ~/.ssh && cat >>  ~/.ssh/authorized_keys"

Anda harus memasukkan kata sandi untuk root@123.456.789.012melakukan salinan ini, tetapi ini harus menjadi yang terakhir kali Anda perlu melakukan ini. Dengan asumsi server jarak jauh sshdadalah pengaturan untuk melakukan otentikasi kunci publik-swasta, ketika Anda ssh ke kotak sekarang seharusnya tidak meminta Anda untuk kata sandi untuk rootakun - alih-alih itu akan meminta kata sandi untuk kunci Anda . Baca terus untuk cara membuat ini sesuatu yang tidak perlu Anda masukkan sepanjang waktu.

Ulangi langkah di atas untuk setiap mesin yang ingin Anda ssh masuk dengan kunci Anda, bukan kata sandi.

Harap dicatat, siapa pun yang memegang ~/.ssh/id_rsafile Anda dapat melakukan ssh ke mesin ini roottanpa memberikan kata sandi untuk mesin jarak jauh. Kata sandi yang melindungi file kunci memastikan mereka perlu mengetahui kata sandi untuk kunci itu untuk menggunakannya. Pastikan file itu aman. Gunakan enkripsi disk di Mac Anda dan pertahankan izin pada file dan ~/.ssh/direktori dengan ketat.

Untuk membuatnya lebih mudah menggunakan kunci tanpa harus memasukkan kata sandi setiap kali, OS X menjalankan ssh-agentproses di latar belakang pada mesin Anda. Agen ini akan melakukan cache keypair saat pertama kali Anda menggunakannya sehingga Anda hanya perlu memasukkan kata sandi sesekali. Jika Anda hanya tidur mac Anda, tidak pernah me-restart itu, Anda dapat pergi periode waktu yang lama tanpa perlu memasukkan kata sandi Anda.

Anda dapat melakukan pra-cache semua kunci SSH Anda dengan ssh-agentmenjalankan:

ssh-add

Sekarang Anda hanya perlu mengingat kata sandi utama , bukan banyak kata sandi akun yang berbeda. Saya biasanya menyimpan kata sandi utama saya di 1Password (tidak ada afiliasi), lebih lanjut menyederhanakan berapa banyak kata sandi yang perlu saya ingat. Kemudian saya hanya mencarinya di 1Password dan memotong-rekatkan mereka di Terminal saat aneh saya me-restart Mac saya dan menyebabkan saya berjalan ssh-agentrestart.

Jika Anda menggabungkan menyalin kunci Anda ke mesin jarak jauh dengan solusi manajemen koneksi Terminal.app dalam pertanyaan ini , Anda akan memiliki sesuatu yang sangat dekat dengan Putty untuk pengalaman koneksi GUI.


Di sisi server, periksa /etc/ssh/sshd_configdan pastikan:

PubkeyAuthentication yes

diaktifkan dalam konfigurasi (ini secara default di OpenSSH). Anda mungkin juga ingin mengatur:

PasswordAuthentication no

Saat Anda berada di sana, otentikasi berbasis kata sandi dinonaktifkan dan kunci menjadi satu-satunya cara untuk mengakses mesin.

Anda harus memulai kembali sshd pada mesin jika Anda membuat perubahan pada file konfigurasi.


Terima kasih @ ICC - jawaban ini hebat dan saya yakin akan berhasil. Saya membuat akun pertukaran tumpukan di sini di Mac Channel pagi ini untuk melihat apakah saya bisa menemukan cara cepat dan mudah untuk menyimpan kredensial login di Terminal atau di Mac, entah bagaimana. Sepertinya melakukannya sangat rumit dan bukan solusi yang layak untuk saya. Inilah alasannya: <more>
tammy

<lanjt.> Saya memiliki akses baris perintah ke sejumlah server web (semuanya berjumlah 5). Saya memiliki PC desktop di kantor saya dengan akses SSH (via PutTY) ke server web ini. Saya memiliki PC laptop besar di kantor saya di rumah dengan akses SSH (via PutTY) ke server web ini. Saya baru saja membeli MacBook Air untuk perjalanan dan kunjungan klien di tempat. Ini sempurna untuk kebutuhan khusus itu. Saya berharap untuk membuat koneksi SSH ke server semudah melalui Putty dan SuperPuTTY pada PC. <more>
tammy

[Lanjutkan] Tapi saya tidak bisa melalui rute kunci autentikasi publik karena saya perlu mengubah cara Putty bekerja di PC rumah dan kantor saya. Ini menjadi tugas yang terlalu menakutkan untuk membuat Mac berfungsi seperti PC saya, jadi saya pikir saya harus tetap menggunakan proses copy & paste untuk menghubungkan dari Mac saya. Terima kasih untuk bantuannya. Saya sangat menghargai Anda membantu saya mencoba membuat proses saya lebih sederhana.
tammy

2
@tammy Anda dapat meninggalkan PasswordAuthentication yessisi server dan Putty akan terus berfungsi seperti biasa di mesin Windows Anda. Ini bukan / atau skenario - Anda dapat mengizinkan kedua jenis otentikasi di server. Putty juga mendukung otorisasi kunci publik / pribadi seperti FWIW ini. Anda dapat menyalin ~/.ssh/id_rsa*file Anda ke mesin Windows Anda dan mengimpornya ke Putty untuk otentikasi ke server. Putty, di bawah tenda, menggunakan pustaka OpenSSH yang sama persis untuk terhubung seperti sshpada OS X.
Ian C.

1
ssh-addmasih berfungsi bahkan di Sierra (OS X 10.12). Terima kasih
SaxDaddy

4

Anda dapat menggunakan sshpass untuk menyimpan kata sandi dan tidak perlu memasukkan setiap kali yang bukan praktik yang baik (masalah keamanan).

Ikuti instruksi untuk instalasi mac os x di: https://gist.github.com/arunoda/7790979

Ketika Anda telah menjalankan sshpass diinstal sshpass -p "YOUR_PASSWORD" ssh -o StrictHostKeyChecking=no root@123.456.789.012:2200

lakukan hal yang sama untuk 5 server web Anda dan Anda tidak perlu memasukkan kata sandi setiap kali.


1
Saya merasa terlalu bodoh untuk yang satu ini. Saya kira menggunakan PC dengan Putty dan SuperPuTTY hanya menjauhkan saya terlalu jauh dari baris perintah dasar. Saya mengedit OQ saya dengan tujuan keseluruhan saya. Silahkan lihat.
tammy

Saya berasumsi sekarang bahwa Anda dapat terhubung ke root@123.456.789.012 dan hanya ingin mengotomatiskan prosesnya. Anda pada dasarnya tidak ingin mengetik setiap waktu ssh -p 2200 root@123.456.789.012dan Password: **********************?
Enzo

ssh-copy-idbukan bagian dari distribusi OS X standar.
Ian C.

@IanC. Saya pikir saya lupa bahwa saya menginstalnya dengan minuman. akan mengubah jawaban saya
enzo

Anda mendapatkannya @maetsoh - itulah yang ingin saya capai di sini.
tammy

1

Selain hal-hal kunci publik / pribadi, file .ssh / config dapat dikonfigurasi untuk memudahkan penggunaan perintah ssh, seperti alias, defaut pengguna / port per server, opsi ssh, perintah proxy ...

Pada dasarnya segala sesuatu yang rumit yang dapat Anda masukkan ke dalam perintah ssh dapat juga ada di file ini.


0

Saya telah mem-porting Putty ke Mac sebagai bundel aplikasi asli, jadi tidak perlu untuk macports atau terminal jika Anda bukan pengguna teknis.

Informasi lebih lanjut dengan tangkapan layar ada di sini: http://www.wine-reviews.net/2016/08/putty-for-mac-os-x-now-available.html

Tepuk tangan,


Selamat Datang di Tanya Berbeda! Pastikan untuk menjawab pertanyaan secara langsung. Jika saya menyebutkan produk yang Anda kerjakan, itu bagus, tetapi cobalah untuk berada pada topik yang berlawanan dengan menempelkan uraian pemasaran yang sama pada beberapa posting.
bmike
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.