Bagaimana cara saya terhubung ke komputer melalui komputer lain menggunakan ssh

13

Saya punya tiga Komputer.

PC1 dan PC2 ada di LAN pribadi, di mana PC1 dikenal sebagai PC2192.168.0.2

PC2 dan PC3 ada di LAN lain, di mana PC2 dikenal sebagai PC3192.168.123.101

Bagaimana saya bisa terhubung ke PC1 dari PC3 dengan SSH.

Apakah ada sesuatu seperti:

ssh [email protected] -via [email protected]
Stefan
sumber

Jawaban:

19
ssh -o 'ProxyCommand ssh -W %h:%p [email protected]'

Maka Anda cukup menjalankan ssh PC1.

Paling baik digunakan melalui alias di ~/.ssh/config:

Host PC1
HostName 192.168.0.2
User user
ProxyCommand ssh -W %h:%p [email protected]

Untuk OpenSSH versi lama yang tidak memiliki -Wopsi (saya pikir ini berarti ≤5.4), pastikan netcat tersedia di PC2 dan gunakan

Host PC1
HostName 192.168.0.2
User user
ProxyCommand ssh [email protected] nc %h %p
Gilles 'SANGAT berhenti menjadi jahat'
sumber
1
+1 Yap, dan saya punya jawaban yang mirip stackoverflow.com/questions/1010808/1122282#1122282 dengan beberapa perincian lebih lanjut.
ephemient
diperlukan untuk menginstal netcat
Stefan
4

Menggunakan SSH ada solusi yang jelas:

  1. pada mesin lokal Anda atur ~/.ssh/configsedemikian rupa sehingga memiliki yang berikut:

    host WhatYouWillCallTheConnection
        hostname the.gateway.server.address.com
        user YourUsernameOnTheGateway
    
  2. Pada gateway dan server akhir yang ingin Anda hubungkan, pastikan bahwa Anda memiliki kunci publik klien lokal Anda berada di ~/.ssh/authorized_keys

  3. Pada mesin gateway Anda perlu mengubah ~/.ssh/authorized_keyssedemikian rupa sehingga di awal baris yang menentukan kunci publik klien Anda, tambahkan perintah paksa sebagai berikut:

    command="ssh -A [email protected]" ...yourPublicKey....
    

The -Aadalah untuk meneruskan agen jika Anda tidak suka untuk mengirim password sepanjang waktu ...

Dengan cara ini, kapan pun Anda melakukan sesuatu seperti ssh WhatYouWillCallTheConnectionitu akan berjalan langsung melalui gateway dan menghubungkan Anda ke server di sisi lain secara transparan.

Shamster
sumber
2
Jangan gunakan ssh -Ajika Anda tidak mempercayai administrator mesin gateway. Dia tidak bisa mendapatkan kunci pribadi Anda, tetapi selama Anda terhubung dengan gateway ssh -A, ia dapat menggunakan agen yang diteruskan untuk terhubung ke mesin lain seperti Anda.
Jander
2

Penerusan Port mungkin berguna.
Dari PC1:

~# ssh -fN -L 22:PC3:7777 -l <user> PC2  

7777 dapat berupa sembarang port (asalkan belum digunakan). Saya suka nomor itu, ditambah "pemesanan" yang bisa saya kelola dengan +1 (7778, 7779, dll, dll.).

Ini dilakukan, Anda akan memiliki terowongan 'transparan' dari port lokal PC1 7777 ke port PC3 22. Hanya masalah:

~# ssh -l <user> -p 7777 localhost  

Dan Anda harus menggunakan PC3.
Anda juga dapat menggunakan -D untuk meneruskan port secara dinamis jika Anda ingin proxy SOCKS dibuat.

~# ssh -D <someport> -fN -L 22:PC3:7777 -l <user> PC2  

Bersulang!

wormintrude
sumber
1

The 2017+ (sejak v7.3) -menanggapi ini adalah ProxyJump :

ssh -J user@jumphost user@destination

, yang merupakan kependekan dari:

ssh -o "ProxyJump user@jumphost" user@destination

Ini dapat disingkat menjadi ssh destdengan ~/.ssh/configcuplikan seperti:

Host jump
    User MyJumpHostUser
    Hostname Jump.host.tld

Host dest
    ProxyJump jump
    User MyDestUser
    Hostname des.tin.ati.on
Alex Stragies
sumber
0

Satu-satunya solusi yang saya tahu untuk ini adalah ssh scripting dengan Belier :

Belier memungkinkan membuka shell atau menjalankan perintah pada komputer jarak jauh melalui koneksi SSH. Fitur utama Belier adalah kemampuannya untuk melintasi beberapa komputer perantara sebelum menyadari pekerjaan itu.

Beberapa waktu yang lalu saya menemukan README ini. Shsh di Homepage Laboratorium Lincoln MIT, tetapi saya tidak dapat menemukan informasi lebih lanjut tentang itu. Apakah ada yang tahu lebih banyak?

echox
sumber