Katakanlah saya telah terhubung ke komputer jarak jauh melalui SSH. Dari program di komputer jarak jauh ini, saya perlu menjalankan perintah di komputer lokal saya (inisiator koneksi).
Yang menimbulkan pertanyaan: apakah mungkin lintah ke koneksi yang ada antara dua komputer untuk menjalankan perintah di komputer lokal?
Saya telah mempertimbangkan menjalankan perintah ssh user@host-of-connecting-party <command>
pada komputer jarak jauh untuk membuat koneksi terbalik. Tetapi ini lebih sulit untuk diotomatisasi dan akan membutuhkan intervensi pengguna. Saya berharap saya bisa mengotomatisasi sepenuhnya, atau setidaknya mendeteksi nama pengguna / host dari pengguna yang terhubung.
ssh
remote-access
Aeyoun
sumber
sumber
Jawaban:
Terkadang saya memiliki kebutuhan yang sama, selama saya terhubung melalui Putty ke server VPN kami dan dari sana ke ssh ke beberapa host lain, yang tidak dapat dijangkau untuk saya secara langsung karena pengaturan VPN.
Kadang-kadang saya hanya perlu memeriksa sesuatu dengan cepat di mesin server VPN, sambil tetap menjalankan "ssh-session" saya. Salah satu pendekatan adalah menjalankan sesi ssh di bawah
screen
, yang, seperti telah saya perhatikan, menambahkan beberapa penundaan dibandingkan dengan "ssh biasa". Pendekatan lain, yang ingin saya bagikan di sini, adalah sebagai berikut:Saat berada di bawah sesi SSH, Tekan Enter, lalu ~, (pastikan itu tidak ditampilkan, yaitu Anda berada dalam mode perintah), lalu Ctrl- Z. Ini akan menempatkan proses klien ssh di "host" ke latar belakang, dan Anda akan menemukan sesuatu seperti:
Sekarang Anda berada di "host", dapat melakukan apa pun yang Anda inginkan (walaupun, saya tidak yakin berapa lama sesi ssh akan tetap hidup), dan kemudian kembali ke sesi SSH dengan berlari
fg
.Setidaknya, ini bekerja untuk saya ketika saya terhubung dari workstation Win10 melalui Putty pada VM berbasis CentOS, dan dari VM yang terhubung melalui SSH ke beberapa host lain.
Semoga ini bisa membantu seseorang!
sumber
PermitLocalCommand yes
di Anda.ssh/config
untuk tuan rumah, Anda juga dapat melakukan<Enter>~C
, kemudian!<command>
.@ 62mkv jawaban adalah solusi yang jauh lebih baik. Gunakan itu.
Namun, untuk kelengkapan dan keingintahuan, jika Anda memiliki server ssh yang berjalan pada mesin lokal Anda, Anda bisa membuat terowongan ssh untuk memungkinkan koneksi ssh dari host jarak jauh pada port 20202 kembali ke lokal pada port 22. Contoh perintah:
Ini akan memulai koneksi ssh, tetapi juga mengatur terowongan kembali ke server ssh yang berjalan pada mesin Anda. Maka Anda bisa melakukan ini, ketika ssh'ed ke host jarak jauh:
Tentu saja, ini dapat dengan cepat membingungkan - terutama jika teknik ini bersarang lebih dari satu kali. Itu juga menambahkan sedikit latensi - karena semua yang Anda jalankan pada mesin lokal Anda dipantulkan melalui host jarak jauh.
Informasi tambahan tentang ssh tunneling bagi mereka yang keingintahuannya belum terpenuhi dapat ditemukan dalam menjawab pertanyaan unix stackexchange ini .
sumber
Jika komputer lokal dan remote Anda dapat diakses dari Internet, Anda bisa membuka sesi SSH dari komputer lokal Anda di komputer jarak jauh, dan kemudian di sesi itu buka sesi ssh lain dari komputer jarak jauh di komputer lokal:
Untuk mengotomatisasi hal-hal, lihat Fabric (diperlukan pengetahuan Python)
sumber
Anda dapat menggunakan sshpass untuk menghubungkan ke komputer jarak jauh dan menjalankan perintah.
Gunakan skrip shell sederhana di komputer lokal dan gunakan kode di atas setiap kali Anda ingin menjalankan perintah di komputer jarak jauh. Ini adalah salah satu cara saya umumnya digunakan dalam otomasi.
sumber
Tidak, Anda tidak dapat membobol sesi yang ada.
Aplikasi Anda akan membutuhkan cara untuk terhubung kembali ke klien. SSH akan berfungsi jika klien memiliki server SSH berjalan dan server dapat mencapai port 22 pada klien. Tidak akan sulit untuk mengotomatisasi jika Anda menggunakan otentikasi berbasis-kunci alih-alih otentikasi kata sandi - dengan cara ini intervensi pengguna tidak diperlukan.
Informasi tentang pengaturan otentikasi berbasis kunci dapat ditemukan di sini: http://tombuntu.com/index.php/2008/02/20/public-key-authentication-for-ssh-made-easy/
sumber
Jika Anda memiliki akses ke terminal lain, Anda dapat mengirim SIGSTOP menggunakan "kill -19 PID" ke perintah ssh yang memulai koneksinya. Anda kemudian akan mendapatkan kontrol terminal pada terminal di mesin klien. Setelah selesai, Anda dapat memulihkan koneksi ssh hanya dengan mengetik fg untuk membangunkan klien ssh.
Tapi tentu saja pertanyaannya di sini adalah: jika Anda sudah memiliki terminal di mesin klien mengapa Anda melakukan ini :)
sumber