मैं ssh का उपयोग करके किसी अन्य पीसी के माध्यम से एक पीसी से कैसे जुड़ सकता हूं


13

मेरे पास तीन कंप्यूटर हैं।

PC1 और PC2 एक निजी LAN पर है, जहाँ PC1 को PC2 के रूप में जाना जाता है192.168.0.2

PC2 और PC3 एक अन्य LAN पर है, जहाँ PC2 को PC3 के रूप में जाना जाता है192.168.123.101

मैं पीसी 3 से पीसी 1 से एसएसएच से कैसे जुड़ सकता हूं ।

क्या कुछ ऐसा है:

ssh user@192.168.0.2 -via user@192.168.123.101

जवाबों:


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

तब आप बस चला सकते हैं ssh PC1

एक उपनाम के माध्यम से सबसे अच्छा में इस्तेमाल किया ~/.ssh/config:

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

OpenSSH के पुराने संस्करणों के लिए -Wविकल्प नहीं है (मुझे लगता है कि इसका मतलब )5.4 है), सुनिश्चित करें कि netcat पीसी 2 पर उपलब्ध है और उपयोग करें

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

1
+1 हां, और मेरे पास कुछ समान विवरणों के साथ एक समान उत्तर है stackoverflow.com/questions/1010808/1122282#1122282
ईपीडिएंट

netcat को स्थापित करने की आवश्यकता है
स्टीफन

4

SSH का उपयोग करना एक स्पष्ट समाधान है:

  1. अपनी स्थानीय मशीन पर अपना ~/.ssh/configऐसा सेट करें कि उसमें निम्नलिखित हो:

    host WhatYouWillCallTheConnection
        hostname the.gateway.server.address.com
        user YourUsernameOnTheGateway
    
  2. गेटवे और अंतिम सर्वर दोनों पर, जिससे आप कनेक्ट करना चाहते हैं, सुनिश्चित करें कि आपके पास अपने स्थानीय क्लाइंट की सार्वजनिक कुंजियाँ हैं ~/.ssh/authorized_keys

  3. गेटवे मशीन पर आपको इस ~/.ssh/authorized_keysतरह की फेरबदल करने की ज़रूरत है कि आपके ग्राहक की सार्वजनिक कुंजी निर्दिष्ट करने वाली पंक्ति की शुरुआत में, निम्न कमांड को इस प्रकार जोड़ें:

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

-Aएजेंट अग्रेषित करने के लिए यदि आप पसंद नहीं पासवर्ड हर समय भेजने के लिए है ...

इस तरह, कभी-कभी आप कुछ ऐसा करते हैं जैसे ssh WhatYouWillCallTheConnectionयह सीधे प्रवेश द्वार के माध्यम से चलेगा और आपको दूसरी तरफ पारदर्शी रूप से सर्वर से कनेक्ट करेगा।


2
ssh -Aयदि आप गेटवे मशीन के व्यवस्थापक पर भरोसा नहीं करते हैं, तो इसका उपयोग न करें । वह आपकी निजी कुंजी प्राप्त नहीं कर सकता है, लेकिन जब तक आप प्रवेश द्वार से जुड़े होते हैं ssh -A, वह आपके द्वारा अन्य मशीनों से जुड़ने के लिए अग्रेषित एजेंट का उपयोग कर सकता है।
जैंडर

2

पोर्ट अग्रेषण काम में आ सकता है।
PC1 से:

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

7777 कोई भी बंदरगाह हो सकता है (बशर्ते उसका उपयोग पहले से न हो रहा हो)। मुझे बस वह संख्या पसंद है, साथ ही कोई भी "ऑर्डरिंग अप" मैं +1 के द्वारा प्रबंधित कर सकता हूं (7778, 7779, आदि, आदि)।

यह किया जा रहा है, आपके पास PC1 के स्थानीय पोर्ट 7777 से PC3 के पोर्ट 22 तक एक 'पारदर्शी' सुरंग होगी। बस जारी करें:

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

और आपको पीसी 3 पर होना चाहिए।
यदि आप किसी SOCKS प्रॉक्सी को स्थापित करना चाहते हैं, तो आप पोर्ट को गतिशील रूप से अग्रेषित करने के लिए भी उपयोग कर सकते हैं।

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

चीयर्स!


1

2017+ ( v7.3 के बाद से ) -इसके लिए ProxyJump है :

ssh -J user@jumphost user@destination

, जो इसके लिए छोटा है:

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

इसे स्निपेट के ssh destसाथ छोटा किया जा सकता है ~/.ssh/config:

Host jump
    User MyJumpHostUser
    Hostname Jump.host.tld

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

0

इसका एकमात्र समाधान मुझे पता है कि बेलर के साथ ssh स्क्रिप्टिंग है :

बेलियर एसएसएच कनेक्शन के माध्यम से एक खोल को खोलने या दूरस्थ कंप्यूटर पर एक कमांड निष्पादित करने की अनुमति देता है। बेलियर की मुख्य विशेषता नौकरी की प्राप्ति से पहले कई मध्यवर्ती कंप्यूटरों को पार करने की क्षमता है।

कुछ समय पहले मुझे MIT लिंकन लेबोरेटरी होमपेज पर यह README.sshhop मिला था, लेकिन मैं इसके बारे में कोई और जानकारी नहीं पा सका था। किसी को अधिक पता है?

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.