Ssh kullanarak başka bir bilgisayardan bir bilgisayara nasıl bağlanırım


13

Ben üç Bilgisayarlar.

PC1 ve PC2 özel LAN üzerindedir PC1 bilinmektedir PC2'de olarak192.168.0.2

PC2 ve PC3 , PC2'nin PC3 olarak bilindiği başka bir LAN'da192.168.123.101

Nasıl bağlanabilir PC1'de gelen PC3'DEN SSH ile.

Gibi bir şey var mı:

ssh user@192.168.0.2 -via user@192.168.123.101

Yanıtlar:


19
ssh -o 'ProxyCommand ssh -W %h:%p user@192.168.123.101'

Sonra sadece koşabilirsiniz ssh PC1.

En iyi şu şekilde bir takma adla kullanılır ~/.ssh/config:

Host PC1
HostName 192.168.0.2
User user
ProxyCommand ssh -W %h:%p user@192.168.123.101

OpenSSH'nin -Wseçeneği olmayan eski sürümleri için (bence bu ≤5,4 anlamına gelir), netcat'in PC2'de mevcut olduğundan emin olun ve

Host PC1
HostName 192.168.0.2
User user
ProxyCommand ssh user@192.168.123.101 nc %h %p

1
+1 Evet ve benzer bir cevabım var stackoverflow.com/questions/1010808/1122282#1122282 daha fazla ayrıntıyla.
ephemient

netcat kurmak için gerekli
Stefan

4

SSH kullanarak açık bir çözüm var:

  1. yerel makinenizde aşağıdakileri içerecek şekilde kurun ~/.ssh/config:

    host WhatYouWillCallTheConnection
        hostname the.gateway.server.address.com
        user YourUsernameOnTheGateway
    
  2. Hem ağ geçidinde hem de bağlanmak istediğiniz son sunucuda, yerel istemcinizin ortak anahtarlarının ~/.ssh/authorized_keys

  3. Ağ geçidi makinesinde ~/.ssh/authorized_keys, istemcinizin ortak anahtarını belirten satırın başlangıcında, zorunlu komutu aşağıdaki gibi ekleyin:

    command="ssh -A user_name@ServerTheGatewaySees.ButTheClientCant.net" ...yourPublicKey....
    

-AEğer Parolaları her zaman göndermemeyi gibi yaparsak ajan iletmek için ...

Bu şekilde, böyle bir şey yaptığınızda ssh WhatYouWillCallTheConnectiondoğrudan ağ geçidinden geçecek ve sizi diğer taraftaki sunucuya şeffaf bir şekilde bağlayacaktır.


2
ssh -AAğ geçidi makinesinin yöneticisine güvenmiyorsanız kullanmayın . Özel anahtarınızı alamaz, ancak ağ geçidine bağlı olduğunuz sürece ssh -A, yönlendirilen aracıyı sizin gibi diğer makinelere bağlanmak için kullanabilir.
Jander

2

Port Yönlendirme kullanışlı olabilir.
PC1'den:

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

7777 sadece herhangi bir port olabilir (henüz kullanılmamışsa). Ben sadece bu sayıyı, artı +1 's (7778, 7779, vb.) İle yönetebileceğim herhangi bir "sipariş" gibi.

Bu yapılıyorsa, PC1'in yerel 7777 numaralı bağlantı noktasından PC3'ün 22 numaralı bağlantı noktasına kadar 'şeffaf' bir tünele sahip olacaksınız.

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

Ve PC3'te olmalısınız.
SOCKS yetkili sunucusunun oluşturulmasını istiyorsanız -D'yi bir bağlantı noktasını dinamik olarak iletmek için de kullanabilirsiniz.

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

Şerefe!


1

2017+ ( v7.3'ten bu yana ) buna karşılık ProxyJump :

ssh -J user@jumphost user@destination

, kısaltması:

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

Bu, ssh destbir ~/.ssh/configpasajla kısaltılabilir :

Host jump
    User MyJumpHostUser
    Hostname Jump.host.tld

Host dest
    ProxyJump jump
    User MyDestUser
    Hostname des.tin.ati.on

0

Bunun için bildiğim tek çözüm Belier ile ssh komut dosyası oluşturmaktır :

Belier, bir SSH bağlantısı aracılığıyla bir kabuk açmaya veya uzak bilgisayarda komut çalıştırmaya izin verir. Belier'nin ana özelliği, işi gerçekleştirmeden önce birkaç ara bilgisayarı geçebilmesidir.

Bir süre önce bu README.sshhop'u MIT Lincoln Laboratory Homepage'de buldum, ancak bunun hakkında daha fazla bilgi bulamadım. Birisi daha fazlasını biliyor mu?

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.