วิธีที่ดีที่สุดในการ SSH กับเครื่องในเครือข่ายท้องถิ่นคืออะไร?


61

ฉันมีคอมพิวเตอร์ 2 เครื่องเครื่องหนึ่งที่ฉันใช้และอีกเครื่องสำหรับเด็ก ฉันต้องการที่จะสามารถ ssh ลงในคอมพิวเตอร์ของพวกเขาเพื่อควบคุมมัน (เช่นการปิดตัวลง ฯลฯ ) แต่ฉันอยากรู้วิธีที่ดีที่สุดในการทำเช่นนี้ เราทั้งคู่อยู่ในบ้านเดียวกันและใช้การเชื่อมต่ออินเทอร์เน็ตร่วมกัน

อะไรจะเป็นวิธีที่ดีที่สุดในการทำเช่นนี้? จากการวิจัยฉันอ่านเพื่อติดตั้ง openssh-server บนคอมพิวเตอร์ระยะไกล แต่ฉันยังงงว่าจะใช้ชื่อโฮสต์ใดเมื่อพยายามเชื่อมต่อ ปกติแล้วสำหรับ VPS นั้นจะเป็น IP ภายนอก แต่เนื่องจากเราทั้งคู่แบ่งปันการเชื่อมต่อ wifi มันจะเป็น IP ฮาร์ดแวร์หรือไม่ เราควรจะเชื่อมต่อโดยตรงโดย LAN หรือโดยผ่านอินเทอร์เน็ต?

คำตอบ:


58

วิ่ง:

avahi-browse -tl _workstation._tcp

ในการรับรายการเวิร์กสเตชัน Ubuntu ในเครือข่ายท้องถิ่นคุณสามารถเชื่อมต่อกับพวกเขาได้โดยเรียกใช้:

ssh <username>@<computer-name>.local

7
หมายเหตุ: สำหรับavahi-browseคุณจะต้องติดตั้งavahi-utilsแพ็คเกจ (ซึ่งจะดึงavahi-daemonบริการที่ให้. local addressability ด้วย)
Piskvor

2
@Piskvor จุดที่ดี แพคเกจนี้ได้รับการติดตั้งเป็นค่าเริ่มต้นใน Ubuntu Desktop แล้ว แต่ฉันไม่รู้เกี่ยวกับรสชาติอื่น ๆ (kubuntu, lubuntu ฯลฯ ) sudo apt-get install avahi-utilsถ้ามันไม่ได้ติดตั้งเพียงแค่เรียกใช้
Eric Carvalho

ดังนั้นจำเป็นต้องติดตั้งเซิร์ฟเวอร์ ssh หรือไม่เช่น ubuntu 14.04 รันหนึ่งโดยค่าเริ่มต้น?
tobi

1
@tobi เซิร์ฟเวอร์ SSH ไม่ได้รับการติดตั้งโดยค่าเริ่มต้น คุณต้องติดตั้ง
Eric Carvalho

2
avahiรายการดูเหมือนว่างเปล่าหลังจากผมทำงาน คอมพิวเตอร์ทั้งสองเครื่องเชื่อมต่อกับเราเตอร์ตัวเดียวกัน
Jose Ospina

15

คุณสามารถใช้ที่อยู่ IP เพื่อ ssh ลงในคอมพิวเตอร์ของเด็ก หากคุณต้องการใช้ชื่อคอมพิวเตอร์ให้แก้ไขไฟล์ / etc / hosts เพื่อรวมชื่อคอมพิวเตอร์

192.168.1.104  dad
192.168.1.105  kids

12
คุณต้องชี้ให้เห็นว่า IP ต้องได้รับการกำหนดให้กับคอมพิวเตอร์แบบคงที่
Alaa Ali

3
คุณสามารถเปิดใช้งานsshing ตามชื่อโดยไม่ต้องแก้ไขไฟล์ hosts โดยตั้งชื่อโฮสต์ใน~/.ssh/config: howtogeek.com/75007/…
Nathan Long

@NathanLong - เคล็ดลับดี! แม้ว่าจะมีใครสามารถโต้แย้งว่ามันอยู่ในไฟล์โฮสต์ให้หนึ่งเข้าถึงบริการใด ๆ (ถ้าเป็นที่ต้องการ)
stefgosselin

9

ก่อนที่จะทำ ssh ตรวจสอบไคลเอ็นต์และเซิร์ฟเวอร์ ssh หากคุณไม่ได้ติดตั้งบริการเหล่านี้

 sudo apt-get install openssh-client

 sudo apt-get install openssh-server

หากคุณได้ทำไปแล้ว

 ssh username@ipaddress

 Enter connecting device login password.

ตัวอย่าง:

 ssh prem@192.168.1.145

 prem@192.168.1.145's password:********

หากคุณมีข้อผิดพลาดเช่น: "การอนุญาตถูกปฏิเสธโปรดลองอีกครั้ง"

โปรดตรวจสอบชื่อผู้ใช้และ IP สองครั้ง


8

ฉันใช้ไฟล์ ~ / .ssh / config ที่แยกวิเคราะห์ ssh โดยอัตโนมัตินี่คือตัวอย่าง:

Host *
ControlMaster auto
ControlPath /tmp/%r@%h:%p

KeepAlive yes 
ServerAliveInterval 60
ServerAliveCountMax 10
ControlPersist 1h

Host server1
        User user1
        HostName server1-web.example.org

Host server2
        User user2
        HostName server2-db.example.org
        Compression yes
        IdentityFile /home/user/.ssh/different_key.pem

โปรดทราบว่าคุณสามารถใช้ตัวแปร (ไคลเอนต์) ใด ๆ ในไฟล์นี้และตั้งค่าเป็นโกลบอลหรือต่อเซิร์ฟเวอร์


จากนั้นจะกำหนดค่าเครื่องมืออำนวยความสะดวก DNS ของอุปกรณ์เกตเวย์อินเทอร์เน็ตภายในบ้านเพื่อเชื่อมโยงserver1-web.example.orgและserver2-db.example.orgกับเซิร์ฟเวอร์ที่เกี่ยวข้องได้อย่างไร
Damian Yerrick

5
  1. คุณสามารถ ssh โดยตรงไปยัง IP ท้องถิ่นโดยที่ LAN ของคุณใช้ IP แบบคงที่ตัวอย่างเช่น
    ssh someuser@192.168.1.2

  2. คุณสามารถแก้ไขไฟล์โฮสต์ในคอมพิวเตอร์ทั้งสองดังกล่าวโดยเอ็ด Manet ของเขาในคำตอบ ด้วยวิธีนี้คุณสามารถใช้ชื่อโฮสต์ของคอมพิวเตอร์นั่นคือssh someuser@some_hostname

  3. คุณสามารถตั้งค่าเซิร์ฟเวอร์ DNS ในตัวเครื่องเพื่อแก้ไขโฮสต์ของ LAN วิธีนี้คุณจะสามารถใช้ชื่อโฮสต์ของคอมพิวเตอร์ในตัวเลือกที่ 2 แต่มีประโยชน์เพิ่มเติมเพื่อหลีกเลี่ยงการแก้ไขทุกไฟล์โฮสต์โดยชี้เซิร์ฟเวอร์ DNS ของคุณในการตั้งค่าเครือข่ายของ Ubuntu

DNSMasqเป็นเซิร์ฟเวอร์ DNS ที่ดีและง่ายต่อการติดตั้ง
อีกตัวเลือกหนึ่งเป็นห่วง


3

ใช้ที่อยู่ IP ท้องถิ่นของ LAN วิธีอื่นต้องใช้พอร์ตบางอันที่เปิดให้อินเทอร์เน็ตเพื่อให้คุณเข้าสู่ระบบได้

นอกจากนี้คุณต้องมีการจับคู่พอร์ต (บนเราเตอร์) การใช้ที่อยู่ IP 'สาธารณะ' (บนเราเตอร์) เป็นเป้าหมายจะไม่เชื่อมต่อกับพีซีเครื่องใดเครื่องหนึ่งของคุณ


วิธีที่ง่ายที่สุดคือการกำหนดที่อยู่ IP แต่ละเครื่อง (สำหรับคอมพิวเตอร์ 2 เครื่องของคุณ) อย่างถาวรบนเราเตอร์ จากนั้นเพียงเชื่อมต่อกับที่อยู่ IP นั้น

หากคุณต้องการฉลาด (ภายหลัง) ให้ตั้งค่าเซิร์ฟเวอร์และเริ่มใช้บริการ DNS ในเครื่องเพื่อกำหนดชื่อที่สื่อความหมายให้กับอุปกรณ์แต่ละเครื่อง ไม่คุ้มกับปัญหาสำหรับพีซีเพียง 2 เครื่องเท่านั้น


1
หมายเหตุ: เราเตอร์โฮมที่ดีจำนวนมากในปัจจุบันจะอ่านชื่อโฮสต์ของเวิร์กสเตชันระหว่างการกำหนดที่อยู่ IP และจะแก้ไขให้เป็น DNS ท้องถิ่น อนิจจานี่ยังไม่เป็นคุณสมบัติสากล
Piskvor

2

หากคุณใช้การเชื่อมต่ออินเทอร์เน็ตร่วมกันคุณมักจะอยู่หลังเราเตอร์ไร้สายเดียวกัน ดังนั้นคุณเชื่อมต่อโดยตรงกับคอมพิวเตอร์ของเด็ก ๆ :

ssh <IP-address>

หรือ:

ssh <user-name>@<IP-address>

เห็นได้ชัดว่าวิธีนี้ใช้งานได้ดีกว่าหากคอมพิวเตอร์ Kids มีที่อยู่ IP คงที่ ไม่เช่นนั้นคุณจะต้องตรวจสอบ IP เสมอ เราเตอร์ส่วนใหญ่มีตัวเลือกในการกำหนด IP แบบคงที่ (เหมือนกันเสมอ) ให้กับอุปกรณ์ที่เลือก เราเตอร์บางตัวยังมีตัวเลือกในการกำหนดชื่อโฮสต์ให้กับอุปกรณ์บางอย่างแล้วสำหรับอุปกรณ์ใด ๆ ที่อยู่ในเครือข่ายเดียวกัน "เด็ก ๆ " จะมีความหมายเหมือนกัน หากคุณกำหนดชื่อโฮสต์ด้วยไฟล์ / etc / hosts ชื่อโฮสต์จะรู้จักเฉพาะกับคอมพิวเตอร์เครื่องนั้นที่มีไฟล์โฮสต์นั้นอยู่ ยังถือว่าคอมพิวเตอร์สำหรับเด็กที่มีที่อยู่ IP แบบคงที่

คุณสามารถตั้งค่า IP แบบคงที่ให้กับคอมพิวเตอร์สำหรับเด็กได้เช่นกันในเครื่องนั้น แต่ฉันแนะนำให้ตั้งค่าที่การตั้งค่าเครือข่ายในเราเตอร์ จุดควบคุมเดียว - ง่ายต่อการจัดการ หากบางสิ่งไม่ชัดเจนออกความคิดเห็นและฉันจะขยายคำตอบของฉัน


ฉันลองทำตามคำแนะนำของคุณแล้ว แต่มีข้อผิดพลาด: ssh: connect to host xxx.xxx.x.xx port 22: connection refused- มีการตั้งค่าเพิ่มเติมใด ๆ ที่จำเป็นหรือไม่?
lukaszkups

จำเป็นต้องมีเซิร์ฟเวอร์ ssh ที่ทำงานบนเครื่องนั้นและไม่มีไฟร์วอลล์ปิดกั้นและอื่น ๆ อาจเป็นไปได้ว่า ssh ได้รับการกำหนดค่าให้คาดหวังการเชื่อมต่อบนพอร์ตอื่นซึ่งในกรณีนี้ผู้ใช้สามารถใช้แฟล็ก -p เพื่อใช้อย่างอื่นที่ไม่ใช่พอร์ตเริ่มต้น (22)
Tanel Mae

0

คุณสามารถใช้ที่อยู่ IP แทนชื่อโฮสต์หรือกำหนดชื่อโฮสต์แบบกำหนดเองใน/etc/hostsไฟล์ของคุณ

ในการรับ IP บนคอมพิวเตอร์ของเด็ก: บนเมนูเครือข่ายให้ดูที่ "ข้อมูลการเชื่อมต่อ" หรือเรียกใช้ifconfigบน commandline (สิ่งเหล่านี้ต้องทำบนคอมพิวเตอร์ของเด็ก)

เราเตอร์ไร้สายของคุณกำหนดที่อยู่ IP เหล่านี้และคุณควรจะสามารถกำหนดค่าให้เก็บที่อยู่ IP เฉพาะสำหรับคอมพิวเตอร์ที่พวกเขาได้รับมอบหมายในปัจจุบัน (มิฉะนั้น IP ของอาจมีการเปลี่ยนแปลงเป็นครั้งคราว)


0

คุณสามารถกำหนดชื่อการคำนวณให้กับเครื่องลูกของคุณได้
จากนั้นก็ทำ
ssh MachineName

ฉันไม่เคยใช้สิ่งนี้ความคิดในหัวของฉันที่ฉันแบ่งปัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.