คำถามติดแท็ก ssh

SSH (Secure SHell) เป็นโปรโตคอลสำหรับการรันคำสั่งอย่างปลอดภัยบนคอมพิวเตอร์ระยะไกล ใช้แท็กนี้สำหรับคำถามเกี่ยวกับการกำหนดค่าการใช้และการแก้ไขปัญหาไคลเอ็นต์และซอฟต์แวร์เซิร์ฟเวอร์ SSH

2
วิธีที่สอดคล้องและปลอดภัยกับบัญชีที่ไม่มีรหัสผ่านด้วย SSH
ฉันต้องยอมรับว่าฉันชอบเซิร์ฟเวอร์ที่ไม่มีรหัสผ่านในบางกรณี เซิร์ฟเวอร์ทั่วไปมีความเสี่ยงต่อทุกคนที่มีสิทธิ์เข้าถึงแบบฟิสิคัล ดังนั้นในบางกรณีก็เป็นจริงเพื่อล็อคร่างกายและตั้งแต่นั้นมาไว้วางใจใด ๆการเข้าถึงทางกายภาพ แนวคิดพื้นฐาน ในทางทฤษฎีแล้วเมื่อฉันไปถึงเซิร์ฟเวอร์นั้นฉันควรจะสามารถบริหารงานโดยไม่ต้องใช้รหัสผ่านเพียงแค่พิมพ์rootเป็นชื่อล็อกอินและฉันไม่ควรขอรหัสผ่าน เช่นเดียวกันอาจนำไปใช้กับบัญชีผู้ใช้ แต่ไม่มีใครสามารถเข้าถึงได้จริง ดังนั้นจึงไม่จำเป็นต้องใช้รหัสผ่านระบบสำหรับการเข้าถึงภายใน (เป็นครั้งคราว) เมื่อเข้าถึงเซิร์ฟเวอร์จากระยะไกลไม่ว่าจะเป็นการบริหารระบบหรือสำหรับบัญชีผู้ใช้ฉันคาดว่าจะใช้คีย์ส่วนตัว SSH มันง่ายมากในการตั้งค่าคีย์ SSH สำหรับบัญชีที่เพิ่งสร้างขึ้นและไม่จำเป็นต้องใช้รหัสผ่านระบบสำหรับการเข้าถึงระยะไกล (ปกติ) # user=... # # useradd -m "$user" # sudo -i -u "$user" $ keyurl=... $ $ mkdir -p .ssh $ curl -o .ssh/authorized_keys "$keyurl" บทสรุปคือในทางทฤษฎีเราจะไม่ต้องใช้รหัสผ่านระบบใด ๆสำหรับกรณีการใช้งานเช่นนั้น ดังนั้นคำถามคือเราจะกำหนดค่าระบบและบัญชีผู้ใช้อย่างไรเพื่อให้เกิดขึ้นอย่างสอดคล้องและปลอดภัย รายละเอียดการเข้าถึงท้องถิ่น เราจะมั่นใจได้อย่างไรว่าบัญชีรูทสามารถเข้าถึงได้แบบโลคัลโดยไม่มีรหัสผ่าน? ฉันไม่คิดว่าเราสามารถใช้งานได้passwd -dเพราะจะทำให้การเข้าถึงรูทมากเกินไปและผู้ใช้ที่ไม่มีสิทธิสามารถเปลี่ยนเป็นรูทได้ฟรีซึ่งเป็นสิ่งที่ผิด เราไม่สามารถใช้passwd -lเนื่องจากป้องกันไม่ให้เราเข้าสู่ระบบ โปรดทราบว่าการเข้าถึงเฉพาะที่เกี่ยวกับการเข้าถึงโดยใช้คีย์บอร์ดท้องถิ่น …

1
บังคับให้คำสั่งรันเมื่อออกจากระบบหรือยกเลิกการเชื่อมต่อหรือไม่
ฉันกำลังเข้าสู่ระบบผ่านทาง SSH และฉันต้องการที่จะสามารถบังคับให้คำสั่งให้ออกจากระบบไม่ว่าจะเป็นการออกจากระบบโดยเจตนา (ออกจากเชลล์) หรือเพราะการเชื่อมต่อ SSH ของฉันลดลง / ถูกยกเลิก มีวิธีการตั้งค่านี้หรือไม่? สิ่งที่ดีที่สุดที่ฉันคาดเดาได้ในขณะนี้คือเปลี่ยนเชลล์ล็อกอินเป็นโปรแกรมที่ดักสัญญาณที่ส่งเมื่อปิด SSH (SIGHUP?) และดำเนินการคำสั่งแล้ว แต่ฉันสงสัยว่ามีวิธีแก้ปัญหาที่สะอาดกว่าหรือไม่
13 ssh  logout 

2
ทำไมไม่ใช้% h ในตัวเลือก ControlPath ของ OpenSSH
ทำไม "ssh_config (5)" manpages แนะนำว่าControlPathตัวเลือกที่ควรมีอย่างน้อย%h, %pและ%rตัวยึดเพื่อระบุตัวตนของแต่ละการเชื่อมต่อที่ใช้ร่วมกัน? ผมคิดว่าหลายครั้งควรแบ่งปันซ็อกเก็ตเดียวกันกับการเชื่อมต่อไปยังโฮสต์เดียวกัน มันจะไม่สมเหตุสมผลถ้ามีคำจำกัดความง่ายๆเช่น: ControlPath ~/.cache/ssh/mux/%h แทนสิ่งที่ชอบ: ControlPath ~/.cache/ssh/mux/%r@%h:%p ในความเข้าใจของฉันเกี่ยวกับคำจำกัดความแรกการเชื่อมต่อหนึ่งถูกใช้ร่วมกันระหว่างหลายเซสชันกับผู้ใช้ระยะไกลที่แตกต่างกันไปยังโฮสต์ระยะไกลเดียวกันบนพอร์ตระยะไกลที่แตกต่างกัน ฉันต้องการที่จะมี defintion ssh -o ControlMaster=noแรกในส่วนของค่าเริ่มต้นโฮสต์เพื่อให้พอเพียงที่จะบอกว่า ฉันต้องการแบ่งปันการเชื่อมต่อกับโฮสต์ระยะไกลเดียวกันระหว่างเซสชันทั้งหมดที่เริ่มต้นโดยผู้ใช้ภายในเครื่องเดียวกันโดยไม่คำนึงถึงผู้ใช้ระยะไกลและพอร์ตระยะไกล ซ็อกเก็ตของไคลเอ็นต์หลักควรใช้งานได้ภายใต้โฮมไดเรกทอรีของผู้ใช้ในพื้นที่

3
การสร้างบัญชี UNIX ซึ่งดำเนินการเพียงคำสั่งเดียวเท่านั้น
มีวิธีการสร้างบัญชีผู้ใช้ใน Solaris ซึ่งอนุญาตให้ผู้ใช้เรียกใช้คำสั่งเดียวเท่านั้นหรือไม่ ไม่มีล็อกอินเชลล์หรืออะไรอย่างอื่น ฉันอาจจะทำมันด้วย/usr/bin/falseใน/etc/passwdและเพิ่งได้รับให้ผู้ใช้ssh <hostname> <command>แต่มีวิธีที่ดีกว่าที่จะทำมันได้หรือไม่

2
ฉันจะระบุโลคัลพอร์ตเมื่อสร้างการเชื่อมต่อ SSH ได้อย่างไร
ฉันมีเซิร์ฟเวอร์สองโฮสต์ใน IDC ฉันสามารถใช้พอร์ต 20/21/22/23/3389 / 33101-33109 เพื่อสร้างการเชื่อมต่อระหว่างสองเซิร์ฟเวอร์ อุปกรณ์เครือข่าย IDC จะปิดกั้นแพ็กเก็ตอื่น ๆ ที่มีพอร์ตต้นทางหรือปลายทางไม่อยู่ในรายการ / ช่วง 20/21 / 22/23/80/3389 / 33101-33109 แต่พอร์ตต้นทางของ SSH นั้นสุ่ม ใช้คำสั่ง หนึ่งสามารถระบุพอร์ตระยะไกลได้อย่างง่ายดายssh username@server -p remote_port ดังนั้นจะมีsshพารามิเตอร์คำสั่งหรือวิธีอื่นเพื่อระบุพอร์ตต้นทางในเครื่องเพื่อให้ฉันสามารถใช้ตัวอย่างเช่นพอร์ต 33101 เพื่อสร้างการเชื่อมต่อ SSH? โครงสร้างเครือข่ายของฉันเป็นเช่นนี้:
13 ssh  networking 

2
ฉันจะแสดงอัลกอริทึมคีย์โฮสต์ที่มีอยู่สำหรับไคลเอ็นต์ SSH ได้อย่างไร
ดังนั้น SSH HostKeyAlgorithmsมีตัวเลือก ตัวอย่างการใช้งาน: ssh -o "HostKeyAlgorithms ssh-rsa" user@hostname ฉันกำลังพยายามให้ไคลเอนต์เชื่อมต่อโดยใช้ecdsaคีย์เซิร์ฟเวอร์แต่ฉันไม่สามารถค้นหาว่าสตริงที่ถูกต้องคืออะไร คำสั่งอะไรฉันสามารถใช้เพื่อรับรายชื่อของที่มีอยู่HostKeyAlgorithms?
13 ssh  openssh 

3
คำสั่งสามารถเรียกใช้ผ่าน ssh กับผู้ใช้ nologin ได้หรือไม่?
หากผู้ใช้มีloginShell=/sbin/nologinมันยังคงเป็นไปได้ ssh user@machine [command] สมมติว่าผู้ใช้มีคีย์ ssh ที่เหมาะสมในโฮมไดเร็กตอรี่ที่สามารถใช้ในการรับรองความถูกต้อง? เป้าหมายของฉันคือทำให้ผู้ใช้เป็น nologin แต่ยังสามารถเรียกใช้คำสั่งบนเครื่องอื่น ๆ สองสามเครื่องบนเครือข่าย (คล้ายกับการใช้งานผ่าน 'sudo -u') และฉันสงสัยว่านี่เป็นหลักสูตรที่สมเหตุสมผลหรือไม่

2
-bash: cd: .ssh /: ปฏิเสธการอนุญาต
เมื่อฉันพิมพ์cd .sshใน terminal -bash: cd: .ssh/: Permission deniedก็กลับมาพร้อมกับ ตอนนี้ฉันไม่สามารถเพิ่มคีย์ ssh ของฉันไปที่ ssh ได้ เมื่อฉันพิมพ์มันบอกว่าssh-add ~/.ssh/idname/Users/Dan/.ssh/idname: Permission denied ฉันคิดว่ามันเกี่ยวกับการพิมพ์ls -dเพราะมันใช้ได้ก่อนที่ฉันจะพิมพ์ลงในเทอร์มินัล?
13 ssh  permissions  ls 

3
ssh-add -D ไม่ลบคีย์ที่เก็บไว้ออกจาก ssh-agent
สิ่งนี้เกิดขึ้นได้อย่างไร: stan@tcpc:~/.ssh$ ssh-add -l 8192 e0:45:5e:cc:45:3e:17:2b:a6:54:6f:8d:53:1b:j2:e3 github (RSA) 2048 25:41:53:a6:45:5d:ac:eb:5c:45:f8:ce:42:a9:he:aa BITBUCKET (RSA) stan@tcpc:~/.ssh$ ssh-add -D All identities removed. stan@tcpc:~/.ssh$ ssh-add -l 8192 e0:45:5e:cc:45:3e:17:2b:a6:54:6f:8d:53:1b:j2:e3 github (RSA) 2048 25:41:53:a6:45:5d:ac:eb:5c:45:f8:ce:42:a9:he:aa BITBUCKET (RSA) ทำไมปุ่มไม่ถูกลบ? ป.ล. อาจเป็นข้อผิดพลาดนี้หรือไม่? http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=472477 ฉันกำลังอยู่ใน arch linux แม้ว่า ...
13 ssh  openssh  sshd 

3
การกำหนดค่าลายนิ้วมือ ssh บน dns เพื่อแทนที่ known_hosts ล้มเหลว
เร็กคอร์ด SSHFP ถูกสร้างขึ้นบนเซิร์ฟเวอร์ ssh ดังต่อไปนี้จากนั้นเพิ่มลงในโซนในการโยง: $ ssh-keygen -r www.test.us. www.test.us. IN SSHFP 1 1 ad04dfaf343a93beeb939eed1612168f7eadbed7 www.test.us. IN SSHFP 2 1 432209c72c4f0e99546d601dd96c04ce804191f9 ระเบียนที่ต้องการสามารถคว้าจากไคลเอนต์ ssh ผ่าน DNS ดังที่แสดง: $ dig www.test.us any ;; QUESTION SECTION: ;www.test.us. IN ANY ;; ANSWER SECTION: www.test.us. 120 IN SSHFP 1 1 AD04DFAF343A93BEEB939EED1612168F7EADBED7 www.test.us. 120 IN SSHFP …
13 ssh  dns  bind 

5
ฉันจะเชื่อมต่อพีซีผ่านพีซีเครื่องอื่นโดยใช้ ssh ได้อย่างไร
ฉันมีคอมพิวเตอร์สามเครื่อง PC1และPC2อยู่บน LAN ส่วนตัวที่PC1เป็นที่รู้จักกันPC2เป็น192.168.0.2 PC2และPC3อยู่บน LAN อื่นที่PC2เป็นที่รู้จักกันPC3เป็น192.168.123.101 ฉันจะเชื่อมต่อกับPC1จากPC3ด้วย SSH ได้อย่างไร มีบางอย่างเช่น: ssh user@192.168.0.2 -via user@192.168.123.101
13 ssh 

4
วิธี. ssh / config เพื่อระบุการจัดสรร pseudo-tty และการดำเนินการคำสั่ง
มีวิธีการระบุใน.ssh/configคำสั่งเช่น: ssh -t remote-host "screen -dR screen_name" ดังนั้นฉันสามารถเข้าถึงscreenเซสชันระยะไกลได้อย่างง่ายดายด้วยssh remote-host? ตอนนี้ฉันแก้ไขปัญหานี้โดยใช้สคริปต์ที่กำหนดเอง: $ cat ~/bin/sssh #!/bin/sh /usr/bin/ssh -t $1 "screen -dR ab" ~/binยังคงอยู่ก่อน$PATHแต่มันไม่ยืดหยุ่นและน่าเกลียด นอกจากนี้ฉันต้องการค้นหาวิธีใช้การเติมข้อความอัตโนมัติของโฮสต์สำหรับสคริปต์ที่กำหนดเองของฉัน

3
ฉันจะออกจากเซสชันที่ใช้งานอยู่ทั้งหมดได้อย่างไร
ด้วยเหตุผลบางอย่างฉันมีช่วงเปิดไม่กี่ครั้งบนเซิร์ฟเวอร์ SSH ที่ฉันไม่รู้ ฉันคิดว่าพวกมันเหลือจากเมื่อท่อของฉันพัง $ users user1 user2 user3 me me me me มีวิธีในการออกจากระบบของฉันในทุกช่วงหรือไม่?
13 ssh  users  login 

2
Linux iptables การส่งต่อพอร์ต ssh (การปฏิเสธของดาวอังคาร)
ฉันมีเกตเวย์ Linux ที่ทำงาน NAT สำหรับเครือข่ายในบ้านของฉัน ฉันมีเครือข่ายอื่นที่ฉันต้องการส่งต่อแพ็กเก็ตอย่างโปร่งใส แต่ไปยัง / จาก IP / พอร์ตเฉพาะ (เช่นไม่ใช่ VPN) นี่คือตัวอย่าง IP และพอร์ตที่ใช้งานได้: Source Router Remote Gateway Remote Target 192.168.1.10 -> 192.168.1.1 -> 1.2.3.4 -> 192.168.50.50:5000 ฉันต้องการให้เครื่อง Source สามารถพูดคุยกับพอร์ตเฉพาะใน Remote Target ได้ราวกับว่ามันเป็นเส้นทางโดยตรงจากเราเตอร์ บนเราเตอร์ eth0 เป็นเครือข่ายส่วนตัวและ eth1 นั้นเชื่อมต่ออินเทอร์เน็ต Remote Gateway เป็นเครื่องลีนุกซ์ตัวอื่นที่ฉันสามารถเข้าไปได้และสามารถกำหนดเส้นทางไปยัง Remote Target ได้โดยตรง ความพยายามในการแก้ปัญหาอย่างง่ายของฉันคือการตั้งค่าการส่งต่อพอร์ต ssh บนเราเตอร์เช่น: …

3
SSH: ระบุ "ท่อ" fds เพิ่มเติมนอกเหนือจาก stdin, stdout, stderr
เมื่อเชื่อมต่อไปยังโฮสต์กับ SSH มักจะสาม "ท่อ" ที่มีให้ระหว่างเจ้าภาพและแขกสำหรับstdin, และstdoutstderr มีตัวเลือกบรรทัดคำสั่งเพื่อส่งต่อสำหรับตัวอธิบายไฟล์เพิ่มเติม ( 3เป็นต้นไป) หรือไม่? ตัวอย่างเช่นฉันต้องการทำ ssh --forwardfd=10:3 remotehost 'echo test >&3' ซึ่งจะพิมพ์ 'ทดสอบ' ไปยังตัวอธิบายไฟล์ที่เปิดในเครื่อง 10

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