วิธีการ ssh กับ ipv6 อูบุนตูใน LAN?


57

ฉันสามารถปิงกล่อง Ubuntu ผ่านคำสั่ง: (โดยที่ c2h2ttt อยู่ในรายการ / etc / hosts)

c2h2@c2h2crawler:~/ttt$ ping6 -I eth1 c2h2ttt
PING c2h2ttt(c2h2ttt) from fe80::21b:21ff:fe22:e865 eth1: 56 data bytes
64 bytes from c2h2ttt: icmp_seq=1 ttl=64 time=10.3 ms
64 bytes from c2h2ttt: icmp_seq=2 ttl=64 time=2.06 ms
64 bytes from c2h2ttt: icmp_seq=3 ttl=64 time=1.33 ms

และเมื่อฉันลองssh -6 c2h2tttมันแสดง:

c2h2@c2h2crawler:~/ttt$ ssh -6 c2h2ttt
ssh: connect to host c2h2ttt port 22: Invalid argument

คำสั่งที่ถูกต้องคืออะไร?


บนฝั่งเซิร์ฟเวอร์ / etc / ssh / sshd_config มี:

ListenAddress ::
ListenAddress 0.0.0.0

ฉันสามารถที่จะ ssh เพื่อ c2h2ttt ผ่าน ipv4 บนพอร์ต 22 และnetstat -lnt | grep :22เป็น

root@c2h2think:~# netstat -lnt | grep :22
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp6       0      0 :::22                   :::*                    LISTEN

ใช้ ufw และอนุญาตการรับส่งข้อมูลขาเข้าบนพอร์ต 22

root@c2h2think:~# ufw status
Status: active

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere

และการกำหนดค่า iptables:

root@c2h2think:~# ip6tables -L -v -n
Chain INPUT (policy DROP 55 packets, 10758 bytes)
pkts bytes target     prot opt in     out     source               destination 
    0     0 ACCEPT     all      lo     *       ::/0                 ::/0        

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination 

Chain OUTPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination 
    0     0 ACCEPT     all      *      lo      ::/0                 ::/0  

คุณอาจต้องแก้ไขไฟล์ sshd.conf ของคุณและ / หรือรีสตาร์ท sshd เพื่อให้ทราบว่ามีที่อยู่ v6 ใหม่ให้ฟัง

ตรวจสอบสิ่งที่netstat -lnt | grep :22(เปิดฟังซ็อกเก็ต tcp ตัวเลข | บรรจุ: 22) พูดว่า
ephemient

คุณไม่ได้เปิดพอร์ต 22 ip6tables ... ใช่มั้ย?
Ignacio Vazquez-Abrams

หนึ่งวินาทีที่ฉันตรวจสอบ ip6tables
c2h2

คำตอบ:


89

ลองระบุอินเตอร์เฟสกับไคลเอ็นต์ ssh ยูทิลิตี้ ping6 ช่วยให้คุณสามารถระบุอินเทอร์เฟซได้อย่างไรก็ตาม ssh ไม่มีสวิตช์สำหรับสิ่งนั้นคุณต้องใช้ไวยากรณ์นี้:

ssh -6 fe80 :: 21b: 21ff: fe22: e865% eth1

2
ว้าวมันใช้งานได้ดีขอบคุณ! เพียงเพราะปัญหา eth1
c2h2

2
ได้ลองแล้วก็ใช้งานได้สำหรับฉันเช่นกัน! เหตุใดจึงต้องระบุอินเทอร์เฟซ
Max Beikirch

9
@ MaxBeikikch เนื่องจากส่วนต่อประสานเครือข่ายที่ทำงานได้อย่างสมบูรณ์จะมี f80: ที่อยู่ ดังนั้นระบบไม่ทราบว่าอินเทอร์เฟซใดที่จะส่งทราฟฟิกไป นี่เป็นปัญหาการกำหนดเส้นทางการรับส่งข้อมูล สำหรับที่อยู่อื่น ๆ ระบบมักจะเลือกอย่างชาญฉลาดเพราะคอมพิวเตอร์กำหนดเส้นทางไปยังที่อยู่ "ใกล้เคียง" (หมายถึงที่อยู่ในซับเน็ตเดียวกัน) แต่ไม่สามารถใช้งานได้กับ fe80: เนื่องจากอินเตอร์เฟสเครือข่ายทั้งหมดเป็นส่วนหนึ่งของซับเน็ตเดียวกัน
TOOGAM

1
@TOOGAM ฉันจะระบุ interface postfix สำหรับโฮสต์ได้~/.ssh/configอย่างไร
PVitt

@PVitt: วิธีปกติคือการระบุตัวระบุระบบ (เช่นที่อยู่ IP), จากนั้นติดเครื่องหมายเปอร์เซ็นต์และจากนั้นชื่อส่วนต่อประสาน, ดังที่แสดงโดยคำตอบที่ตรึงไว้บน% eth1 จนถึงจุดสิ้นสุดของ IPv6 ที่อยู่ eth1 เป็นตัวระบุส่วนต่อประสาน หากวิธีนี้ใช้ไม่ได้ผลให้ตรวจสอบ [man page สำหรับไฟล์ของ OpenSSH ชื่อ config] (man.openbsd.org/cgi-bin/man.cgi?query=ssh_config&sektion=5) และถ้าไม่ช่วยลองพิจารณา คำถามใหม่ (ใน SuperUser) พร้อมรายละเอียดที่แม่นยำยิ่งขึ้นเพื่อให้เราสามารถช่วยเหลือคุณได้มากขึ้น
TOOGAM

8

ไม่ควรใช้การเชื่อมโยงที่อยู่ในท้องถิ่นสำหรับ SSH แต่จะใช้สำหรับการย่อส่วนโปรโตคอลระดับต่ำ หากคุณไม่มีคำนำหน้าจาก ISP ให้ใช้บนเครือข่ายของคุณให้สร้างคำนำหน้าเฉพาะจาก fd00 :: / 8 แทน:

http://en.wikipedia.org/wiki/Unique_local_address


//, หนึ่งจะเข้าถึงที่อยู่ IPV6 ที่สามารถกำหนดเส้นทางได้ในอินเทอร์เน็ต IPv6 ทั่วโลกอย่างไร?
Nathan Basanese

@NathanBasanese: ISP ของคุณต้องให้บริการ IPv6 แก่คุณหรือคุณตั้งค่าอุโมงค์กับหนึ่งในโบรกเกอร์ IPv6 เช่นHurricane Electric
Radu C

3
ลิงค์ที่อยู่ในท้องถิ่นเป็นที่อยู่เครือข่าย หากคุณต้องการใช้พวกเขาสำหรับ SSH ไปข้างหน้า เพิ่งรู้วิธีจัดการกับความยุ่งยากใด ๆ เช่นสิ่งที่คำถามนี้และคำตอบของ John T พูดถึง ฉันมีกรณีที่ ULA (fd00 :: / 8) ไม่ได้รับมอบหมายตามที่หวังไว้ ในกรณีนี้ SSH ใช้ link-local (fe80 :: / 16) ทำงานได้ดี ฉันหลีกเลี่ยงการเชื่อมโยงท้องถิ่นเท่านั้นเนื่องจากความยุ่งยากในการจัดการกับการกำหนดเส้นทาง (จำเป็นต้องระบุส่วนต่อประสาน) แต่ไม่ใช่เพราะที่อยู่ทางเทคนิคใด ๆ ที่มีความสามารถน้อยกว่าในการส่งหรือรับปริมาณข้อมูล
TOOGAM

2

ในการเชื่อมต่อ SSH IPv6 คุณส่วนใหญ่มีการเชื่อมต่อ IPv6 ISP บนคอมพิวเตอร์ของคุณและลองทำดู

root@hostname[~]# ssh -6 2205:f200:40:401::9ab4:8b43

และคำสั่งนี้มันจะถามเป็นครั้งแรกเพื่อยืนยันคีย์ SSH กว่าประเภทY/Yes

หมายเหตุ: 2205:f200:40:401::9ab4:8b43หมายถึง IPv6 ของคุณ นี่เป็นเพียงตัวอย่างของ IPv6 ดังนั้นอย่าลืมแทนที่คุณเป็น IPv6

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